Date: Fri, 14 Feb 2003 00:56:56 +1100 (EST) From: Bruce Evans <bde@zeta.org.au> To: Milo Hyson <milo@cyberlifelabs.com> Cc: FreeBSD Emulation List <freebsd-emulation@FreeBSD.ORG> Subject: Re: Working on IBM JDK fix Message-ID: <20030213235848.P3145-100000@gamplex.bde.org> In-Reply-To: <3E4B29FB.6030801@cyberlifelabs.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 12 Feb 2003, Milo Hyson wrote: > I've found a little more info on this issue. Here's a dump from > /var/log/messages. These lines start pouring in as soon as the JVM tries > to exit. > > Feb 12 21:07:27 beastie /kernel: kernel trap 26 with interrupts disabled > ... I think you are right that this has something to do with the LDT. The "kernel trap 26 with interrupts disabled" message is caused by the kernel slightly mishandling loading of invalid segment registers (%de/%es/%fs only) in doreti. It is supposed to silently convert the trap for this to a SIGBUS, but it actually does this unsilently. Anyway, applications can easily cause endless errors from this by shooting away LDT entries while still using them, and catching SIGBUS without fixing up the problem. The SIGBUS handler returns via sigreturn() which triggers another SIGBUS at the same %eip if it attempts to reload an invalid segment descriptor. > Feb 12 21:07:27 beastie /kernel: kernel trap 12 with interrupts disabled I can't explain this. The kernel has some more bugs in this area. It does too much of the trap handling with interrupts disabled (or locks held in -current). -current with WITNESS detects some of the bugs and may panic for invalid %gs's at context switch time. It used to panic for an invalid %gs due to not clearing it in execve() together with freeing the user LDT. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-emulation" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030213235848.P3145-100000>