Re: Arla 0.42-RC2
[email protected] (Niels Möller)
| Newsgroups | gmane.comp.file-systems.arla.general |
|---|---|
| Message-ID | <[email protected]> |
Tomas Olsson <[email protected]> writes: > > 2006-04-04 15:04:49 CEST: arla: Rec message: opcode = 1 (wakeup), size = 24 > > libgcc_s.so.1 must be installed for pthread_cancel to work > > > > (I configured arla with --with-pthreads). I do have a file > > /lib/libgcc_s.so.1 installed, so this error message seems strange. > > > That message is probably from the pthreads implementation, so I guess we > have a linking problem. Things to try: > > * run with the same flags in gdb and see where it dies Setting a breakpoint on _exit, I got the following backtrace: (gdb) bt #0 0xb7bd2cc0 in _exit () from /lib/tls/libc.so.6 #1 0xb7b92e9c in __libc_fatal () from /lib/tls/libc.so.6 #2 0xb7f2c074 in _Unwind_ForcedUnwind () from /lib/tls/libpthread.so.0 #3 0xb7f2a1c3 in __pthread_unwind () from /lib/tls/libpthread.so.0 #4 0xb7f26bc1 in pthread_exit () from /lib/tls/libpthread.so.0 #5 0x08092845 in LWP_DestroyProcess (pid=0x81115e0) at plwp.c:680 #6 0x08093049 in Create_Process_Part2 (temp=0x81115e0) at plwp.c:903 #7 0xb7f25b63 in start_thread () from /lib/tls/libpthread.so.0 #8 0xb7c0118a in clone () from /lib/tls/libc.so.6 (gdb) According to http://www.redhat.com/archives/phil-list/2003-July/msg00043.html (which describes a bug hopefully fixed long ago), the thread library does use an explicit call do __libc_dlopen in order to use the stack unwind code in libgcc. > * ldd on arlad $ ldd /usr/arla/libexec/arlad libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7f03000) libkafs.so.0 => /usr/lib/libkafs.so.0 (0xb7efb000) libkrb5.so.17 => /usr/lib/libkrb5.so.17 (0xb7ebc000) libasn1.so.6 => /usr/lib/libasn1.so.6 (0xb7e95000) libroken.so.16 => /usr/lib/libroken.so.16 (0xb7e83000) libdb-4.3.so => /usr/lib/libdb-4.3.so (0xb7d9f000) libkrb.so.1 => /usr/lib/libkrb.so.1 (0xb7d82000) libcrypto.so.0.9.7 => /usr/lib/i686/cmov/libcrypto.so.0.9.7 (0xb7c82000) libcrypt.so.1 => /lib/tls/libcrypt.so.1 (0xb7c55000) libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7c52000) libresolv.so.2 => /lib/tls/libresolv.so.2 (0xb7c40000) libc.so.6 => /lib/tls/libc.so.6 (0xb7b0b000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7f19000) libdb-4.1.so => /usr/lib/libdb-4.1.so (0xb7a4a000) libdl.so.2 => /lib/tls/libdl.so.2 (0xb7a46000) > * cd arla-obj/arlad ; rm arlad ; make > to see how it was built $ make arlad ../libtool --mode=link gcc -g -Wall -Wmissing-prototypes -Wpointer-arith -Wmissing-declarations -Wnested-externs -o arlad adir.o arla.o arladeb.o arladebu.o cmcb.o conn.o cred.o d-trans.o disco.o dynroot.o fcache.o fprio.o inter.o kernel.o messages.o poller.o subr.o state.o stats.o volcache.o nnpfs.o bsd-subr.o arlad.o ../lib/bufdir/libbufdir.la -L../rxdef -lrxdefclient -lrxcbserver -L../rx -lrx -L../lwp -llwp -lpthread ../lib/ko/libko.la ../util/libarlautil.la ../lib/vers/libvers.la ../lib/roken/libroken.la ../rxkad/librxkad.la -L/usr/lib -lkrb5 -lkafs -lresolv -lresolv gcc -g -Wall -Wmissing-prototypes -Wpointer-arith -Wmissing-declarations -Wnested-externs -o arlad adir.o arla.o arladeb.o arladebu.o cmcb.o conn.o cred.o d-trans.o disco.o dynroot.o fcache.o fprio.o inter.o kernel.o messages.o poller.o subr.o state.o stats.o volcache.o nnpfs.o bsd-subr.o arlad.o ../lib/bufdir/.libs/libbufdir.a -L/usr/local/src/arla-0.42-RC2/rxdef /usr/local/src/arla-0.42-RC2/rxdef/.libs/librxdefclient.a /usr/local/src/arla-0.42-RC2/rxdef/.libs/librxcbserver.a -L/usr/local/src/arla-0.42-RC2/rx /usr/local/src/arla-0.42-RC2/rx/.libs/librx.a -L/usr/local/src/arla-0.42-RC2/lwp -llwp -lpthread ../lib/ko/.libs/libko.a ../util/.libs/libarlautil.a ../lib/vers/.libs/libvers.a ../lib/roken/.libs/libroken.a ../rxkad/.libs/librxkad.a -L/usr/lib /usr/lib/libkafs.so /usr/lib/libkrb5.so /usr/lib/libasn1.so /usr/lib/libroken.so -ldb /usr/lib/libkrb.so -lcrypto -lcrypt -lcom_err -lreso lv > * read config.log to see what happened Anything in particular I should look for? The configure script looks for pthread_create and sched_yield, and decides that -lpthread is needed for linking. It's puzzling. I also tried strace -f arlad -n, which says: 5357 open("/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) 5357 open("/usr/lib/i686/cmov/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) 5357 open("/usr/lib/i686/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) 5357 open("/usr/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) 5357 write(2, "libgcc_s.so.1 must be installed "..., 59) = 59 5357 exit_group(127) = ? The file /lib/libgcc_s.so.1 exists and is readable, so I really don't understand why open returns ENOENT. Regards, /Niels