c++ - Simultaneous abort() in two threads -
i have backtrace haven't seen before. see frame 2 in these threads:
thread 31 (process 8752): #0 0x00faa410 in __kernel_vsyscall () #1 0x00b0b139 in sigprocmask () /lib/libc.so.6 #2 0x00b0c7a2 in abort () /lib/libc.so.6 #3 0x00752aa0 in __gnu_cxx::__verbose_terminate_handler () /usr/lib/libstdc++.so.6 #4 0x00750505 in ?? () /usr/lib/libstdc++.so.6 #5 0x00750542 in std::terminate () /usr/lib/libstdc++.so.6 #6 0x00750c65 in __cxa_pure_virtual () /usr/lib/libstdc++.so.6 #7 0x00299c63 in applicationfunction() thread 1 (process 8749): #0 0x00faa410 in __kernel_vsyscall () #1 0x00b0ad80 in raise () /lib/libc.so.6 #2 0x00b0c691 in abort () /lib/libc.so.6 #3 0x00b4324b in __libc_message () /lib/libc.so.6 #4 0x00b495b6 in malloc_consolidate () /lib/libc.so.6 #5 0x00b4b3bd in _int_malloc () /lib/libc.so.6 #6 0x00b4d3ab in malloc () /lib/libc.so.6 #7 0x08147f03 in anotherapplicationfunction ()
when opening gdb , getting backtrace gives me thread 1. later saw weird state thread 31 in. thread library had problems i'd believe crash caused it.
so mean? 2 threads simultaneously doing illegal? or it's 1 of them, causing somehow abort() in other one?
the os linux red hat enterprise 5.3, it's multiprocessor server.
looks heap corruption, detected malloc in thread 1, causing or caused error in thread 31.
some broken piece of code overwriting a.o. vtable in thread 31 cause this.
Comments
Post a Comment