[ 
https://issues.apache.org/jira/browse/QPID-3364?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Colby updated QPID-3364:
-----------------------------

    Attachment: Makefile
                loader.cpp
                loadee.cpp

Attached the sample files mentioned in the issue description, along with a 
near-trivial Makefile.

> Segmentation fault when unloading shared libraries linked with 
> libqpidmessaging
> -------------------------------------------------------------------------------
>
>                 Key: QPID-3364
>                 URL: https://issues.apache.org/jira/browse/QPID-3364
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Client
>    Affects Versions: 0.8, 0.10, 0.11
>         Environment: Linux version 2.6.32-5-686 (Debian 2.6.32-34squeeze1) 
> (da...@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Wed May 18 
> 07:08:50 UTC 2011
> Linux version 2.6.32-5-amd64 (Debian 2.6.32-34squeeze1) (da...@debian.org) 
> (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Wed May 18 23:13:22 UTC 2011
>            Reporter: Paul Colby
>            Priority: Minor
>         Attachments: Makefile, loadee.cpp, loader.cpp
>
>
> Disclaimer: I'm not a dlopen/dlclose expert... I'm perfectly happy to be told 
> that I don't know what I'm doing! ;)
> h3. Basic Description
> If I create a shared object (that may or may not implement anything) that 
> links with libqpidmessaging (ie g++ ... -lqpidmessaging), and then create an 
> application that dlopen's that library, then dlclose's that library, then 
> that application will cause a seg-fault, which appears to be in the 
> libqpidmessaging library itself.
> To demonstrate, I have a loadee.cpp file that contains just the following 
> unimportant code:
> {code:title=loadee.cpp|borderStyle=solid}
> void foo() { }
> {code}
> Then I build a loadee.so shared object like:
> {noformat}
> g++ -g -shared -lqpidmessaging -o loadee.so loadee.cpp
> {noformat}
> Next I have:
> {code:title=loader.cpp|borderStyle=solid}
> #include <stdio.h>
> #include <stdlib.h>
> #include <dlfcn.h>
> int main(int c, char *argv[]) {
>     void *handle = dlopen("./loadee.so", RTLD_LAZY); // segfaults in dlclose 
> below.
>     //void *handle = dlopen("./loadee.so", RTLD_NOW); // no segfault.
>     if (!handle) {
>         fprintf(stderr, "%s\n", dlerror());
>         exit(EXIT_FAILURE);
>     }
>     dlclose(handle);
>     return EXIT_SUCCESS;
> }
> {code}
> Finally I build the loader program like:
> {noformat}
> g++ -g -rdynamic -o loader loader.cpp -ldl
> {noformat}
> Now, if I run the resulting loader program, then the program seg-faults in 
> libqpidmessaging.  However, there is no such seg-fault (for me at least), if 
> I *either* remove the -lqpidmessaging flag from the first g++ command, *or* 
> change the flopen flags from RTLD_NOW to RTLD_LAZY (as indicated in the code 
> comments above).
> h3. Tested Versions
> I've tried this against the 0.8 and 0.10 tags, as well as trunk at r1148263, 
> with both Autotools and CMake.
> h3. GDB
> Unfortunately, gdb is not giving me much... very strange.
> {noformat}
> paul@debian:~/src/simple$ gdb ./loader
> GNU gdb (GDB) 7.0.1-debian
> Copyright (C) 2009 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i486-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /home/paul/src/simple/loader...done.
> (gdb) run
> Starting program: /home/paul/src/simple/loader
> [Thread debugging using libthread_db enabled]
> Cannot find new threads: generic error
> (gdb) bt
> Target is executing.
> (gdb) bt full
> Target is executing.
> (gdb) thread apply all bt
> Cannot find new threads: generic error
> (gdb)
> {noformat}
> h3. Valgrind
> Valgrind is a little more interesting though...
> {noformat}
> paul@debian:~/src/simple$ valgrind --leak-check=full --show-reachable=yes 
> ./loader
> ==31992== Memcheck, a memory error detector
> ==31992== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
> ==31992== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for 
> copyright info
> ==31992== Command: ./loader
> ==31992==
> ==31992== Jump to the invalid address stated on the next line
> ==31992==    at 0x0: ???
> ==31992==    by 0x41A1687: __cxa_finalize (cxa_finalize.c:56)
> ==31992==    by 0x46ED0F3: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x473091F: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x401271D: _dl_close_worker (dl-close.c:271)
> ==31992==    by 0x4013196: _dl_close (dl-close.c:742)
> ==31992==    by 0x4034CA3: dlclose_doit (dlclose.c:37)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034CD9: dlclose (dlclose.c:48)
> ==31992==    by 0x8048812: main (loader.cpp:12)
> ==31992==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
> ==31992==
> ==31992==
> ==31992== Process terminating with default action of signal 11 (SIGSEGV)
> ==31992==  Bad permissions for mapped region at address 0x0
> ==31992==    at 0x0: ???
> ==31992==    by 0x41A1687: __cxa_finalize (cxa_finalize.c:56)
> ==31992==    by 0x46ED0F3: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x473091F: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x401271D: _dl_close_worker (dl-close.c:271)
> ==31992==    by 0x4013196: _dl_close (dl-close.c:742)
> ==31992==    by 0x4034CA3: dlclose_doit (dlclose.c:37)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034CD9: dlclose (dlclose.c:48)
> ==31992==    by 0x8048812: main (loader.cpp:12)
> ==31992==
> ==31992== HEAP SUMMARY:
> ==31992==     in use at exit: 17,489 bytes in 85 blocks
> ==31992==   total heap usage: 1,236 allocs, 1,151 frees, 54,608 bytes 
> allocated
> ==31992==
> ==31992== 12 bytes in 1 blocks are still reachable in loss record 1 of 33
> ==31992==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
> ==31992==    by 0x400486E: local_strdup (dl-load.c:162)
> ==31992==    by 0x4007080: _dl_map_object (dl-load.c:2175)
> ==31992==    by 0x4011B25: dl_open_worker (dl-open.c:225)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034B40: dlopen@@GLIBC_2.1 (dlopen.c:88)
> ==31992==    by 0x80487D0: main (loader.cpp:6)
> ==31992==
> ==31992== 17 bytes in 1 blocks are possibly lost in loss record 2 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x480DBAC: global constructors keyed to Variant.cpp 
> (Variant.cpp:174)
> ==31992==    by 0x481A7CC: ??? (in /usr/local/lib/libqpidtypes.so.1.0.0)
> ==31992==    by 0x480ACEF: ??? (in /usr/local/lib/libqpidtypes.so.1.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 18 bytes in 1 blocks are possibly lost in loss record 3 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x480DBE1: global constructors keyed to Variant.cpp 
> (Variant.cpp:175)
> ==31992==    by 0x481A7CC: ??? (in /usr/local/lib/libqpidtypes.so.1.0.0)
> ==31992==    by 0x480ACEF: ??? (in /usr/local/lib/libqpidtypes.so.1.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 25 bytes in 1 blocks are possibly lost in loss record 4 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x471B2CC: global constructors keyed to OutgoingMessage.cpp 
> (OutgoingMessage.cpp:44)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 25 bytes in 1 blocks are possibly lost in loss record 5 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x4716A4D: global constructors keyed to IncomingMessages.cpp 
> (IncomingMessages.cpp:299)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 31 bytes in 1 blocks are possibly lost in loss record 6 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x471B301: global constructors keyed to OutgoingMessage.cpp 
> (OutgoingMessage.cpp:45)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 31 bytes in 1 blocks are possibly lost in loss record 7 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x4716A82: global constructors keyed to IncomingMessages.cpp 
> (IncomingMessages.cpp:301)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 33 bytes in 1 blocks are possibly lost in loss record 8 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x480DB77: global constructors keyed to Variant.cpp 
> (Variant.cpp:36)
> ==31992==    by 0x481A7CC: ??? (in /usr/local/lib/libqpidtypes.so.1.0.0)
> ==31992==    by 0x480ACEF: ??? (in /usr/local/lib/libqpidtypes.so.1.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 36 bytes in 1 blocks are possibly lost in loss record 9 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x471B336: global constructors keyed to OutgoingMessage.cpp 
> (OutgoingMessage.cpp:46)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 36 bytes in 1 blocks are possibly lost in loss record 10 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x4716AB7: global constructors keyed to IncomingMessages.cpp 
> (IncomingMessages.cpp:302)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 41 bytes in 1 blocks are possibly lost in loss record 11 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x471B36B: global constructors keyed to OutgoingMessage.cpp 
> (OutgoingMessage.cpp:47)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 41 bytes in 1 blocks are possibly lost in loss record 12 of 33
> ==31992==    at 0x402471C: operator new(unsigned int) 
> (vg_replace_malloc.c:255)
> ==31992==    by 0x40D0795: std::string::_Rep::_S_create(unsigned int, 
> unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1493: ??? (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x40D1685: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/libstdc++.so.6.0.13)
> ==31992==    by 0x4716AEC: global constructors keyed to IncomingMessages.cpp 
> (IncomingMessages.cpp:303)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 140 bytes in 1 blocks are still reachable in loss record 13 of 33
> ==31992==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
> ==31992==    by 0x4023FDA: realloc (vg_replace_malloc.c:525)
> ==31992==    by 0x400A029: _dl_new_object (dl-object.c:169)
> ==31992==    by 0x40059B7: _dl_map_object_from_fd (dl-load.c:969)
> ==31992==    by 0x4007133: _dl_map_object (dl-load.c:2240)
> ==31992==    by 0x4011B25: dl_open_worker (dl-open.c:225)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034B40: dlopen@@GLIBC_2.1 (dlopen.c:88)
> ==31992==
> ==31992== 140 bytes in 1 blocks are still reachable in loss record 14 of 33
> ==31992==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
> ==31992==    by 0x400C37E: _dl_map_object_deps (dl-deps.c:506)
> ==31992==    by 0x4011B80: dl_open_worker (dl-open.c:262)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034B40: dlopen@@GLIBC_2.1 (dlopen.c:88)
> ==31992==    by 0x80487D0: main (loader.cpp:6)
> ==31992==
> ==31992== 308 bytes in 7 blocks are still reachable in loss record 15 of 33
> ==31992==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
> ==31992==    by 0x4009D51: _dl_lookup_symbol_x (dl-lookup.c:616)
> ==31992==    by 0x400A845: _dl_relocate_object (dl-machine.h:344)
> ==31992==    by 0x4011C55: dl_open_worker (dl-open.c:338)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034B40: dlopen@@GLIBC_2.1 (dlopen.c:88)
> ==31992==    by 0x80487D0: main (loader.cpp:6)
> ==31992==
> ==31992== 331 bytes in 10 blocks are still reachable in loss record 16 of 33
> ==31992==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
> ==31992==    by 0x400486E: local_strdup (dl-load.c:162)
> ==31992==    by 0x40073EC: _dl_map_object (dl-load.c:2148)
> ==31992==    by 0x400CE9B: openaux (dl-deps.c:65)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x400C191: _dl_map_object_deps (dl-deps.c:247)
> ==31992==    by 0x4011B80: dl_open_worker (dl-open.c:262)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==
> ==31992== 331 bytes in 10 blocks are still reachable in loss record 17 of 33
> ==31992==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
> ==31992==    by 0x400A113: _dl_new_object (dl-object.c:150)
> ==31992==    by 0x40059B7: _dl_map_object_from_fd (dl-load.c:969)
> ==31992==    by 0x4007133: _dl_map_object (dl-load.c:2240)
> ==31992==    by 0x400CE9B: openaux (dl-deps.c:65)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x400C191: _dl_map_object_deps (dl-deps.c:247)
> ==31992==    by 0x4011B80: dl_open_worker (dl-open.c:262)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 18 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x49ED792: global constructors keyed to DispatchHandle.cpp 
> (iostream:72)
> ==31992==    by 0x49FF49C: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x48F7C1B: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 19 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x4972CA0: global constructors keyed to QueueQueryBody.cpp 
> (iostream:72)
> ==31992==    by 0x49FF49C: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x48F7C1B: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 20 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x495DA00: global constructors keyed to FileRejectBody.cpp 
> (iostream:72)
> ==31992==    by 0x49FF49C: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x48F7C1B: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 21 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x493B660: global constructors keyed to 
> ClusterConnectionTxStartBody.cpp (iostream:72)
> ==31992==    by 0x49FF49C: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x48F7C1B: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 22 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x49B9380: global constructors keyed to AMQFrame.cpp 
> (iostream:72)
> ==31992==    by 0x49FF49C: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x48F7C1B: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 23 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x49947C0: global constructors keyed to FileStageBody.cpp 
> (iostream:72)
> ==31992==    by 0x49FF49C: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x48F7C1B: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 24 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x4924FF0: global constructors keyed to 
> ClusterInitialStatusBody.cpp (iostream:72)
> ==31992==    by 0x49FF49C: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x48F7C1B: ??? (in /usr/local/lib/libqpidcommon.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 25 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x47C60D3: global constructors keyed to SessionImpl.cpp 
> (iostream:72)
> ==31992==    by 0x47E1C3C: ??? (in /usr/local/lib/libqpidclient.so.2.0.0)
> ==31992==    by 0x4781B43: ??? (in /usr/local/lib/libqpidclient.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 26 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x47AE9AC: global constructors keyed to Demux.cpp 
> (iostream:72)
> ==31992==    by 0x47E1C3C: ??? (in /usr/local/lib/libqpidclient.so.2.0.0)
> ==31992==    by 0x4781B43: ??? (in /usr/local/lib/libqpidclient.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 27 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x471B352: global constructors keyed to OutgoingMessage.cpp 
> (OutgoingMessage.cpp:46)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 28 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x4705CAB: global constructors keyed to AddressResolution.cpp 
> (AddressResolution.cpp:101)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 520 bytes in 1 blocks are still reachable in loss record 29 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x41A14A0: __new_exitfn (cxa_atexit.c:101)
> ==31992==    by 0x41A1534: __internal_atexit (cxa_atexit.c:35)
> ==31992==    by 0x41A15A4: __cxa_atexit (cxa_atexit.c:58)
> ==31992==    by 0x46ED533: global constructors keyed to Address.cpp 
> (Address.cpp:35)
> ==31992==    by 0x47308FC: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x46EA143: ??? (in /usr/local/lib/libqpidmessaging.so.2.0.0)
> ==31992==    by 0x400DBCB: call_init (dl-init.c:70)
> ==31992==    by 0x400DCE8: _dl_init (dl-init.c:134)
> ==31992==    by 0x4011D78: dl_open_worker (dl-open.c:463)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==
> ==31992== 544 bytes in 10 blocks are still reachable in loss record 30 of 33
> ==31992==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
> ==31992==    by 0x400C1FE: _dl_map_object_deps (dl-deps.c:470)
> ==31992==    by 0x4011B80: dl_open_worker (dl-open.c:262)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034B40: dlopen@@GLIBC_2.1 (dlopen.c:88)
> ==31992==    by 0x80487D0: main (loader.cpp:6)
> ==31992==
> ==31992== 628 bytes in 1 blocks are still reachable in loss record 31 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x4009E52: _dl_new_object (dl-object.c:52)
> ==31992==    by 0x40059B7: _dl_map_object_from_fd (dl-load.c:969)
> ==31992==    by 0x4007133: _dl_map_object (dl-load.c:2240)
> ==31992==    by 0x4011B25: dl_open_worker (dl-open.c:225)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034B40: dlopen@@GLIBC_2.1 (dlopen.c:88)
> ==31992==    by 0x80487D0: main (loader.cpp:6)
> ==31992==
> ==31992== 2,112 bytes in 11 blocks are still reachable in loss record 32 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x400F247: _dl_check_map_versions (dl-version.c:299)
> ==31992==    by 0x4011DC8: dl_open_worker (dl-open.c:268)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x403509B: _dlerror_run (dlerror.c:164)
> ==31992==    by 0x4034B40: dlopen@@GLIBC_2.1 (dlopen.c:88)
> ==31992==    by 0x80487D0: main (loader.cpp:6)
> ==31992==
> ==31992== 6,369 bytes in 10 blocks are still reachable in loss record 33 of 33
> ==31992==    at 0x402328F: calloc (vg_replace_malloc.c:467)
> ==31992==    by 0x4009E52: _dl_new_object (dl-object.c:52)
> ==31992==    by 0x40059B7: _dl_map_object_from_fd (dl-load.c:969)
> ==31992==    by 0x4007133: _dl_map_object (dl-load.c:2240)
> ==31992==    by 0x400CE9B: openaux (dl-deps.c:65)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x400C191: _dl_map_object_deps (dl-deps.c:247)
> ==31992==    by 0x4011B80: dl_open_worker (dl-open.c:262)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==    by 0x40115C5: _dl_open (dl-open.c:554)
> ==31992==    by 0x4034C0A: dlopen_doit (dlopen.c:67)
> ==31992==    by 0x400D7F5: _dl_catch_error (dl-error.c:178)
> ==31992==
> ==31992== LEAK SUMMARY:
> ==31992==    definitely lost: 0 bytes in 0 blocks
> ==31992==    indirectly lost: 0 bytes in 0 blocks
> ==31992==      possibly lost: 334 bytes in 11 blocks
> ==31992==    still reachable: 17,155 bytes in 74 blocks
> ==31992==         suppressed: 0 bytes in 0 blocks
> ==31992==
> ==31992== For counts of detected and suppressed errors, rerun with: -v
> ==31992== ERROR SUMMARY: 12 errors from 12 contexts (suppressed: 42 from 9)
> Segmentation fault
> {noformat}
> h3. Relevance
> The reason I'm bothering to try to understand / fix such a scenario, is 
> because this is precisely (or at least very close) to what happens with the 
> PHP binding I've been working on, if the PHP processors completes very 
> quickly (you can see some background info at 
> https://issues.apache.org/jira/browse/QPID-3027).
> Basically, the PHP plugin is compiled against libqpidmessaging, and the PHP 
> CLI interpreter dlopen's and then dlclose's my plugin, resulting in the same 
> segfault, at the same location (though in that case, gdb's backtrace includes 
> info similar to Valgrind's output above (ie shows the segfault to be in 
> __cxa_finalize, called within libqpidmessaging)).
> If there is anything more I can report, or any tests / experiments worth 
> carrying out, please let me know! :)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to