У меня есть многопоточное приложение.Net C#, оно использует Direct3D 9/10 и XAudio2. (К Direct3D получают доступ только один поток, то же для XAudio2. Direct3D не является проблемной причиной, ошибка является явной в любом режиме DX9 или DX10 без любого изменения в его поведении.)
Иногда (существуют некоторые области, который дает эту проблему случайным образом), этот сбой приложения довольно незахватывающим способом. Даже если приложение запущено через Visual Studio с отладчиком, это отказывает, не давая вида исключения. (Это запускается путем высказывания, что "applicationname.svchost.exe разрушается и т.д.. и т.д.. Вы хотите отладить?", если я нажимаю да, это говорит мне, что "Вы не можете отладить приложение, уже закрытое.)
Нет никакого способа узнать то, что причина катастрофического отказа? Причина у меня закончились идеи, отладчик, не дает мне информации вообще. Без исключения я не могу даже сделать stacktrace или дампа. :P (я предполагаю, проблема синхронизации (даже мысль в той области, я только делаю последовательную работу...), но эй почему запуск не является исключением?:|)
В областях, где проблема происходит, я разгружаю перезагрузку серии классов, связанных с романом (в последовательном базовом потоке, таким образом, я сомневаюсь, что это может быть проблема), и запуск новой музыки через XAudio2. (BTW, каково соображение многопоточности о XAudio2? Действительно ли безопасно звонить от нескольких, распараллеливают?)
Спасибо за справку.
P.S. Существует программное обеспечение для присоединения к моему для контроля всех вызовов и говорит мне, какова последняя возможность перед катастрофическим отказом?
Вы должны попробовать использовать WINDBG , анализируя парусную дамп, должен указывать вам на проблему, если ваше подозрение правильно, и это проблема синхронизации, причина проблемы может быть трудно определить.
Проверяли ли вы журналы регистрации событий в панели администрирования Windows? Все ошибки любого рода всегда регистрируются в этом разделе с минимальной детализацией.
Однажды у меня было приложение, которое зависало без исключений, и единственной помощью, которую я нашел, была программа Event Log Viewer, в которой я обнаружил, что источником падения было StackOverflowException.