From owner-freebsd-emulation Sun Feb 15 19:43:23 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id TAA15913 for freebsd-emulation-outgoing; Sun, 15 Feb 1998 19:43:23 -0800 (PST) (envelope-from owner-freebsd-emulation@FreeBSD.ORG) Received: from sumatra.americantv.com (sumatra.americantv.com [207.170.17.37]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id TAA15885 for ; Sun, 15 Feb 1998 19:43:16 -0800 (PST) (envelope-from jlemon@americantv.com) Received: from right.PCS (right.PCS [148.105.10.31]) by sumatra.americantv.com (8.8.5/8.8.5) with ESMTP id VAA21337; Sun, 15 Feb 1998 21:43:08 -0600 (CST) Received: (from jlemon@localhost) by right.PCS (8.6.13/8.6.4) id VAA07831; Sun, 15 Feb 1998 21:42:37 -0600 Message-ID: <19980215214237.05002@right.PCS> Date: Sun, 15 Feb 1998 21:42:37 -0600 From: Jonathan Lemon To: The Hermit Hacker Cc: emulation@FreeBSD.ORG Subject: Re: wine 980215 References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.61.1 In-Reply-To: ; from The Hermit Hacker on Feb 02, 1998 at 11:05:09PM -0400 Sender: owner-freebsd-emulation@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org On Feb 02, 1998 at 11:05:09PM -0400, The Hermit Hacker wrote: > > This problem seems to be unresolved for the last several releases...I know > nothing at all about assembly, and wouldn't even know where to start, > so...does anyone know of a fix for this? :( > > #0 0x162835 in NtCurrentTeb () at ./sysdeps.c:139 > 139 __asm__( ".byte 0x64\n\tmovl (%1),%0" > (gdb) list > 134 GET_FS( fs ); > 135 if (!fs) return NULL; > 136 GET_DS( ds ); > 137 if (fs == ds) return NULL; /* FIXME: should be an assert */ > 138 /* Get the TEB self-pointer */ > 139 __asm__( ".byte 0x64\n\tmovl (%1),%0" > 140 : "=r" (teb) : "r" (&((TEB *)0)->self) ); > 141 return teb; > 142 #else > 143 if (!pCurrentThread) return NULL; The 0x64 is an override prefix for the aseembly instruction, telling it to compute the displacement from the contents of the FS register. (That is, if I understand this right) EG: in `C', the statement would roughly be: teb = fs->self Quick guess: FS contains garbage at the point where the ASM instruction is being executed. I haven't looked at wine, so I really don't know what it is doing. You'll probably want a register dump to check this - and pass the information to the wine developers. -- Jonathan To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-emulation" in the body of the message