[uClibc]Re: 2.5.30-rmk1-pxa1 uClibc failures
Christopher Hoover
ch at murgatroid.com
Tue Sep 24 08:09:06 UTC 2002
I have had good success with uClibc <= 0.9.12 on 2.5.x on ARM. In
particular, 2.5.30-rmk1/gcc 3.1/uClibc 0.9.12 works fabulously.
Today I built gcc 3.2/uClibc 0.9.15 and re-compiled my user space. I'm
running the same kernel (i.e. exact same bits in the flash) that ran
well with my previous 0.9.12-based user space. I am seeing some
potential regression.
The first thing that I noticed is that utelnetd crashes when a client
attempts a connection. It worked fine under 0.9.12.
I haven't had a chance to track this down. Details follow.
-ch
ch at murgatroid.com
ch at hpl.hp.com
{client connects, boom!}
utelnetd: unhandled page fault at 0x00000000, code 0xc3eaf007
pgd = c3eac000
[00000000] *pgd=c3da8001, *pte=00000000, *ppte=00000000
pc : [<4002fabc>] lr : [<0000919c>] Not tainted
sp : bffffc48 ip : 4002fab8 fp : bffffca8
r10: 4004fe7c r9 : 00000000 r8 : 00000000
r7 : 00000004 r6 : bffffea4 r5 : bffffeb8 r4 : 00017000
r3 : 00000000 r2 : 000128cc r1 : 00000000 r0 : 000128cc
Flags: nzCv IRQs on FIQs on Mode USER_32 Segment user
Control: C3EAF17F Table: C3EAF17F DAC: 00000015
00009104 <getpty>:
9104: e1a0c00d mov ip, sp
9108: e92dd800 stmdb sp!, {fp, ip, lr, pc}
910c: e24cb004 sub fp, ip, #4 ; 0x4
9110: e24dd054 sub sp, sp, #84 ; 0x54
9114: e50b0010 str r0, [fp, -#16]
9118: ebfffe5d bl 8a94 <_init+0xc0>
911c: e1a03000 mov r3, r0
9120: e50b3054 str r3, [fp, -#84]
9124: e51b3054 ldr r3, [fp, -#84]
9128: e3530000 cmp r3, #0 ; 0x0
912c: aa000004 bge 9144 <getpty+0x40>
9130: e51b0054 ldr r0, [fp, -#84]
9134: ebfffede bl 8cb4 <_init+0x2e0>
9138: e3e03000 mvn r3, #0 ; 0x0
913c: e50b3060 str r3, [fp, -#96]
9140: ea000017 b 91a4 <getpty+0xa0>
9144: e51b0054 ldr r0, [fp, -#84]
9148: ebfffe99 bl 8bb4 <_init+0x1e0>
914c: e1a03000 mov r3, r0
9150: e3530000 cmp r3, #0 ; 0x0
9154: ba000005 blt 9170 <getpty+0x6c>
9158: e51b0054 ldr r0, [fp, -#84]
915c: ebfffe68 bl 8b04 <_init+0x130>
9160: e1a03000 mov r3, r0
9164: e3530000 cmp r3, #0 ; 0x0
9168: ba000000 blt 9170 <getpty+0x6c>
916c: ea000004 b 9184 <getpty+0x80>
9170: e51b0054 ldr r0, [fp, -#84]
9174: ebfffece bl 8cb4 <_init+0x2e0>
9178: e3e03000 mvn r3, #0 ; 0x0
917c: e50b3060 str r3, [fp, -#96]
9180: ea000007 b 91a4 <getpty+0xa0>
9184: e51b0054 ldr r0, [fp, -#84]
9188: ebfffe99 bl 8bf4 <_init+0x220>
918c: e1a03000 mov r3, r0
9190: e51b0010 ldr r0, [fp, -#16]
9194: e1a01003 mov r1, r3
9198: ebfffe15 bl 89f4 <_init+0x20>
lr->
919c: e51b3054 ldr r3, [fp, -#84]
91a0: e50b3060 str r3, [fp, -#96]
91a4: e51b0060 ldr r0, [fp, -#96]
91a8: e91ba800 ldmdb fp, {fp, sp, pc}
init+0x20:
89f4: e59fc004 ldr ip, [pc, #4] ; 8a00
<_init+0x2c>
89f8: e08fc00c add ip, pc, ip
89fc: e59cf000 ldr pc, [ip]
8a00: 00009dec andeq r9, r0, ip, ror #27
Here's the C code for utelnetd.c:getpty():
static int getpty(char *line)
{
struct stat stb;
int p;
int i;
int j;
p = getpt();
if (p < 0) {
DEBUG_OUT("getpty(): couldn't get pty\n");
close(p);
return -1;
}
if (grantpt(p)<0 || unlockpt(p)<0) {
DEBUG_OUT("getpty(): couldn't grant and unlock pty\n");
close(p);
return -1;
}
DEBUG_OUT("getpty(): got pty %s\n",ptsname(p));
strcpy(line, (const char*)ptsname(p));
return(p);
}
More information about the uClibc
mailing list