1. RE: blows up
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
> 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];