DPMI errors on amd64, but not on i386
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.
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.
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.
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_32and 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]
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.