From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Andrew Bird (Sphere Systems)" Subject: Re: Crash on app startup with cpuemu=vm86(corrected) Date: Mon, 26 Oct 2009 08:53:49 +0000 Message-ID: <200910260853.50634.ajb@spheresystems.co.uk> References: <1390946726-1256496427-cardhu_decombobulator_blackberry.rim.net-276119471-@bda667.bisx.prod.on.blackberry> <200910252340.13280.ajb@spheresystems.co.uk> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-msdos-owner@vger.kernel.org List-ID: Content-Type: Text/Plain; charset="us-ascii" To: Bart Oldeman , linux-msdos@vger.kernel.org Hi Bart, The original crash report was against SVN 1988, I've pasted it in below for ease. Do I need to post the whole thing, or is this segment enough? What should I do next to help fix the problem? Unfortunately I can't post or pass on the executable that caused it. Thanks, Andrew EMU86: directly calling int 0x10 ax=0x20e at 0xf800:0x6330 SetSeg REAL CS:f800 SetSeg REAL SS:2390 SetSeg REAL DS:2390 SetSeg REAL ES:b800 SetSeg REAL FS:0000 SetSeg REAL GS:0000 INTERP: enter=000fe330 SetSeg REAL CS:f000 INTERP: exit=000fc010 err=13 EMU86: retval=VM86_UNKNOWN Sys timers d=0 Do INT0x10: Using caller_function() 3d4 { 40e 3d4 { 820f SetSeg REAL CS:1091 SetSeg REAL SS:2390 SetSeg REAL DS:2390 SetSeg REAL ES:b800 SetSeg REAL FS:0000 SetSeg REAL GS:0000 INTERP: enter=000109a6 SetSeg REAL CS:0d69 ** JMP: ignored SetSeg REAL CS:901f SetSeg REAL CS:1be6 ** JMP: ignored SetSeg REAL CS:958f SetSeg REAL CS:10f6 SetSeg REAL CS:958f leavedos(47810|0xbac2) called - shutting down killed while in vm86(), trying to dump DOS-registers: Program=emu.c, Line=492 EIP: 1091:00000096 ESP: 2390:0000e9a2 VFLAGS(b): 00000 00110010 01000110 EAX: 0104020e EBX: 00000000 ECX: 00000050 EDX: 00000e22 VFLAGS(h): 00003246 ESI: 0000ebe4 EDI: 00000904 EBP: 0000e9a8 DS: 2390 ES: b800 FS: 0000 GS: 0000 FLAGS: PF ZF IF RF VM VIF IOPL: 3 STACK: 1c 00 00 00 96 00 91 10 46 32 -> 97 32 90 23 90 23 d4 ec 5c 08 OPS : 03 90 8a f0 33 db b4 02 cd 10 -> 9d 07 1f 5d ca 0a 00 00 00 00 9d 1091:0096 popf closing debugger pipes On Monday 26 October 2009, Bart Oldeman wrote: > On Sun, Oct 25, 2009 at 7:40 PM, Andrew Bird (Sphere Systems) > > wrote: > > My understanding of $_cpu_emu=vm86 is that it's also simulated by > > software, just that it's done on demand and cached. > > You are 100% right here. Chunks of vm86 code are translated to 64-bit > native long mode code and then executed. With vm86sim the code is > interpreted instead of translated. > > On i386 kernels, DOSEMU can use the vm86 syscall which is native, but > on x86-64 it can't, at least without a special kernel module > (http://v86-64.sourceforge.net/) which switches the CPU from long to > legacy mode and back, somewhat tricky. > > What you are running into is a bug in DOSEMU, where it uses a JIT > emulator to execute vm86 code (the default on x86-64, and also used > when $_cpu_emu="off" there). The bug is not present in the slower, but > sometimes more reliable simulator. You could try current SVN to see if > it fixed it, because there have been quite a few emulator fixes. I'm > sorry I haven't had time to do a new release so far. > > Bart >