У меня в приложении есть дополнительный поток для опроса, который использует indy 9.018. Этот поток пытается установить соединение
( если оно не установлено) и произвести обмен. В потоке отлавливаются все exception связанные c работой indy. Так вот в delphi 5 (sp1+adoupdate2), если не запретить перехват EIdException и EIdSlientException, то попытка запуска приложения из под Delphi часто приводит к повисанию всей системы. А если попробовать что нибудь по отлаживать в основном потоке при запрещенном перехвате EIdException и EIdSlientException, то при выполнении пошаговой отладки можно заметить произвольные перескакивания в модули indy (особенно когда ошибка происходит на стадии конекта) и в д.р. модули. Так же, если использовать FastMM, то после нескольких минут таких перелетов по модулям и процедурам появляется сообщение о повреждении памяти. Так же после перелетов по модулям и процедурам иногда программа переходит в режим отладки там где даже не установлены брейкпоинты. Если в Delphi запретить вообще отлов exception, сняв флажок "Stop on Delphi Exceptions", то при отладке ни каких прыжков в постороннии модули и процедуры не наблюдется. Так же если запускать приложение не из под Delphi то тоже ни каких глюков не наблюдается.
Проверка на Delphi 7 SP1.1 показала такие же фокусы, только без зависаний при эксепшинах в потоках.
У меня возникло подозрение, что Delphi при возникновении Exceptions (перехват которых отключен, т.е. они указаны в списке Exception types to Ignore) в дополнительных потоках и при выполнении в основном потоке пошаговой отладки начинает себя вести как то странно : резко переключается c кода в основном потоке на код выполняемый в дополнительном потоке после exception, а потом вновь возвращается в основной поток (при этом эти переключения могут сопровождаться повреждением памяти).
Собственно хотелось бы узнать это такой глюк delphi (т.е. кто нибудь наблюдал подобное) или мне нужно искать косяки у себя в коде.