kern/85257: [boot] BTX boot loader fails on USB CDROM (HP DL145
Opteron)
Dimitry Andric
dimitry at andric.com
Sun Sep 25 16:10:20 PDT 2005
The following reply was made to PR kern/85257; it has been noted by GNATS.
From: Dimitry Andric <dimitry at andric.com>
To: bug-followup at FreeBSD.org, cwf-ml at arcor.de
Cc:
Subject: Re: kern/85257: [boot] BTX boot loader fails on USB CDROM (HP DL145 Opteron)
Date: Mon, 26 Sep 2005 01:08:17 +0200
------------2B83CD3BE2EF07
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
I get the same kind of error here, using an external USB DVD-RW on a
ThinkPad X41. Usually, I also get the endless scrolling exception
messages, making it impossible to read them.
However, in some cases, it displays exactly ONE exception message,
hangs for a few seconds, and then reboots the machine. In one of
those cases I had my cam ready, resulting in this output:
CD Loader 1.2
int=3D0000000d err=3D0000001a efl=3D00030246 eip=3D00001a46
eax=3D220050d7 ebx=3D00000002 ecx=3D00001000 edx=3D000040f7
esi=3D0000061c edi=3D00000000 ebp=3D0000061c esp=3D00000614
cs=3D0e01 ds=3Ddcf1 es=3Dffff fs=3D0010 gs=3D0000 ss=3Ddcf1
cs:eip=3Dcc 7c bd 8b 45 d8 66 8b-78 30 e9 30 ff ff ff 8d
76 00 31 c0 8d 65 f4 5b-5e 5f c9 c3 b8 ab aa aa
ss:esp=3D50 94 e7 e2 46 02 36 a2-18 00 40 0c 34 00 00 dc
00 10 00 00 ff ff 8b 5b-21 00 00 00 00 00 01 00
BTX halted
Looking at the produced code, it seems to be getting an exception
somewhere at the end of elf32_obj_reloc_ptr:
00005968 <elf32_obj_reloc_ptr>:
5968: 55 push %ebp
5969: 89 e5 mov %esp,%ebp
...
5a47: 85 c0 test %eax,%eax
5a49: 75 1f jne 5a6a <elf32_obj_reloc_ptr+0x=
102>
5a4b: ff 45 cc incl 0xffffffcc(%ebp)
5a4e: 8b 4d c8 mov 0xffffffc8(%ebp),%ecx
5a51: 83 c7 08 add $0x8,%edi
--> 5a54: 39 4d cc cmp %ecx,0xffffffcc(%ebp)
5a57: 7c bd jl 5a16 <elf32_obj_reloc_ptr+0x=
ae>
5a59: 8b 45 d8 mov 0xffffffd8(%ebp),%eax
5a5c: 66 8b 78 30 mov 0x30(%eax),%di
5a60: e9 30 ff ff ff jmp 5995 <elf32_obj_reloc_ptr+0x=
2d>
5a65: 8d 76 00 lea 0x0(%esi),%esi
5a68: 31 c0 xor %eax,%eax
5a6a: 8d 65 f4 lea 0xfffffff4(%ebp),%esp
5a6d: 5b pop %ebx
5a6e: 5e pop %esi
5a6f: 5f pop %edi
5a70: c9 leave
5a71: c3 ret
This seems to be somewhere in this part:
for (n =3D 0; n < ef->relasz / sizeof(a); n++) {
COPYOUT(ef->rela + n, &a, sizeof(a));
error =3D __elfN(reloc)(ef, __elfN(symaddr), &a, ELF_RELOC_RELA,
ef->off, p, val, len);
if (error !=3D 0)
return (error);
}
OTOH, as I look at cs:eip, it seems to be excepting in the middle of
the cmp instruction?? And how a cmp can generate a general protection
fault is beyond me, really. :)
------------2B83CD3BE2EF07
Content-Type: application/pgp-signature
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.1 (MingW32)
iD8DBQFDNy3hsF6jCi4glqMRAs+xAKD2V0zG/2jmYPYHYyRBlorY5/KO9ACgkpA6
rgnhmu3w77LXB+YwiPRqRPE=
=l+An
-----END PGP MESSAGE-----
------------2B83CD3BE2EF07--
More information about the freebsd-bugs
mailing list