qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alan Conway <acon...@redhat.com>
Subject Re: Why is qpid::sys::ssl::shutdownNSS being called in a global destructor?
Date Wed, 02 Dec 2009 15:43:43 GMT
On 12/02/2009 10:39 AM, Andrew Stitcher wrote:
> On Tue, 2009-12-01 at 16:34 -0500, Alan Conway wrote:
>> ...I'm getting this core dump on exit from the cluster_tests in a cmake build:
>>
>> #0  0x00000038e0075bb8 in malloc_consolidate () from /lib64/libc.so.6
>> #1  0x00000038e0078022 in _int_malloc () from /lib64/libc.so.6
>> #2  0x00000038e0079fe8 in calloc () from /lib64/libc.so.6
>> #3  0x00000031cee14463 in ?? () from /lib64/libnspr4.so
>> #4  0x00000031cee1aeff in ?? () from /lib64/libnspr4.so
>> #5  0x00000031cee2865d in PR_GetCurrentThread () from /lib64/libnspr4.so
>> #6  0x00000031cee1a397 in PR_SetError () from /lib64/libnspr4.so
>> #7  0x00000031cfa1863d in NSS_Shutdown () from /lib64/libnss3.so
>> #8  0x00007f5f94296689 in qpid::sys::ssl::shutdownNSS () at
>> /home/aconway/qpid/qpid/cpp/src/qpid/sys/ssl/util.cpp:115
>> #9  0x00007f5f934d5607 in qpid::client::(anonymous
>> namespace)::StaticInit::~StaticInit (this=0x38e0369e80, __in_chrg=<value
>> optimized out>) at /home/aconway/qpid/qpid/cpp/src/qpid/client/SslConnector.cpp:163
>> #10 0x00000038e0036bc0 in __cxa_finalize () from /lib64/libc.so.6
>> #11 0x00007f5f934d5556 in __do_global_dtors_aux () from
>> /home/aconway/qpid/qpid/cmake/src/sslconnector.so
>> #12 0x0000000000000000 in ?? ()
>>
>> This looks suspect to me, doing anything of any complexity in a static
>> destructor is dangerous, unless the NSS library specifically states that its
>> safe to shutdown this way.
>
> I'd tend to agree - perhaps this should run on module unload - oh wait -
> we don't have any way except static destruction to indicate module
> unload.
>
>>
>> Not sure why its affecting the cluster tests as they don't use SSL, nor why it's
>> happening in cmake build and not in automake build (I'm trying to get the
>> cluster tests running in a cmake build)
>
> The cmake build correctly uses the -mt versions of the libs in versions
> of boost that have them (the ones in fedora do, the ones in rhel don't)
> whereas the autotools build always uses the non -mt versions. That could
> be the difference.
>
> However, the current checked in cluster module doesn't build with cmake,
> giving undefined symbols with fedora 11/12 at least - it does work with
> rhel5 though. this is related to the new(ish) boost_system lib. So this
> indicates you must be testing using rhel5 which doesn't have -mt lib.
>

Nope, I'm testing on f11. I have cluster module & cluster_test building and 
passing tests but core dumping on exit as above.

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


Mime
View raw message