dosdata.sys from QEMM crashes DOSEMU
Brought to you by:
bartoldeman
When I have DOSDATA.SYS from QEMM in my CONFIG.SYS, DOSEMU crashes with the following output:
ERROR: unexpected CPU exception 0x06 err=0x00000000 cr2=00000000 while in vm86 (DOS)
Program=sigsegv.c, Line=193
EIP: 000a:00000a58 ESP: 9fc9:00000106 VFLAGS(b): 00000 00000111 10010010
EAX: 0000ff8e EBX: 0000f000 ECX: 00000000 EDX: 00004cc9 VFLAGS(h): 00000792
ESI: 00000119 EDI: 00000070 EBP: 00000200 DS: 0070 ES: 0000 FS: 0000 GS: 0000
FLAGS: AF SF TF IF DF RF VM VIF IOPL: 0
STACK: 00 9c 46 32 0d 0a 0a 00 26 83 -> 7d 20 00 c3 e8 3f f0 33 f6 e8
OPS : 00 00 00 00 00 00 00 00 00 00 -> ff ff ff ff ff 4e 4f 20 4e 41
ff 000a:0a58 db FF
This is with the current version from GIT and MS-DOS 6.22.
While in theory this could work, I wonder
why should we care...
Is this on 32 or 64bit system?
Should be checked on 32.
On a 32-bit bit system, the driver errors out with a message it should be the first loaded driver. DOSEMU doesn't crash.
(Also QEMM detects correctly now that it's running on an 80386, this does not work on my 64-bit system.)
It's on a 64-bit system. I don't think it's very important, but I suppose that DOSEMU shouldn't crash. That's the reason I reported the bug.
Then it is probably a cpuemu bug...
Don't count on a quick fix. :)
And what it detects under 64bit?
It just says it needs a 386. I've attached a screenshot. I'm not sure how its detection routines work.
This is a cpuemu bug then.
I guess maybe popf (or pushf) doesn't work
as expected wrt IOPL and NT parts of the flag
register. The tests for 386 usually involve this.
Can you set cpu to 286 in dosemu.conf and
see will there be the same error on 32bit system?
With the CPU set to 286, it seems the error is not the same. There is a report about the CPU already being in virtual-8086 mode, but I do not get the message it needs a 386.