From: Jeremy W. <jez...@ho...> - 2006-07-20 17:04:40
|
All, In all likeyhood the crash is due to my own code - but there are couple of things that make me wonder if it could be Win32-GUI. The crash happens relatively rarely, and I've yet to produce a repeatable test case - so it's not really worth me explaining what I'm doing - other than I'm building dynamic windows/controls:) In almost all cases, the crash happens within DoEvent_Paint - see a tracing below. The one really interesting bit, is sometimes - just before a crash - the following code dies: $line->[2]=$mw->AddCombobox( -name => 'combo', -dropdownlist => 1, -left => 100+8, -top =>$top, -width => $sliderwidth-16, -height => 100, -onChange => \&__Change, -onDropDown => \&__DropDown, -onCloseUp => \&__CloseUp, ); die 'no parent' unless $line->[2]->GetParent; Now, how could this Combobox be created without GetParent returning something? Any thoughts? Cheers, jez. perl.exe caused an Access Violation at location 280651d9 in module perl58.dll Reading from location 50272c39. Registers: eax=50272c31 ebx=0b3b2f1c ecx=000000ff edx=00000500 esi=0b3b2f1c edi=002343ac eip=280651d9 esp=0140f81c ebp=0140f828 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: 280651D9 perl58.dll:280651D9 Perl_sv_setsv_flags 2803E3AE perl58.dll:2803E3AE Perl_sv_compile_2op 280602FE perl58.dll:280602FE Perl_runops_standard 233B7816 GUI.dll:233B7816 DoEvent_Paint(interpreter*, tagPERLWIN32GUI_USERDATA*) GUI_Events.cpp:935 int32 DoEvent_Paint(interpreter*, tagPERLWIN32GUI_USERDATA*)( PerlInterpreter * my_perl = &(indirect), LPPERLWIN32GUI_USERDATA perlud = &(indirect) ) .... PUTBACK; count = call_sv(*event, G_EVAL|G_ARRAY); > SPAGAIN; if(!ProcessEventError(NOTXSCALL "Paint", &PerlResult)) { if(count > 0) PerlResult = POPi; .... 23472A45 GUI.dll:23472A45 Window_onEvent(interpreter*, tagPERLWIN32GUI_USERDATA*, unsigned, unsigned, long) Window.xs:265 int32 Window_onEvent(interpreter*, tagPERLWIN32GUI_USERDATA*, unsigned, unsigned, long)( PerlInterpreter * my_perl = &(indirect), LPPERLWIN32GUI_USERDATA perlud = &(indirect), UINT uMsg = 15, WPARAM wParam = 0, LPARAM lParam = 0 ) .... * (@)APPLIES_TO:Window, DialogBox, MDIFrame */ > PerlResult = DoEvent(NOTXSCALL perlud, PERLWIN32GUI_NEM_CONTROL8, >"InitMenu", PERLWIN32GUI_ARGTYPE_INT, (int) wParam, -1 ); .... 233BFD2F GUI.dll:233BFD2F WindowMsgLoop(HWND__*, unsigned, unsigned, long) GUI_MessageLoops.cpp:642 LRESULT WindowMsgLoop(HWND__*, unsigned, unsigned, long)( HWND hwnd = &(indirect), UINT uMsg = 15, WPARAM wParam = 0, LPARAM lParam = 0 ) .... { HV *dropfiles_stash = gv_stashpv("Win32::GUI::DropFiles", 0); if(dropfiles_stash) { /* Win32::GUI::DropFiles is available */ > PerlResult = DoEvent(NOTXSCALL perlud, >PERLWIN32GUI_NEM_DROPFILE, "DropFiles", PERLWIN32GUI_ARGTYPE_SV, CreateObjectWithHandle(NOTXSCALL "Win32::GUI::DropFiles", (HWND)wParam), -1); .... 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 77D496C7 USER32.dll:77D496C7 DispatchMessageA 23394F07 GUI.dll:23394F07 XS_Win32__GUI_Dialog(interpreter*, cv*) GUI.xs:1089 void XS_Win32__GUI_Dialog(interpreter*, cv*)( PerlInterpreter * my_perl = &(indirect), CV * cv = &(indirect) ) .... ){ TranslateMessage(&msg); > DispatchMessage(&msg); } } .... 28041DCB perl58.dll:28041DCB Perl_sv_compile_2op 280602FE perl58.dll:280602FE Perl_runops_standard 2808C804 perl58.dll:2808C804 RunPerl 00401012 perl.exe:00401012 7C816D4F kernel32.dll:7C816D4F RegisterWaitForInputIdle |