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

new topic     » topic index » view message » categorize

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];

new topic     » goto parent     » topic index » view message » categorize

3. RE: blows up

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" smile

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?  smile

Ok, so that's the only down side to 2.4OR for sure.
Check out the new way to call virtual functions smile
VERY NICE, finally!!

Take care for now,
Al

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu