Bugzilla – Bug 458230
thunderbird hangs in FUTEX_WAIT_PRIVATE after several hours
Last modified: 2011-04-02 00:40:08 UTC
after some hours (over night) thunderbird hangs in FUTEX_WAIT_PRIVATE and does not recover. sassmann@erdberry:~> ps fax |grep thunderbird 8983 ? S 0:00 /bin/sh /usr/bin/thunderbird 8985 ? Sl 5:26 \_ /usr/lib64/thunderbird/thunderbird-bin sassmann@erdberry:~> strace -p 8985 Process 8985 attached - interrupt to quit futex(0x7f99740013dc, FUTEX_WAIT_PRIVATE, 140283, NULL
same thing happened for pidgin strace -p 9075 Process 9075 attached - interrupt to quit futex(0x7ffd00009db0, FUTEX_WAIT_PRIVATE, 2, NULL probably a kernel issue, reassigning to kernel-maintainers What info do you need for debugging?
Probably not a kernel bug but a deadlock in thunderbird.
Here is a small test program that will deadlock under suse kernel 2.6 but normal under kernel.org 's 2.6 .. see ctime-hang.c #include <sys/time.h> #include <time.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> volatile char *r; void handler(int sig) { time_t t; time(&t); r = ctime(&t); } int main() { struct itimerval it; struct sigaction sa; time_t t; int counter = 0; memset(&sa, 0, sizeof(sa)); sa.sa_handler = handler; sigaction(SIGALRM, &sa, NULL); it.it_value.tv_sec = 0; it.it_value.tv_usec = 1000; it.it_interval.tv_sec = 0; it.it_interval.tv_usec = 1000; setitimer(ITIMER_REAL, &it, NULL); while(1) { counter++; time(&t); r = ctime(&t); printf("Loop %d\n",counter); } return 0; } ----------------------------------------------------------------------- Reference Links: http://ubuntuforums.org/showthread.php?t=675821
This is under vanilla kernel 2.6.30-rc8-git4 and Milestone 2 Factory updated this evening. See my submitted bug #487060 for another flavour of this bug slipstream:/usr/src # strace ./ctime-hang execve("./ctime-hang", ["./ctime-hang"], [/* 99 vars */]) = 0 brk(0) = 0x602000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb3a432e000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb3a432d000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=330205, ...}) = 0 mmap(NULL, 330205, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb3a42dc000 close(3) = 0 open("/lib64/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\353\1\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1412656, ...}) = 0 mmap(NULL, 3520584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb3a3db6000 fadvise64(3, 0, 3520584, POSIX_FADV_WILLNEED) = 0 mprotect(0x7fb3a3f09000, 2093056, PROT_NONE) = 0 mmap(0x7fb3a4108000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x152000) = 0x7fb3a4108000 mmap(0x7fb3a410d000, 18504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb3a410d000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb3a42db000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb3a42da000 arch_prctl(ARCH_SET_FS, 0x7fb3a42da6f0) = 0 mprotect(0x7fb3a4108000, 16384, PROT_READ) = 0 mprotect(0x600000, 4096, PROT_READ) = 0 mprotect(0x7fb3a432f000, 4096, PROT_READ) = 0 munmap(0x7fb3a42dc000, 330205) = 0 rt_sigaction(SIGALRM, {0x4006bc, [], SA_RESTORER, 0x7fb3a3de88f0}, NULL, 8) = 0 setitimer(ITIMER_REAL, {it_interval={0, 1000}, it_value={0, 1000}}, NULL) = 0 brk(0) = 0x602000 brk(0x623000) = 0x623000 open("/etc/localtime", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb3a432c000 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\7\0\0\0\0"..., 4096) = 3661 --- SIGALRM (Alarm clock) @ 0 (0) --- futex(0x7fb3a410ea14, FUTEX_WAIT, 2, NULL
When run as user rather than root lancelot@slipstream:~> /usr/src/ctime-hang Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 Loop 7 Loop 8 Loop 9 Loop 10 Loop 11 Loop 12 Loop 13 Loop 14 Loop 15 Loop 16 Loop 17 Loop 18 Loop 19 Loop 20 etc.
Read http://en.opensuse.org/Bugs/Definitions#Bug_Priorities
This bug was acted on during Open-Bugs-Day April 2, 2011. The test program was run on kernel 2.6.37.1-1.2-default on openSUSE 11.4 without any problem. I am marking this bug as CLOSED/FIXED.