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