|
|
| Посл.отвђт | Сообщен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 |
|
|
Дата: Сен 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 |