Нарушение прав доступа в MSVBVM60.dll с VB6 и C ++ dll - PullRequest
1 голос
/ 14 декабря 2010

Я расследую сбой приложения, над которым работаю. Визуальная базовая часть представляет собой простую форму, которая создает PictureBoxes и кнопки. Звонки в C + dll осуществляются при нажатии кнопки. PictureBoxes предоставляют дескрипторы для DLL, которая использует их для создания окон с использованием WINAPI и отображает в OpenGL.

Первоначально представления создаются в PictureBox без проблем и отображаются правильно, но после сброса представления уничтожаются и воссоздаются заново. Это когда происходит сбой.

Я перепробовал множество инструментов, средства проверки приложений, Windbg и средства диагностики отладки. И Windbg, и Debug Diagnostic Tool указывают на это место, однако я не знаю, как это исправить.

К сожалению, переключение с VB6 для меня не вариант, так как это вне моего контроля.

Пожалуйста, перейдите по ссылкам на журналы сбоев.

текст ссылки (разрешено публиковать только 1 ссылку, но оба журнала видны)

Любая помощь с благодарностью,

Leon

1 Ответ

2 голосов
/ 13 декабря 2011

Из вашего текстового файла:

(134c.1344): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=034b0ebc ebx=00000000 ecx=7352e100 edx=00000000 esi=02e6813c edi=02e6813c
eip=7349fdd2 esp=0012fc20 ebp=0012fc44 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010202
MSVBVM60!HrMenuHandleMenuCommand+0x3f:
7349fdd2 ffb048010000    push    dword ptr <Unloaded_Ed20.dll>+0x147 (00000148)[eax] ds:0023:034b1004=????????
0:000> kb
ChildEBP RetAddr  Args to Child              
0012fc28 7347e1b9 034b0ebc 00000000 02e92ee8 MSVBVM60!HrMenuHandleMenuCommand+0x3f
0012fc44 7347dc27 034b0ebc 000f144a 00000111 MSVBVM60!_DefWmCommand+0xc7
0012fcb0 734d378a 02e92ee8 000f144a 00000111 MSVBVM60!VBDefControlProc+0xb47
0012fcf0 7347ce03 034b0ebc 000f144a 00000111 MSVBVM60!PixCtlProc+0x57c
0012fd18 7347f800 034b0ebc 000f144a 00000111 MSVBVM60!CommonGizWndProc+0xae
0012fd74 7e418734 000f144a 00000111 00000000 MSVBVM60!StdCtlWndProc+0x232
0012fda0 7e418816 7347f5d1 000f144a 00000111 USER32!InternalCallWinProc+0x28
0012fe08 7e4189cd 00000000 7347f5d1 000f144a USER32!UserCallWinProcCheckWow+0x150
0012fe68 7e4196c7 0012fe90 00000001 0012feb8 USER32!DispatchMessageWorker+0x306
0012fe78 7342a6b0 0012fe90 ffffffff 02e76fec USER32!DispatchMessageA+0xf
0012feb8 7342a627 ffffffff 02e78f8c 02e60000 MSVBVM60!ThunderMsgLoop+0xfd
0012fecc 7342a5c9 02e76fec ffffffff 02e7efcc MSVBVM60!CMsoCMHandler::FPushMessageLoop+0x19
0012fefc 7342a505 02e7efcc ffffffff 0000134c MSVBVM60!SCM::FPushMessageLoop+0xb9
0012ff18 7342a4d0 02e78f88 02e7efcc ffffffff MSVBVM60!SCM_MsoCompMgr::FPushMessageLoop+0x2b
0012ff3c 73423644 ffffffff 0183f558 0078c2bc MSVBVM60!CMsoComponent::PushMsgLoop+0x26
0012ffb8 004013aa 00401ac4 7c817077 0183f558 MSVBVM60!ThunRTMain+0x9b
0012fff0 00000000 004013a0 00000000 78746341 with_debug_info!__vbaS+0xa

Вы были в: MSVBVM60! HrMenuHandleMenuCommand + 0x3f

Инструкция, которая набрала: push dword ptr + 0x147 (00000148) [eax] ds:0023: 034b1004 = ????????

eax недействителен, поэтому разыменование не удалось.

Я предполагаю, что у вас есть обработчик меню в Ed20.dll, который вы пытаетесьдля запуска, но эта DLL была выгружена (как указано <Unloaded_Ed20.dll>).Вы должны выяснить, почему 1. DLL был выгружен или 2. Почему обработчик все еще зарегистрирован после выгрузки.

...