Opened 14 years ago

Closed 14 years ago

#861 closed Bug (invalid)

transmission-daemon unstable under uclibc environment

Reported by: sala Owned by: charles
Priority: Normal Milestone: None Set
Component: Daemon Version: 1.10
Severity: Normal Keywords:
Cc:

Description

transmission-daemon will not start to listen a tcp port and unix socket is unusable under uclibc 0.9.8 ppc system. I have experienced these problems with 1.10 and 1.11 version.

dsmg600 ~ # strace -f transmission-daemon -s /root/.transmission/daemon/socket
execve("/usr/bin/transmission-daemon", ["transmission-daemon", "-s", "/root/.transmission/daemon/socke"...], [/* 21 vars */]) = 0
mmap(NULL, 20, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30005000
stat("/etc/ld.so.cache", {st_mode=S_IFREG|0644, st_size=5619, ...}) = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
mmap(NULL, 5619, PROT_READ, MAP_SHARED, 3, 0) = 0x30006000
close(3)                                = 0
open("/lib/libnsl.so.0", O_RDONLY)      = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\2,\0\0\0004"..., 4096) = 4096
mmap(NULL, 73728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30016000
mmap(0x30016000, 588, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x30016000
mmap(0x30026000, 4112, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x30026000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/lib/librt.so.0", O_RDONLY)       = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\1\372\0\0\0004"..., 4096) = 4096
mmap(NULL, 73728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30028000
mmap(0x30028000, 528, PROT_READ, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x30028000
mmap(0x30038000, 4112, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x30038000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/lib/libresolv.so.0", O_RDONLY)   = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\0020\0\0\0004"..., 4096) = 4096
mmap(NULL, 73728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3003a000
mmap(0x3003a000, 592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x3003a000
mmap(0x3004a000, 4112, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x3004a000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/usr/lib/libintl.so.8", O_RDONLY) = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0&`\0\0\0004"..., 4096) = 4096
mmap(NULL, 102400, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3004c000
mmap(0x3004c000, 30260, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x3004c000
mmap(0x30063000, 4268, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x7000) = 0x30063000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\362\254\0\0\0004"..., 4096) = 4096
mmap(NULL, 413696, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30065000
mmap(0x30065000, 315332, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x30065000
mmap(0x300c2000, 8000, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x4d000) = 0x300c2000
mmap(0x300c4000, 24520, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x300c4000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/usr/lib/libssl.so.0.9.8", O_RDONLY) = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\331\210\0\0\0004"..., 4096) = 4096
mmap(NULL, 303104, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x300ca000
mmap(0x300ca000, 219796, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x300ca000
mmap(0x3010f000, 17056, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x35000) = 0x3010f000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/usr/lib/libcrypto.so.0.9.8", O_RDONLY) = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\00420\0\0\0004"..., 4096) = 4096
mmap(NULL, 1339392, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30114000
mmap(0x30114000, 1172660, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x30114000
mmap(0x30243000, 83052, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x11f000) = 0x30243000
mmap(0x30258000, 11448, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x30258000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/lib/libdl.so.0", O_RDONLY)       = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0\7h\0\0\0004"..., 4096) = 4096
mmap(NULL, 77824, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3025b000
mmap(0x3025b000, 5608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x3025b000
mmap(0x3026c000, 4172, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x1000) = 0x3026c000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/lib/libm.so.0", O_RDONLY)        = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0AL\0\0\0004"..., 4096) = 4096
mmap(NULL, 147456, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3026e000
mmap(0x3026e000, 69668, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x3026e000
mmap(0x3028f000, 7092, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x11000) = 0x3028f000
mmap(0x30291000, 176, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x30291000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
open("/lib/libpthread.so.0", O_RDONLY)  = 3
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30008000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\24\0\0\0\1\0\0;h\0\0\0004"..., 4096) = 4096
mmap(NULL, 135168, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30292000
mmap(0x30292000, 41396, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x30292000
mmap(0x302ac000, 18404, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0xa000) = 0x302ac000
mmap(0x302b1000, 7952, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x302b1000
close(3)                                = 0
munmap(0x30008000, 4096)                = 0
munmap(0x30006000, 5619)                = 0
mprotect(0x1005f000, 4096, PROT_READ)   = 0
mprotect(0x30026000, 4096, PROT_READ)   = 0
mprotect(0x30038000, 4096, PROT_READ)   = 0
mprotect(0x3004a000, 4096, PROT_READ)   = 0
mprotect(0x30063000, 4096, PROT_READ)   = 0
mprotect(0x300c2000, 4096, PROT_READ)   = 0
mprotect(0x3010f000, 8192, PROT_READ)   = 0
mprotect(0x30243000, 32768, PROT_READ)  = 0
mprotect(0x3026c000, 4096, PROT_READ)   = 0
mprotect(0x3028f000, 4096, PROT_READ)   = 0
mprotect(0x30014000, 4096, PROT_READ)   = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
getpid()                                = 28997
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
setrlimit(RLIMIT_STACK, {rlim_cur=2040*1024, rlim_max=RLIM_INFINITY}) = 0
rt_sigaction(SIGRTMIN, {0x30299528, [], 0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x302993fc, [RTMIN], 0}, NULL, 8) = 0
rt_sigaction(SIGRT_2, {0x30298adc, [], 0}, NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RT_1], NULL, 8) = 0
brk(0)                                  = 0x10068998
brk(0x10069998)                         = 0x10069998
brk(0x1006a000)                         = 0x1006a000
gettimeofday({1207401610, 264414}, NULL) = 0
fork(Process 28998 attached (waiting for parent)
Process 28998 resumed (parent 28997 ready)
)                                  = 28998
[pid 28998] --- SIGSTOP (Stopped (signal)) @ 0 (0) ---
[pid 28998] setsid()                    = 28998
[pid 28998] fork(Process 28999 attached (waiting for parent)
Process 28999 resumed (parent 28998 ready)
)                      = 28999
[pid 28997] exit(0)                     = ?
[pid 28999] --- SIGSTOP (Stopped (signal)) @ 0 (0) ---
[pid 28998] exit(0)                     = ?
Process 28998 detached
open("/dev/null", O_RDWR)               = 3
dup2(3, 0)                              = 0
dup2(3, 1)                              = 1
dup2(3, 2)                              = 2
close(3)                                = 0
stat64("/root", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/root/.transmission", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
mkdir("/root/.transmission/daemon", 0777) = -1 EEXIST (File exists)
open("/root/.transmission/daemon/lock", O_RDWR|O_CREAT|O_LARGEFILE, 0666) = 3
fcntl64(3, F_SETLK64, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}, 0x7fffe518) = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 4
unlink("/root/.transmission/daemon/socket") = 0
bind(4, {sa_family=AF_FILE, path="/root/.transmission/daemon/socket"}, 35) = 0
gettimeofday({1207401610, 302896}, NULL) = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
write(2, "[", 1)                        = 1
write(2, "warn", 4)                     = 4
write(2, "] ", 2)                       = 2
write(2, "epoll_create: Function not imple"..., 38) = 38
write(2, "\n", 1)                       = 1
socketpair(PF_FILE, SOCK_STREAM, 0, [5, 6]) = 0
fcntl(5, F_SETFD, FD_CLOEXEC)           = 0
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
fcntl(5, F_SETFL, O_RDONLY|O_NONBLOCK)  = 0
rt_sigaction(SIGINT, {0x10045fe4, ~[], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGQUIT, {0x10045fe4, ~[], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x10045fe4, ~[], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGHUP, {SIG_IGN}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0
brk(0x1006c000)                         = 0x1006c000
pipe([7, 8])                            = 0
clone(Process 29000 attached
child_stack=0x1006b240, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND) = 29000
PANIC: TCB already set in pid 29000
[pid 29000] clone(Process 2 attached
child_stack=0x1006b240, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND) = 2
[pid 29000] restart_syscall(<... resuming interrupted call ...>) = 7
[pid 28999] write(8, "\0\0\0\0\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 148 <unfinished ...>
[pid 29000] fdatasync(7 <unfinished ...>
[pid 28999] <... write resumed> )       = 148
[pid 29000] <... fdatasync resumed> )   = 268873944
[pid 28999] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid 28999] write(8, "0+\2\300\0\0\0\0\0\0\0\0\20\0\375$\20\6\217\300\200\0\0\0\0\0\0\0\0\0\0\0"..., 148 <unfinished ...>
[pid 29000] exit(268873944)             = ?
Process 29000 detached
[pid 28999] <... write resumed> )       = 148
[pid 28999] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid 28999] rt_sigsuspend([] 

More info:
http://forum.transmissionbt.com/viewtopic.php?t=4508
http://forum.transmissionbt.com/viewtopic.php?p=20954

Change History (7)

comment:1 Changed 14 years ago by charles

  • Owner changed from SoftwareElves to charles

comment:2 Changed 14 years ago by charles

  • Resolution set to invalid
  • Status changed from new to closed

This is a libevent error, not a Transmission one. The "epoll_create: Function not implemented" error you're seeing is being printed by the OS when libevent invokes epoll_create() in libevent, file epoll.c, function epoll_init().

It seems to me that the reason libevent is trying to use epoll is because the configure script seems to just confirm that the functions exist, but doesn't test to see whether they're implemented. I imagine that test would be harder to confirm :)

You need to report this upstream to the libevent bug tracker at https://sourceforge.net/tracker/?group_id=50884&atid=461322

comment:4 Changed 14 years ago by sala

I did'nt think it was libevent related, since this warning has been there for ages and so I have used transmission for quiet some time with this warning. Only now with 1.10 and 1.11 I did run into problems.

comment:5 in reply to: ↑ description Changed 14 years ago by sala

  • Resolution invalid deleted
  • Status changed from closed to reopened

Just I was suspecting, It cant be epoll related problem. I did recompile transmission without epoll support (manually editing libevent's config.h), now epoll warning is gone but daemon is still unstable.

strace output is very similar minus epoll warnings.

comment:6 Changed 14 years ago by KyleK

I've been running Transmission 1.10 cross-compiled with uclibc for ARM for a couple of days now on my NAS device. It runs stable, i.e. there have been no crashes whatsoever, downloading and seeding works as expected. Interaction with Clutch works fine as well. I do, however, have to start transmission-daemon with the -f option. Running in daemon mode does not work, transmission-remote or Clutch cannot attach to the daemon's socket. This problem is described in a separate ticket.

comment:7 Changed 14 years ago by charles

  • Resolution set to invalid
  • Status changed from reopened to closed

Unless someone can quantify "still unstable" this is a meaningless ticket.

Note: See TracTickets for help on using tickets.