[OpenAFS-devel] *** glibc detected *** free(): invalid pointer: 0xb7e0a010 ***
Harald Barth
haba@pdc.kth.se
Thu, 10 Mar 2005 16:39:25 +0100 (MET)
I'm running bosserver 1.3.79 built on fc3 against
kelp# ldd /usr/openafs/sbin/bosserver
linux-gate.so.1 => (0xffffe000)
libresolv.so.2 => /lib/libresolv.so.2 (0x49d64000)
libc.so.6 => /lib/tls/libc.so.6 (0x49be7000)
/lib/ld-linux.so.2 (0x49bce000)
kelp# ls -l /lib/tls/libc.so.6
lrwxrwxrwx 1 root root 13 Mar 9 17:58 /lib/tls/libc.so.6 -> libc-2.3.4.so
kelp#
When I do a bos restart kelp -local -all on my bosserver started in gdb
kelp# gdb /usr/src/redhat/BUILD/openafs-1.3.79/src/bozo/bosserver
(gdb) run -nofork
Loaded system supplied DSO at 0xffffe000
*** glibc detected *** free(): invalid pointer: 0xb7e0a010 ***
Program received signal SIGABRT, Aborted.
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0x49c0e955 in raise () from /lib/tls/libc.so.6
#2 0x49c10319 in abort () from /lib/tls/libc.so.6
#3 0x49c41f9a in __libc_message () from /lib/tls/libc.so.6
#4 0x49c48528 in _int_free () from /lib/tls/libc.so.6
#5 0x49c48afa in free () from /lib/tls/libc.so.6
#6 0x08062585 in Free_PCB (pid=0x49d0cff4) at ./lwp.c:1002
#7 0x08062c81 in LWP_CreateProcess (ep=0x804c378 <bnode_SoftInt>,
stacksize=-1210015728, priority=2, parm=0x11,
name=0x8075a28 "SignalHandler", pid=0x0) at ./lwp.c:857
#8 0x08063349 in IOMGR (dummy=0x0) at ./iomgr.c:752
#9 0x08062858 in Create_Process_Part2 () at ./lwp.c:783
#10 0x08062fd9 in savecontext (ep=0, savearea=0x49d0e800,
sp=0x14 <Address 0x14 out of bounds>) at ./process.c:197
#11 0x00000001 in ?? ()
(gdb)
(gdb) down
#6 0x08062585 in Free_PCB (pid=0x49d0cff4) at ./lwp.c:1002
1002 free(pid->stack);
(gdb) list
997 Debug(4, ("Entered Free_PCB"));
998 if (pid->stack != NULL) {
999 Debug(0,
1000 ("HWM stack usage: %d, [PCB at 0x%x]",
1001 Stack_Used(pid->stack, pid->stacksize), pid));
1002 free(pid->stack);
1003 }
1004 if (pid->eventlist != NULL)
1005 free(pid->eventlist);
1006 free(pid);
(gdb) print *pid
$1 = {name = "<ÍÐI\226»¿I\000\000\000\000ÀZÎIP«ÄI`¨ÄI\220±ÄI0®ÄI",
rc = 1237174192, status = 112 'p', blockflag = -118 '\212',
eventlistsize = -60 'Ä', padding = 73 'I', eventlist = 0x0, eventcnt = 0,
wakevent = 895, waitcnt = 64, priority = 34, misc = 0x0, stack = 0x0,
stacksize = 0, stackcheck = 0, ep = 0x3,
parm = 0x991539b1 <Address 0x991539b1 out of bounds>, context = {
topstack = 0x16a5bce3 <Address 0x16a5bce3 out of bounds>, setjmp_buffer = {
{__jmpbuf = {1735697613, 1040273694, 1313901226, 1627687941, -179304937,
-2073333483}, __mask_was_saved = 1780058412, __saved_mask = {
__val = {2305464239, 3678992694, 344556628, 939512070, 3045851036,
1507946756, 3482421833, 154635395, 1388815473, 2368290473,
525320961, 3285938622, 968117788, 4171517689, 1284210865,
435012392, 2277460957, 3383902437, 3924708123, 1132637927,
1398500161, 4089365978, 1, 3, 1, 2000, 63, 1, 1, 255, 2,
4294967295}}}}}, lwp_rused = 8, lwp_rlist = {{tag = 0,
value = 0x0}, {tag = 0, value = 0x0}, {tag = 0,
value = 0x3 <Address 0x3 out of bounds>}, {tag = 0, value = 0x0}},
next = 0x0, prev = 0x0, level = 0, iomgrRequest = 0x0, index = 0}
(gdb)
So, what should I do? Use LD_ASSUME_KERNEL with some 2.4.? value to
force some other thread stuff? Some other creative means of debugging?
Harald.
PS: I'm not a big fan of this OS anyway, but if FreeBSD 5.3 "performs"
with 25MB/sec on RAID and with the same 25MB/sec on a 70MB/sec RAED,
what do you do?