повреждение кучи и мьютекс

У меня серьезная ошибка в приложении, и я пытаюсь понять, что происходит ..
У меня есть несколько журналов непосредственно перед сбоем.
Я не могу просто воспроизвести ошибку.

контекст :

Thread1:
void f()
{
log(thread1_1)
boost::lock_guard< boost::recursive_mutex > lock(mutexABC)
log(thread1_2)
-- eventually corruption heap could occur here
log(thread1_3)
}

Thread2:
void f()
{
log(thread2_1)
boost::lock_guard< boost::recursive_mutex > lock(mutexABC)
-- eventually corruption heap could occur here
log(thread2_2)
}

В моих журналах (я использую LOG4CXX) у меня есть следующая последовательность:

15:36:45,260  thread2_1
15:36:45,263  thread1_1
15:36:45,265  thread1_2
15:36:45,265  thread2_2

some GUI log thread3_*

15:36:45,276  //application crash
and no thread1_3 log before thread2_2!

Как я могу войти в thread2_2 до thread1_3?
Блокировка может быть разблокирована из-за повреждения кучи без сбоя программы, и второй поток может получить эту блокировку и выполнить некоторый код перед сбоем приложения?

Я нахожусь под Windows 7. Моя C ++ программа включается в режим выпуска с включенной оптимизацией компилятора.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …