Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 12904 - Folding@Home client cannot fetch new data when prelinking is active
Summary: Folding@Home client cannot fetch new data when prelinking is active
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: Stefan Jones (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-12-29 07:30 UTC by AlterEgo
Modified: 2003-02-04 19:42 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description AlterEgo 2002-12-29 07:30:42 UTC
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?)
Comment 1 Stefan Jones (RETIRED) gentoo-dev 2002-12-29 13:19:26 UTC
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
Comment 2 AlterEgo 2002-12-29 14:26:17 UTC
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. 
Comment 3 Stefan Jones (RETIRED) gentoo-dev 2003-01-04 09:22:42 UTC
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.
Comment 4 AlterEgo 2003-01-04 13:33:04 UTC
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