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



Reply via email to