Я работаю над многопоточным приложением, которое в целом работает нормально.
Теперь кажется, что подпотоки дают сбой, и, настроив Visual Studio для создания исключений C++, я обнаружил следующую информацию об исключении:
ExceptionCode : 3765269347
ExceptionFlags : 1
ExceptionRecord : <NULL>
ExceptionAddress : 0x0000...0
NumberOfParameters : 4
params:
magicNumber : 429065504
pExceptionObject : 0x... (some memory address)
pThrowInfo : 0x... (some memory address) {<application.exe>_Tl3?AVC_IOException@@ ...
attributes : 0
pmfnUnwind : 470560
pForwardCompat : 0
pCatchableTypeArray : 6451800
pThrowImageBase : 0x... (some memory address) {<application.exe>_IMAGE_DOS_HEADER_ImageBase}
(старался скопировать как можно лучше, за опечатки не стреляйте)
Я искал в Интернете упомянутый код исключения, но я не понимаю объяснения, и я искал упомянутый AVC_IoException
, но ничего не нашел. Кто-нибудь знает, что я могу здесь сделать?
К вашему сведению, исключение выбрасывается, когда я пытаюсь что-то записать в буфер (к вашему сведению, этот буфер не NULL), похоже, это не связано с загрузкой каких-либо DLL-файлов (точки останова я ставил на каждом loadlibrary()
, но ни одна из них не была вызвана).
Вот кусок кода (это рекурсивная функция, записывающая что-то в буфер):
virtual void fillBuffersBeforeWrite(const <internal_struct>* pDsp, size_t nByteCount)
{
<internal_class>* w = writer();
if (w && (w != this)) {
w->fillBuffersBeforeWrite(pDsp, nByteCount);
}
}
заранее спасибо