crash on priviledged instruction

Andreas Mohr Usenet 10/01 a31dgo001 at
Wed Oct 10 02:01:15 CDT 2001

Stefan Leichter <Stefan.Leichter at> wrote:
> Andreas Mohr Usenet 10/01 wrote:
>> Huh ??
>> les si is in no way a privileged instruction !!
>> Could it be that a segment register is zeroed out in this case ?
>> ("info reg")
> Good shot!

> 080689b8:08244058: exception code=80000003
> 080689b8:08243f38: exception code=c0000096
> Unhandled exception: priviledged instruction in 16-bit code (050f:1006).
> In 16-bit mode.
> 0x050f:0x1006: lesw     %es:0x0(%si),%si
> Wine-dbg>info reg
> Register dump:
>  CS:050f SS:09c7 DS:09c7 ES:0000 FS:0000 GS:0000
>  IP:1006 SP:89a4 BP:89bc FLAGS:0246(   - 00  I  Z- -P1 )
>  AX:002c BX:0058 CX:0000 DX:0000 SI:0000 DI:89d0
> Wine-dbg>quit

> The question now is: Where do the SI register become NULL? Is it a good 
> choice to extend the relay logging by the register e.g. ES and SI? Or is it 
> more likely that the code where the register becomes initialized is skipped?

It's NOT SI :-)

It's *ES*:SI.

--> Try to breakpoint winedbg on a location that's slightly *before* the crash
(use --debugmsg +relay in order to find out a suitable address to break on),
and singlestep until the crash occurs. That way you'll hopefully find the place
where a NULL pointer gets loaded into ES:SI.
Or maybe you can even definitely pinpoint the NULL pointer to a place in
the relay trace... (not too likely, though)

Andreas Mohr, Renningen, Germany
In case you need to contact me after expiry of temporary email address:
my real address is (initial of first name).(last name)

More information about the wine-users mailing list