Hi,

Not my day...Crash happens at 'random' times, but only on exit. I'm trying to get a simple test case together...Any comments?

Cheers,

jez.

perl.exe caused an Access Violation at location 01fff42d Reading from location 01fff42d.

Registers:
eax=7ffdf000 ebx=00000000 ecx=00000000 edx=000b08d2 esi=01fff42d edi=0140f404 eip=01fff42d esp=0140f3a0 ebp=0140f3c8 iopl=0 nv up ei pl nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202

Call stack:
01FFF42D
77D48734  USER32.dll:77D48734  GetDC
77D48816  USER32.dll:77D48816  GetDC
77D4C63F  USER32.dll:77D4C63F  IsWindowUnicode
77D4E905  USER32.dll:77D4E905  CallWindowProcA
233C5E2C GUI.dll:233C5E2C CommonMsgLoop(interpreter*, HWND__*, unsigned, unsigned, long, long (*)(HWND__*, unsigned, unsigned, long)) GUI_MessageLoops.cpp:161 LRESULT CommonMsgLoop(interpreter*, HWND__*, unsigned, unsigned, long, long (*)(HWND__*, unsigned, unsigned, long))(
        PerlInterpreter * my_perl = &(indirect),
        HWND hwnd = &(indirect),
        UINT uMsg = 132,
        WPARAM wParam = 0,
        LPARAM lParam = 29098431,
        WNDPROC wndprocOriginal = &0x01fff42d
)
        ...

            if (wndprocOriginal != NULL) {
return CallWindowProc((WNDPROC_CAST) wndprocOriginal, hwnd, uMsg, wParam, lParam);
            } else {
                return DefWindowProc(hwnd, uMsg, wParam, lParam);
        ...

233C76D2 GUI.dll:233C76D2 ControlMsgLoop(HWND__*, unsigned, unsigned, long) GUI_MessageLoops.cpp:954
LRESULT ControlMsgLoop(HWND__*, unsigned, unsigned, long)(
        HWND hwnd = &(indirect),
        UINT uMsg = 132,
        WPARAM wParam = 0,
        LPARAM lParam = 29098431
)
        ...

            if (PerlResult != 0) {
PerlResult = CommonMsgLoop(NOTXSCALL hwnd, uMsg, wParam, lParam, perlud->WndProc);
            }
            else if ( perlud->forceResult != 0) {
        ...

77D48734  USER32.dll:77D48734  GetDC
77D48816  USER32.dll:77D48816  GetDC
77D4B4C0  USER32.dll:77D4B4C0  DefWindowProcW
77D4B50C  USER32.dll:77D4B50C  DefWindowProcW
7C90EAE3  ntdll.dll:7C90EAE3  KiUserCallbackDispatcher
77D4CA67  USER32.dll:77D4CA67  PeekMessageA
280929B9  perl58.dll:280929B9  win32_async_check
2806032B  perl58.dll:2806032B  Perl_runops_standard
280258AB  perl58.dll:280258AB  Perl_call_method
28013436  perl58.dll:28013436  Perl_despatch_signals
2801328D  perl58.dll:2801328D  Perl_despatch_signals
280131CF  perl58.dll:280131CF  Perl_despatch_signals
233BF3EE GUI.dll:233BF3EE hv_fetch_mg(interpreter*, hv*, char*, unsigned long, long) GUI_Helpers.cpp:144
SV * * hv_fetch_mg(interpreter*, hv*, char*, unsigned long, long)(
        PerlInterpreter * my_perl = &(indirect),
        HV * hv = &(indirect),
        char * key = "-handle",
        U32 klen = 7,
        I32 lval = 0
)
        ...
                if(SvMAGICAL(hv)) mg_get(*tempsv);
                return tempsv;
        }

        SV**
        ...

233BF4E8 GUI.dll:233BF4E8 handle_From(interpreter*, sv*) GUI_Helpers.cpp:167
HWND handle_From(interpreter*, sv*)(
        PerlInterpreter * my_perl = &(indirect),
        SV * pSv = &(indirect)
)
        ...
                    SV **pHv;
                    pHv = hv_fetch_mg(NOTXSCALL (HV*) SvRV(pSv), "-handle", 7, 
0);
                    if(pHv != NULL) {
                        hReturn = (HWND) SvIV(*pHv);
                    }
        ...

233BF605 GUI.dll:233BF605 Perlud_Free(interpreter*, tagPERLWIN32GUI_USERDATA*) GUI_Helpers.cpp:84
void Perlud_Free(interpreter*, tagPERLWIN32GUI_USERDATA*)(
        PerlInterpreter * my_perl = &(indirect),
        LPPERLWIN32GUI_USERDATA perlud = &(indirect)
)
        ...
                    /* Free into parent */
                    if(SvOK(perlud->svSelf)) {
HWND parent = GetParent(handle_From(NOTXSCALL perlud->svSelf));
                        if (parent != NULL && *perlud->szWindowName != '\0')  {
                            SV* SvParent = SV_SELF_FROM_WINDOW(parent);
        ...

233C7682 GUI.dll:233C7682 ControlMsgLoop(HWND__*, unsigned, unsigned, long) GUI_MessageLoops.cpp:818
LRESULT ControlMsgLoop(HWND__*, unsigned, unsigned, long)(
        HWND hwnd = &(indirect),
        UINT uMsg = 2,
        WPARAM wParam = 0,
        LPARAM lParam = 0
)
        ...
                else
                    PerlResult = DefWindowProc(hwnd, uMsg, wParam, lParam);
                 PERLUD_FREE;
                 return PerlResult;
            case WM_TIMER:
        ...

77D48734  USER32.dll:77D48734  GetDC
77D48816  USER32.dll:77D48816  GetDC
77D4B4C0  USER32.dll:77D4B4C0  DefWindowProcW
77D4B50C  USER32.dll:77D4B50C  DefWindowProcW
7C90EAE3  ntdll.dll:7C90EAE3  KiUserCallbackDispatcher
28041DCB  perl58.dll:28041DCB  Perl_sv_compile_2op
280602FE  perl58.dll:280602FE  Perl_runops_standard
2806743A  perl58.dll:2806743A  Perl_sv_clear
28067A11  perl58.dll:28067A11  Perl_sv_free
28067A11  perl58.dll:28067A11  Perl_sv_free
28010672  perl58.dll:28010672  Perl_hv_undef
28067A11  perl58.dll:28067A11  Perl_sv_free
28061E9B  perl58.dll:28061E9B  Perl_leave_scope
2808C80D  perl58.dll:2808C80D  RunPerl
00401012  perl.exe:00401012
7C816D4F  kernel32.dll:7C816D4F  RegisterWaitForInputIdle



Reply via email to