ассерт и креши
От: sidorov18 США  
Дата: 02.08.10 14:27
Оценка: :)
иногда, после отображения ассерта(с помощью ATLASSERT ), если сразу не нажать "пропустить", программа крешится. причем место креша отладчик всегда(независимо от места ассерта) указывает в _CrtDbgBreak, а диалог ассерта при этом зависает. В релизе крешей нет. похоже, к крешу приводит именно ассерт, только не понятно, в каких случаях. как это побороть?
Re: ассерт и креши
От: remark Россия http://www.1024cores.net/
Дата: 02.08.10 14:33
Оценка: 2 (1)
Здравствуйте, sidorov18, Вы писали:

S>иногда, после отображения ассерта(с помощью ATLASSERT ), если сразу не нажать "пропустить", программа крешится. причем место креша отладчик всегда(независимо от места ассерта) указывает в _CrtDbgBreak, а диалог ассерта при этом зависает. В релизе крешей нет. похоже, к крешу приводит именно ассерт, только не понятно, в каких случаях. как это побороть?


http://www.rsdn.ru/forum/cpp.applied/3821438.1.aspx
Автор: remark
Дата: 26.05.10



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: ассерт и креши
От: Кодт Россия  
Дата: 02.08.10 16:27
Оценка:
Здравствуйте, sidorov18, Вы писали:

S>иногда, после отображения ассерта(с помощью ATLASSERT ), если сразу не нажать "пропустить", программа крешится. причем место креша отладчик всегда(независимо от места ассерта) указывает в _CrtDbgBreak, а диалог ассерта при этом зависает. В релизе крешей нет. похоже, к крешу приводит именно ассерт, только не понятно, в каких случаях. как это побороть?


Причина зависания очень проста: диалог выполняется в том же процессе, а значит, программа не остановлена, а просто зашла в модальный цикл.
Работают таймеры окон. Работают другие потоки. И это при том, что
1) ассерт указал на разрушение инварианта
2) рабочему потоку прямо в этом месте, вероятно, нельзя было уходить в длительную операцию
3) продолжение фоновой работы влечёт новые ассерты
То есть, отхватываем беспощадное UB и/или взаимоблокировку, вовлекающую оконный поток.
Перекуём баги на фичи!
Re[2]: ассерт и креши
От: std.denis Россия  
Дата: 02.08.10 20:53
Оценка:
К>Причина зависания очень проста: <...>
а может не крешится, а ловит int3 ?
ТС не указал тип исключения, на которое возбуждается отладчик (ну или ватсон)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.