программизм (скушный, параноидальный)
Aug. 21st, 2007 02:04 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вот интересно, как можно абсолютно надежно вызвать следующую функцию Win32 API
SetUnhandledExceptionFilter()
чтобы вновь установленный фильтр мог вызвать старый?
Я бы, пожалуй, вызвал бы её из-под критической секции, а второй вход в ту же критическую секцию поставил бы вокруг считывания значения старого фильтра из-под нового. Дабы избегнуть ситуации, когда SetUnhandledExceptionFilter уже поставила новый фильтр, а старый фильтр (коий SetUnhandledExceptionFilter возвращает) еще не успели сохранить, и в этот самый момент из другого треда прилетает этот самый... unhandled exception и попадает в новый фильтр, у которого еще нет адреса старого.
SetUnhandledExceptionFilter()
чтобы вновь установленный фильтр мог вызвать старый?
Я бы, пожалуй, вызвал бы её из-под критической секции, а второй вход в ту же критическую секцию поставил бы вокруг считывания значения старого фильтра из-под нового. Дабы избегнуть ситуации, когда SetUnhandledExceptionFilter уже поставила новый фильтр, а старый фильтр (коий SetUnhandledExceptionFilter возвращает) еще не успели сохранить, и в этот самый момент из другого треда прилетает этот самый... unhandled exception и попадает в новый фильтр, у которого еще нет адреса старого.