Skip site navigation (1)Skip section navigation (2)
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>