Date: Thu, 27 Feb 2003 10:56:22 -0800 From: Milo Hyson <milo@cyberlifelabs.com> To: Bruce Evans <bde@zeta.org.au> Cc: FreeBSD Emulation List <freebsd-emulation@FreeBSD.ORG> Subject: Re: Working on IBM JDK fix Message-ID: <3E5E5F56.90605@cyberlifelabs.com> References: <20030214033116.F4167-100000@gamplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans wrote:
> % /* allocate user ldt */
> % if (!pldt || largest_ld >= pldt->ldt_len) {
> % struct proc_ldt *new_ldt = user_ldt_alloc(mdp, largest_ld);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> But we use `largest_ld' for the size of the table here.
>
> Try adding 1 here.
No, that doesn't solve the problem. I'm still seeing the same traps.
That's definitely a bug that should be fixed though.
According to the Linux kernel references on modify_ldt(), function codes
0x01 and 0x11 are both used to write a single LDT entry. The only
difference between them is that 0x11 allows control of the
useable/available bit. Both return either 0 on success or -1 on error.
They never return anything but those two values. Looking at the Linux
kernel source confirms this. I'm wondering if the 8190 being returned by
FreeBSD is confusing the JDK into thinking the call failed when in fact
it succeeded.
--
Milo Hyson
CyberLife Labs
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?3E5E5F56.90605>
