VB6 和 C++ MSVBVM60.dll 中的访问冲突动态链接库

发布于 2024-10-07 08:46:00 字数 590 浏览 4 评论 0原文

我正在调查我正在开发的应用程序崩溃的情况。视觉基础部分是一个简单的表单,它创建图片框和按钮。单击按钮即可调用 C+ dll。 PictureBox 提供了 DLL 的句柄,DLL 使用它们通过 WINAPI 创建窗口并在 OpenGL 中显示。

最初,在 PictureBox 中创建视图没有问题,并且可以正确显示,但是在发生重置事件时,视图将被销毁并重新创建。这就是崩溃发生的时候。

我尝试过很多工具,应用程序验证器、Windbg 和调试诊断工具。 Windbg和调试诊断工具都指向这个地方,但我不知道如何修复它。

不幸的是,从 VB6 切换对我来说不是一个选择,因为它超出了我的控制范围。

请点击崩溃日志的链接。

链接文本(olny 允许发布 1 个链接,但两个日志都可见)

非常感谢任何帮助,

Leon

I am investigating a crash of an application I am working on. The visual basic part is a simple form, which creates PictureBoxes and buttons. Calls are made to the C+ dll upon button clicks. The PictureBoxes provide handles to the DLL which uses them to create windows using WINAPI and displays in OpenGL.

Initially views are created in the PictureBoxes no problem, and are displayed correctly, but upon a reset event, the views are destroyed and recreated. This is when the crash happens.

I have tried numerous tools, Application verifier, Windbg, and Debug Diagnostic Tool.
Both Windbg and Debug Diagnostic Tool point to the place, however I dont know how to fix it.

Unfortunately, switching from VB6 is not an option for me as it is out of my control.

Please follow the links to crash logs.

link text (olny allowed to post 1 link, but both logs are visible)

Any help greatly appreciated,

Leon

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

太傻旳人生 2024-10-14 08:46:00

从您的文本文件:

(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 已被卸载(如 所示)。您应该找出原因 1. dll 被卸载或 2. 为什么处理程序在卸载后仍然注册。

From you text file:

(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

You were in: MSVBVM60!HrMenuHandleMenuCommand+0x3f

The instruction that fialed: push dword ptr +0x147 (00000148)[eax] ds:0023:034b1004=????????

eax is invalid, thus the derefernce failed.

My guess is that you have a menu handler in Ed20.dll which you are trying to run, but this dll has been unloaded (as indicated by the <Unloaded_Ed20.dll>). You should find out why 1. the dll was unloaded or 2. Why handler is still registered after the unload.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文