>Message-ID: <[EMAIL PROTECTED]>
>Date: Tue, 16 Nov 1999 01:56:52 +0000
>From: Marcel Landman <[EMAIL PROTECTED]>

>Sorry, I wasn't very clear. I mean I crash at a different point when
>then when I was using the .rpm version of 0.98.8. The above crash was
>with 0.98.8 I installed from source.

This can be result of jump to address which is not valid
code address. Futher results usually depend on even small
differences of data which is at the address.

>Yes, the instructions prior to that:
>ffff:cd10 0000             add     [bx+si],al
...
>ffff:cd1a D805             fadd    dword ptr [di]

... in such a case you cannot even know what was target
offset of the jump (how many "add [bx+si],al" was done).

>Looks like a cpu racing around in a data area. Here is the stack:
>0669:0860 8C 6A 32 E7 02 00 05 00 00 00 86 8A 46 32 FF FF 
                       AX... BX... CX... DX... SI... DI...
>0669:0870 01 00 69 06 1D 08 30 CD FF FF 03 32 65 D1 2E D0 
           BP... DS... ES... IP?.. CS... flags ^SP
>0669:0880 00 26 04 00 00 00 70 CB FF FF 00 00 00 00 00 00 

but I am unable to find anything to point to place of the
first error, also in the remaining data from the stack.

>I am new to dosdebug, so you'll have to tell me which flags you want on

I am new to it, too.

>Ok. first the application calls a sub:
>(...)(lots of stuff and then:)
>0615:1a42 E84203           call    1D87
>General Protection Fault, AX=0002  BX=0005  CX=0000  DX=8a86  SI=3246 

And in such a case normal method is to restart it, and trace
into the sub, then execute every sub in it until one causes
the error, then trace into the one, and so on...

>(...)
>Trap 1, AX=1100  BX=0000  CX=000e  DX=2f21  SI=00c5  DI=0000  SP=7f42 
>BP=7f48
>DS=2a5f  ES=2932  FS=0000  GS=0000  FL=3302 
>CS:IP=0615:19ea       SS:SP=2a5f:7f42
>0615:19ea CD16             int     16
>General Protection Fault, AX=0002  BX=0005  CX=0000  DX=8a86  SI=3246 
>DI=ffff  SP=087c  BP=0001
>DS=0669  ES=081d  FS=0000  GS=0000  FL=3206
>CS:IP=ffff:cd1a       SS:SP=0669:087c

>right, so it crashes inside int 16... I look at 0:58, which I believe
>to be the interrupt table entry for int 16 and use the address there
>for my next break point:
>bp 615:1a42
>bp 70:42d

I guess the 70:42d is address where INT 16 points to, ok?

>tc
>...
>Trap 1, AX=4b00  BX=0082  CX=0000  DX=00bc  SI=5861  DI=05f9  SP=028a 
>BP=7dce
>DS=0605  ES=0605  FS=0000  GS=0000  FL=3312
>CS:IP=0605:046b       SS:SP=0605:028a
>
>0605:046b CD21             int     21
>General Protection Fault, AX=0002  BX=0005  CX=0000  DX=8a86  SI=3246 
>DI=ffff  SP=087c  BP=0001
>DS=0669  ES=081d  FS=0000  GS=0000  FL=3206
>CS:IP=ffff:cd1a       SS:SP=0669:087c
...
>Facinating! This program is trying to load & excute another program.

I suppose it is attempt to execute just the program you
are debugging - can you check the name at DS:DX?

Breakpoints works improperly if more than one set?
You did not set bp at 0605:046b - why it occured?
And seems these breakpoints you set were ignored...
Result: breakpoint at unexpected point, and later
crash without any of breakpoints that were set.

Seems like the breakpoint you set did something strange,
maybe you need set one breakpoint at the call, execute
program until the call, then set breakpoint on INT 16?

>ERROR: unexpected CPU exception 0x06 errorcode: 0x00000000 while in vm86

0x06 means "invalid opcode".

Jerzy

Reply via email to