Одновременное прерывание () в двух потоках

У меня есть кое-что, чего я раньше не видел. См. Фрейм 2 в этих потоках:

Thread 31 (process 8752):
#0  0x00faa410 in __kernel_vsyscall ()
#1  0x00b0b139 in sigprocmask () from /lib/libc.so.6
#2  0x00b0c7a2 in abort () from /lib/libc.so.6
#3  0x00752aa0 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6
#4  0x00750505 in ?? () from /usr/lib/libstdc++.so.6
#5  0x00750542 in std::terminate () from /usr/lib/libstdc++.so.6
#6  0x00750c65 in __cxa_pure_virtual () from /usr/lib/libstdc++.so.6
#7  0x00299c63 in ApplicationFunction()

Thread 1 (process 8749):
#0  0x00faa410 in __kernel_vsyscall ()
#1  0x00b0ad80 in raise () from /lib/libc.so.6
#2  0x00b0c691 in abort () from /lib/libc.so.6
#3  0x00b4324b in __libc_message () from /lib/libc.so.6
#4  0x00b495b6 in malloc_consolidate () from /lib/libc.so.6
#5  0x00b4b3bd in _int_malloc () from /lib/libc.so.6
#6  0x00b4d3ab in malloc () from /lib/libc.so.6
#7  0x08147f03 in AnotherApplicationFunction ()

Открывая его с помощью gdb и получая обратную трассировку, я получаю поток 1. Позже я увидел странное состояние, в котором находится поток 31. Этот поток из библиотеки, с которой у нас были проблемы, поэтому я ' Я полагаю, что авария вызвана им.

Так что это значит? Два потока одновременно делают что-то незаконное? Или один из них каким-то образом вызывает abort () в другом?

ОС - Linux Red Hat Enterprise 5.3, это многопроцессорный сервер.

7
задан Dmitry Yudakov 23 February 2011 в 21:16
поделиться