Re: Interpret object causing crash in __cxa_finalize (have core)

Jeffrey Walton
2011-08-24T19:54:28Z

On Wed, Aug 24, 2011 at 3:39 PM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
> On Wed, 24 Aug 2011 21:31:14 +0200, Jeffrey Walton wrote:
>> I'm observing an intermittent crash during unloading of a shared
>> object. The library and test harness were built with '-g3 -ggdb -O0',
>> and 'ulimit -c unlimited', so I am able to get it under GDB.
>
> If you have it reproducible run it under valgrind first.
Boost has made Valgrind useless (15000 line of output). And I have not
been successful in getting suppression rules:
http://lists.boost.org/boost-users/2011/08/70235.php and
http://sourceforge.net/mailarchive/forum.php?thread_name=CAH8yC8k0QAqj%2B4eyQ%3D20aH11Tnb7m43%3DxjCdkxKZY8ssgf3rfg%40mail.gmail.com&forum_name=valgrind-users.

>> But I'm having problems interpreting what object is being problematic.
> [...]
>> #21 0x00002ba649808630 in __cxa_finalize (d=0x2ba64901c3d8)
>>     at cxa_finalize.c:56
>>         check = <value optimized out>
>>         cxafn = 0x6
>>         cxaarg = 0xa46
>>         f = 0x13925e0
>>         funcs = 0x13924f0
>> (gdb) po 0x13925e0
>> evaluation of this expression requires the target program to be active
>
> print-object is for Objecttive-C.  And you will decode there just the info you
> see in the frame #20.
Indeed! I've been working on iPhones/iPads for too long.

> This looks as a memory corruption, it is better to debug instrument the code
> leading to this state, this core file may no longer be too useful.
Ok, thanks.

To retain info on the objects in question, do I need to compile with
g++ -v and save the intermediate (ii?) files?

Jeff

> [...]
>> #20 0x0000000000470c0a in ~map (this=0x83dfc0, __in_chrg=<value optimized out>)
>>     at /usr/include/c++/4.4/bits/stl_map.h:87
>> No locals.
>> #21 0x00002ba649808630 in __cxa_finalize (d=0x2ba64901c3d8)
>>     at cxa_finalize.c:56
>>         check = <value optimized out>
>>         cxafn = 0x6
>>         cxaarg = 0xa46
>>         f = 0x13925e0
>>         funcs = 0x13924f0
>> #22 0x00002ba648c59076 in __do_global_dtors_aux () from lib/libesapi-c++.so
>> No symbol table info available.
>> #23 0x0000000000000000 in ?? ()
>> No symbol table info available.
>> (gdb)
>