Hmm, a segfault in std::basic_string points to something troubling.  Two
ideas coming to mind - the library is not being initialized properly, or
there is corruption earlier (probably due to pointer problems) that's
causing this later call to fail.

In the case of initialization not being correct - I would check the
documentation for the technology of the main program (cobol?) on
interoperation with Shared Libraries and initialization.

The second case is harder to track down.  It usually involves finding the
inconsistent point of state in the program (e.g. a variable that is wrong)
and using a watch point in a debugger (like gdb) to tell when that's
changing.  And then repeating until the original point of corruption is
located.

Really, the next step is to see just what is causing the segfault in
std::basic_string.  I wonder if there's a version of the STL library
(libstdc++) with full debugging symbols which can be used.  It's possible to
look through the disassembled machine instructions and work back to the
original code (get the original code, capture the compile command for the
source file, modify the command to produce the assembly output with original
source code mixed in).

...

Looking at the trace more carefully, I see the fault is inside
_dl_init_internal(), so initialization should be correct.  Perhaps try
forcing load of the libstdc++.so directly from the application in the same
way the activemq SO is being loaded to see if that helps.  I think dlopen()
should handle initialization of all the dependent libraries properly.

Can you provide the details of the dlopen() call.  There are flags to that
call which might be part of the problem, such as RTLD_LAZY.

...

Another idea to work-around this problem: can you consider reworking the
solution so that the ActiveMQ client is not in the cobol program?  Perhaps
using SYSV queues to move the data from the cobol program to a separate
ActiveMQ client program.  Or, have the cobol program read/write files (if
the messaging volume is not too great) and use a camel route to exchange
between the files and JMS messages.



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/ActiveMQ-C-higher-Version-2-2-6-Segfault-by-initialization-tp4675173p4678963.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to