I have prelinking enabled (and it works great!). I have excluded /opt/foldingathome/ from prelinking. The foldingathome client works OK, and after finishing a work-unit, it sends the finished unit to the server. It however cannot fetch a new one: the fetching process ends like this: + Attempting to send results - Connecting to server (171.64.122.109:8080) + Attempting to get work packet - Connecting to assignment server foldingathome: dynamic-link.h:57: elf_get_dynamic_info: Assertion `! "bad dynamic tag"' failed. Aborted After performing a "prelink -ua", I can fetch data again normally! The Foldingathome binary is not a dynamic executable, and is NOT prelinked itself. What's wrong (with me?)
My guess is that it still uses dynamic libraries and explicitly opens them with dlopen type functions. Try running it though strace and see which dynamic libraries it tries to open. It isn't a true static binary!! Well that is only my idea, Stefan
Stefan, here's the strace when my box is prelinked but /opt/foldingathome is not: [quote] execve("./foldingathome", ["./foldingathome"], [/* 46 vars */]) = 0 personality(0 /* PER_??? */) = 0 geteuid() = 0 getuid() = 0 getegid() = 0 getgid() = 0 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=2147483647}) = 0 setrlimit(RLIMIT_STACK, {rlim_cur=2040*1024, rlim_max=2147483647}) = 0 getpid() = 8532 uname({sys="Linux", node="rob.gentoo.com", ...}) = 0 rt_sigaction(SIGRTMIN, {0x80a0d18, [], 0}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x80a0c48, [], 0}, NULL, 8) = 0 rt_sigaction(SIGRT_2, {0x80a0d84, [], 0}, NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [RTMIN], NULL, 8) = 0 brk(0) = 0x82d904c brk(0x82d907c) = 0x82d907c brk(0x82da000) = 0x82da000 getpid() = 8532 fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40000000 stat("FAHlog.txt", {st_mode=S_IFREG|0644, st_size=42926, ...}) = 0 open("FAHlog.txt", O_RDWR|O_APPEND|O_CREAT, 0666) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=42926, ...}) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40001000 fstat(3, {st_mode=S_IFREG|0644, st_size=42926, ...}) = 0 _llseek(3, 40960, [40960], SEEK_SET) = 0 read(3, "############################\n###"..., 1966) = 1966 gettimeofday({1041193291, 261494}, NULL) = 0 write(3, "\n\n--- Opening Log file [December"..., 129) = 129 write(3, "################################"..., 80) = 80 write(3, "\n", 1) = 1 write(3, " Folding@H"..., 56) = 56 write(3, "\n", 1) = 1 write(3, " http://fo"..., 57) = 57 write(3, " email:help@"..., 59) = 59 write(3, "\n", 1) = 1 write(3, "################################"..., 80) = 80 write(3, "################################"..., 80) = 80 write(3, "\n", 1) = 1 open("client.cfg", O_RDONLY) = 4 flock(4, LOCK_SH|LOCK_NB) = 0 fstat(4, {st_mode=S_IFREG|0750, st_size=146, ...}) = 0 lseek(4, 0, SEEK_CUR) = 0 fstat(4, {st_mode=S_IFREG|0750, st_size=146, ...}) = 0 read(4, "[settings]\nusername=AlterEgo\ntea"..., 146) = 146 lseek(4, 0, SEEK_CUR) = 146 flock(4, LOCK_UN) = 0 close(4) = 0 write(3, "- Ask before connecting: No\n", 28) = 28 write(3, "- User name: AlterEgo", 21) = 21 write(3, " (Team 92)\n", 11) = 11 open("machinedependent.dat", O_RDONLY) = 4 read(4, "\226K,+\264y\347\36", 8) = 8 close(4) = 0 write(3, "- User ID = 1EE779B42B2C4B96\n", 29) = 29 write(3, "- Machine ID #1\n", 16) = 16 write(3, "\n", 1) = 1 sched_get_priority_max(0) = 0 sched_get_priority_min(0) = 0 write(3, "Benchmarking ...\n", 17) = 17 gettimeofday({1041193291, 283303}, NULL) = 0 gettimeofday({1041193291, 286816}, NULL) = 0 gettimeofday({1041193291, 287215}, NULL) = 0 gettimeofday({1041193291, 289014}, NULL) = 0 gettimeofday({1041193291, 289439}, NULL) = 0 gettimeofday({1041193291, 295770}, NULL) = 0 gettimeofday({1041193291, 296219}, NULL) = 0 gettimeofday({1041193291, 298680}, NULL) = 0 gettimeofday({1041193291, 299109}, NULL) = 0 gettimeofday({1041193291, 313064}, NULL) = 0 gettimeofday({1041193291, 313532}, NULL) = 0 gettimeofday({1041193291, 318082}, NULL) = 0 gettimeofday({1041193291, 318499}, NULL) = 0 gettimeofday({1041193291, 349025}, NULL) = 0 gettimeofday({1041193291, 349490}, NULL) = 0 gettimeofday({1041193291, 358139}, NULL) = 0 gettimeofday({1041193291, 358573}, NULL) = 0 gettimeofday({1041193291, 410772}, NULL) = 0 gettimeofday({1041193291, 411239}, NULL) = 0 gettimeofday({1041193291, 431725}, NULL) = 0 gettimeofday({1041193291, 432192}, NULL) = 0 gettimeofday({1041193291, 530095}, NULL) = 0 gettimeofday({1041193291, 530659}, NULL) = 0 gettimeofday({1041193291, 567165}, NULL) = 0 gettimeofday({1041193291, 567824}, NULL) = 0 gettimeofday({1041193291, 759574}, NULL) = 0 gettimeofday({1041193291, 760045}, NULL) = 0 gettimeofday({1041193291, 828492}, NULL) = 0 gettimeofday({1041193291, 828958}, NULL) = 0 gettimeofday({1041193292, 206123}, NULL) = 0 gettimeofday({1041193292, 206587}, NULL) = 0 gettimeofday({1041193292, 340531}, NULL) = 0 gettimeofday({1041193292, 341048}, NULL) = 0 gettimeofday({1041193293, 90017}, NULL) = 0 gettimeofday({1041193293, 90483}, NULL) = 0 gettimeofday({1041193293, 353588}, NULL) = 0 gettimeofday({1041193293, 354059}, NULL) = 0 gettimeofday({1041193294, 850805}, NULL) = 0 gettimeofday({1041193294, 851276}, NULL) = 0 gettimeofday({1041193295, 376498}, NULL) = 0 gettimeofday({1041193295, 376966}, NULL) = 0 gettimeofday({1041193298, 364761}, NULL) = 0 gettimeofday({1041193298, 365231}, NULL) = 0 gettimeofday({1041193299, 409506}, NULL) = 0 open("/dev/null", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = -1 ENOTDIR (Not a directory) open("work/", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 4 fstat(4, {st_mode=S_IFDIR|0750, st_size=272, ...}) = 0 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 brk(0x82dc000) = 0x82dc000 close(4) = 0 open("queue.dat", O_RDONLY) = 4 read(4, ":\1\0\0", 4) = 4 read(4, "\0\0\0\0\0\0\0\0$\22\242\5\0\0\0\0\255</\260U\202\305\305"..., 6844) = 6844 nanosleep({0, 150000000}, NULL) = 0 close(4) = 0 write(3, "Loaded queue successfully.\n", 27) = 27 brk(0x82de000) = 0x82de000 pipe([4, 5]) = 0 clone(child_stack=0x82dcef0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND) = 8534 write(5, "\0|\257@\5\0\0\0\0~\257@\0\0\0\0\0\200\257@\0\0\0\0\0\202"..., 148) = 148 rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0 write(5, "\300R\r\10\0\0\0\0\4\370\377\277\340\350\4\10P\224-\10"..., 148) = 148 rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0 rt_sigsuspend([] <unfinished ...> --- SIGRTMIN (Unknown signal 32) --- <... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system call) sigreturn() = ? (mask now [RTMIN]) rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0 write(5, "\300R\r\10\0\0\0\0 \370\377\277P\210\4\10\244\207-\10\0"..., 148) = 148 rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0 rt_sigsuspend([] <unfinished ...> --- SIGRTMIN (Unknown signal 32) --- <... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system call) sigreturn() = ? (mask now [RTMIN]) rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0 rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 nanosleep({268435, 0}, foldingathome: dynamic-link.h:57: elf_get_dynamic_info: Assertion `! "bad dynamic tag"' failed. Note: Please read the license agreement (./foldingathome -license). Further use of this software requires that you have read and accepted this agreement. # Linux Console Edition ####################################################### ############################################################################### Folding@Home Client Version 3.14 http://foldingathome.stanford.edu email:help@foldingathome.stanford.edu ############################################################################### ############################################################################### - Ask before connecting: No - User name: AlterEgo (Team 92) - User ID = 1EE779B42B2C4B96 - Machine ID #1 Benchmarking ... Loaded queue successfully. + Attempting to get work packet - Connecting to assignment server 0xbffff6b8) = -1 EINTR (Interrupted system call) --- SIGABRT (Aborted) --- +++ killed by SIGABRT +++ [/quote] The "normal" error message: [quote] ./foldingathome Note: Please read the license agreement (./foldingathome -license). Further use of this software requires that you have read and accepted this agreement. # Linux Console Edition ####################################################### ############################################################################### Folding@Home Client Version 3.14 http://foldingathome.stanford.edu email:help@foldingathome.stanford.edu ############################################################################### ############################################################################### - Ask before connecting: No - User name: AlterEgo (Team 92) - User ID = 1EE779B42B2C4B96 - Machine ID #1 Benchmarking ... Loaded queue successfully. + Attempting to get work packet - Connecting to assignment server foldingathome: dynamic-link.h:57: elf_get_dynamic_info: Assertion `! "bad dynamic tag"' failed. Aborted [/quote] Again, after "prelink -ua", I can normally pick up a new work unit from the server.
Well, if you get te folding@home source and recompile it with uptodate versions of glibc and binutils then all would be ok. But as the source is propieraty then you cannot. There is no workaround. It is not the business of opensource projects to try and always accomodate a closed source executable, will make folding@home block prelink if you like, otherwise I cannot fix it, if I had the source it would be a different matter. This is the same reason why nvidia opengl drivers don't work. Email the folding@home ppl and ask them to recompile for glibc-2.3.1 and 2.13.90.0.1x. Closing the bug, sorry.
Well, updating the F@H 3.24 and prelink-20021213 did not change a thing. There's a workaround (however: this is a bridge too far for me): http://forum.folding-community.org/viewtopic.php?t=2908