Skip to contentSkip to conversation

DPMI errors on amd64, but not on i386

DISCUSSION Javier 2 participants 5 messages Feb 4, 2009 – Feb 7, 2009 1 message not in the archive

lore
Share & tools
lore

Javier

author
#0 lore raw

I'm using dosemu 1.4.0.1 on Debian Lenny (compiled by myself as a 32 bit executable). It works pretty well under a x86_32 2.6.26 kernel, running Windows 3.1 both in 286 & 386 mode, DJGPP, etc.

However, whenever I boot a x86_64 kernel, command.com and the rest of 16-bit applications run fine, but Windows and DJGPP do not.

Windows only successfully boots every 100th time I launch it. Often, it just shows "DPMI: Unhandheld Exception 0d"*. Sometimes it just hangs. After a successful boot, it is also very buggy: Netscape (and most applications) tend to crash due to page faults.

*Forcing 386 mode (win /d /3) results usually in DPMI Exception 06. Forcing 286 mode results in DPMI Exception 0d.
Often, "ERROR: SMALLOC: bad pointer passed to smfree()" appears on dosemu's stderr.

I've tried the Debian packaged 1.4.0.0 amd64 binary, but the result is the same. I've also tried vm86dev for x86_64; "runcom" does indeed work, 16-bit applications are faster, but windows does not boot either.

#1 lore raw
Quoted 4 lines · Javier

Windows only successfully boots every 100th time I launch it. Often, it just shows "DPMI: Unhandheld Exception 0d"*. Sometimes it just hangs. After a successful boot, it is also very buggy: Netscape (and most applications) tend to crash due to page faults.

I'm getting similar results with DPMI on AMD64. According to dosemu.conf DMPI on AMD64 is experimental, so I guess this is to be expected. I have the same problem when CPUEMU is set to full though, so I guess the CPU emulation is also still experimental.

author
#2 lore raw
Quoted 4 lines · Julius Schwartzenberg

I'm getting similar results with DPMI on AMD64. According to dosemu.conf DMPI on AMD64 is experimental, so I guess this is to be expected. I have the same problem when CPUEMU is set to full though, so I guess the CPU emulation is also still experimental.

Please note that I am using the 32-bit binary on both the x86_32 and 64 kernel -- I've no knowledge about how dosemu works, but does it follow a diferent code path on amd64 even if compiled for i386? (apart from x86_64's missing vm86plus syscall).
Because of this, I initially believed I had misconfigured my kernel build, but since I am also having problems with the default 64-bit Debian kernel I guess not.

I've also tried a 64-bit dosemu binary, but same results.

Thanks.

#3 lore raw
Quoted 8 lines · Javier
Quoted 4 lines · Julius Schwartzenberg

I'm getting similar results with DPMI on AMD64. According to dosemu.conf DMPI on AMD64 is experimental, so I guess this is to be expected. I have the same problem when CPUEMU is set to full though, so I guess the CPU emulation is also still experimental.

Please note that I am using the 32-bit binary on both the x86_32 and 64 kernel -- I've no knowledge about how dosemu works, but does it follow a
diferent code path on amd64 even if compiled for i386? (apart from x86_64's missing vm86plus syscall). Because of this, I initially believed I had misconfigured my kernel build, but since I am also having problems with the default 64-bit Debian kernel I guess not.

I suspect the experimental limitation doesn't come from the 32 or 64 bit binary, but from the 64-bits kernel. I understand certain 16-bit mode things aren't possible when the system runs in 64-bit mode, so that's why the emulation is necessary for certain parts then. This emulation feature is still experimental.

A message that is not in the archive (sent off-list or not yet received): [email protected]

#5 lore raw
Quoted 1 line · Alain M.

Have you serached the list archives? I remember there was a message saying that it was fixed post-1.4.0. This means that you will have to compile from sources...

I built a package with the latest SVN tree, but I'm still having these problems.