1. RE: blows up
- Posted by Matt Lewis <matthewwalkerlewis at yahoo.com> Aug 08, 2003
- 415 views
Yup. What were you doing? > -----Original Message----- > From: George Walters [mailto:gwalters at sc.rr.com] > > EXW caused an invalid page fault in > module USER.EXE at 0008:0000185f. > Registers: > EAX=00000000 CS=1757 EIP=0000185f EFLGS=00000296 > EBX=16a73d76 SS=19ff ESP=00008440 EBP=00568480 > ECX=00000010 DS=1687 ESI=00029538 FS=327f > EDX=00000000 ES=00f7 EDI=a00f0006 GS=0000 > Bytes at CS:EIP: > 67 8b 46 58 80 e4 fe 67 89 46 58 67 8b 46 58 a8
2. RE: blows up
- Posted by Matt Lewis <matthewwalkerlewis at yahoo.com> Aug 08, 2003
- 378 views
> From: George Walters [mailto:gwalters at sc.rr.com] > > Don't know anything in particular. I was using Medit to debug a report > program and trying to get the "cr" to execute the default > button to launch > it... You're clearly using Euphoria 2.3 (since 2.4 traps machine level exceptions). What you can do to get a real error report, is put the following code into MEditor (it's in a file called exceptions.ew on my system--I'm just now upgrading to 2.4). Then Pete can at least have an idea of where MEditor is crashing. -- exceptions include dll.e constant k32 = open_dll("kernel32.dll"), xSetUnhandledExceptionFilter = define_c_func( k32, "SetUnhandledExceptionFilter", {C_POINTER}, C_POINTER ) without trace include get.e global atom the_ptr, traceback traceback = 1 the_ptr = 0 constant EXCEPTION_EXECUTE_HANDLER = 1, EXCEPTION_CONTINUE_EXECUTION = 0, EXCEPTION_CONTINUE_SEARCH = -1 function exception( atom ex ) atom record, context, params record = peek4u( ex ) puts(1,"Exception:\n") while record do printf(1,"Code:\t%08x\nFlags:\t%08x\nnext:\t%08x\nAddr:\t%08x\nParams:\t%d\n ", peek4u({record,6})) params = peek4u(record+16) for i = 1 to params do printf(1,"param[%d]:\t%08x\n", {i,peek4u( record + 16 + i*4 )}) end for record = peek4u(record+8) end while context = peek4u( ex + 4 ) ? peek({context,10}) puts(1,"Press any key to continue\n") if wait_key() then end if if traceback then ? 1/0 end if return EXCEPTION_EXECUTE_HANDLER end function if c_func( xSetUnhandledExceptionFilter, {call_back(routine_id("exception"))}) then end if --typedef struct _EXCEPTION_POINTERS { --PEXCEPTION_RECORD ExceptionRecord; --PCONTEXT ContextRecord; --typedef struct _EXCEPTION_RECORD { --DWORD ExceptionCode; --DWORD ExceptionFlags; --struct _EXCEPTION_RECORD* ExceptionRecord; --PVOID ExceptionAddress; --DWORD NumberParameters; --ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
3. RE: blows up
- Posted by Al Getz <Xaxo at aol.com> Aug 09, 2003
- 397 views
Matt Lewis wrote: > > > You're clearly using Euphoria 2.3 (since 2.4 traps machine level > exceptions). What you can do to get a real error report, is put the > following code into MEditor (it's in a file called exceptions.ew on > > As Derek would say, "clear as mud" 2.4 doesnt trap every *single* machine level exception. Apparently, only the ones generated when Euphoria tries to do something in invalid memory, but not always when Windows tries to do something in invalid memory space. Aren't you glad you're updating? Ok, so that's the only down side to 2.4OR for sure. Check out the new way to call virtual functions VERY NICE, finally!! Take care for now, Al