>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