Re: Не могу отловить :(
От: Danchik Украина  
Дата: 12.03.07 13:10
Оценка: 1 (1)
Здравствуйте, De-Bugger, Вы писали:

[Skip]

DB>Тогда я начал в случайном месте кода DoSomeWork делать преднамеренные ошибки, приводящие к AV — все нормально обрабатывается в ProcessException, да и в лог пишется. На своей машине баг повторить не могу — подскажите куда копать? Как может возникнуть ситуация когда даже попытка обработать эксепшен не удаетс


Stack Overflow может тихонечко прибить не только поток, ловится только в дебаггере. Внимательно изучите вызовы, может сделали безконечную рекурсию.
Не могу отловить :(
От: De-Bugger  
Дата: 12.03.07 06:22
Оценка:
Проблема такова: на Висте запускается приложение, состоящее из 2 потоков. Второй поток обрабатывает все файлы на жестком диске.
В общем виде алгоритм 2го потока таков —
try
  DoSomeWork;
except
  ProcessException;
end;


Так вот, не на всех машинах началась появляться следующая проблема: поток вылетает молча и не пикнув ни разу. Я даже ставил JCL обработчик исключений, который пишет все в лог — не могу поймать ошибку — нет эксепшена и все!
Тогда я начал в случайном месте кода DoSomeWork делать преднамеренные ошибки, приводящие к AV — все нормально обрабатывается в ProcessException, да и в лог пишется. На своей машине баг повторить не могу — подскажите куда копать? Как может возникнуть ситуация когда даже попытка обработать эксепшен не удаетс
Re: Не могу отловить :(
От: Melamed Россия  
Дата: 12.03.07 12:33
Оценка:
Здравствуйте, De-Bugger, Вы писали:

DB>Проблема такова: на Висте запускается приложение, состоящее из 2 потоков. Второй поток обрабатывает все файлы на жестком диске.

DB>В общем виде алгоритм 2го потока таков —
DB>
DB>try
DB>  DoSomeWork;
DB>except
DB>  ProcessException;
DB>end;
DB>


DB>Так вот, не на всех машинах началась появляться следующая проблема: поток вылетает молча и не пикнув ни разу. Я даже ставил JCL обработчик исключений, который пишет все в лог — не могу поймать ошибку — нет эксепшена и все!

DB>Тогда я начал в случайном месте кода DoSomeWork делать преднамеренные ошибки, приводящие к AV — все нормально обрабатывается в ProcessException, да и в лог пишется. На своей машине баг повторить не могу — подскажите куда копать? Как может возникнуть ситуация когда даже попытка обработать эксепшен не удаетс

Наверняка у тебя потоки автоматически разрушаются а ты ждешь их окончания. Если ждать их окончания обязательно в твоей программе то, поставь свойство FreeOnTerminate класса Threed в значение False и разрушай экземпляр класса-наследника Thread ручками, после того, как этот закончил свою работу поток закончил свою работу.
Re[2]: Не могу отловить :(
От: De-Bugger  
Дата: 13.03.07 08:10
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Stack Overflow может тихонечко прибить не только поток, ловится только в дебаггере. Внимательно изучите вызовы, может сделали безконечную рекурсию.

Именно так и было, проблема лишь в том что я не могу сделать тоже самое на своей машине, только на клиентской
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.