· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Почему процесс умирает "по тихому"??

Посл.отвђт Сообщенiе


Дата: Сен 10, 2004 12:11:41

Приветствую Всех!
Я пишу программу, которая в нескольких потоках делает весьма объемные вычисления (неважно какие, важно то, что они занимают достаточно много времени и памяти). При запуске, этак потоков 100. Програма почему-то тихо и бесшумно сдыхает. Выражается это тем, что после вызова WaitForMultitpleObjects, fprintf(stderr, "done") ничего не пишет на экран. А %errorlevel% после смерти равен == 0xC0000027 или 0xC0000029, что означает STATUS_UNWIND и STATUS_INVALID_UNWIND_TARGET соответственно.

Вопрос: почему происходит "бесшумный" выход? Насколько я понимаю, это коды эксепшенов, но никиких месадж боксов с Abnormal Termination и подобными не вылазят!

Очень нужно знать, помогите кто сможет... Заранее большое спасибо!!


Дата: Сен 10, 2004 13:18:07

Исключение возникает внутри обработчика исключения при раскрутке стека в функции RtlUnwind. Скорее всего, ты не правильно используешь SEH.


Дата: Сен 10, 2004 13:41:40

А насколько SEH можно неправильно использовать, чтобы он делал "безвозмездный выход"? Приведи, пожалуйста, пример или просто объясни. :)


Дата: Сен 10, 2004 14:20:37

liss
см. тут


Дата: Сен 10, 2004 15:03:37

Во-во!!!
Вот примерно эта же ситуация, запускаю допустим с cmd.exe мою прогу, ставлю: bpx ExitProcess в айсе, и получаю примерно такой стек:

kernel32!ExitProcess
msvcrt!.exit
cmd!.text+0x111

Откуда видно, что ExitProcess'ом от моей проги и не пахнет! Только почему-то %errorlevel% от твоей программы теперь равен 0xC0000005, i.e. STATUS_ACCESS_VIOLATION, а что может быть у меня????????


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.079