Search code examples
c++winapivb6windbgapplication-verifier

Access violation in MSVBVM60.dll with VB6 and C++ dll


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


Solution

  • 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.