Bug 3749

Summary: Claws-mail 3.14.1 only runs with LD_PRELOAD=/lib64/libpthread.so.0
Product: Claws Mail (GTK 2) Reporter: Dan <dan76>
Component: OtherAssignee: users
Status: RESOLVED INVALID    
Severity: normal    
Priority: P3    
Version: 3.14.1   
Hardware: PC   
OS: Linux   

Description Dan 2016-12-21 16:23:03 UTC
I'm not sure if it is exactly a bug, but I decided to report just in case. This happens just with Claws (all other GTK2 apps run fine...).

Claws-mail 3.14.1 was running fine (on Linux). Then I made a massive clean up on my system, a huge upgrade and now I'm left with Claws stalling at the start (details below). The workaround was to preload libpthread:

LD_PRELOAD=/lib64/libpthread.so.0 claws-mail

so it seems I'm having a problem linking libpthread. Running it with strace gives me different results each time:

1) fails with "tpp.c:84: __pthread_tpp_change_priority: Assertion `new_prio == -1 || (new_prio >= fifo_min_prio && new_prio <= fifo_max_prio)"

open("/usr/share/locale/en_US/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x7f74ad5e0468, 0x81 /* FUTEX_??? */, 2147483647) = 0
open("/usr/local/share/locale/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/locale/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x7f74abcc50a8, 0x81 /* FUTEX_??? */, 2147483647) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
futex(0x7f74ad5e0468, 0x81 /* FUTEX_??? */, 2147483647) = 0
sched_getparam(11701, { 0 })            = 0
sched_getscheduler(11701)               = 0 (SCHED_OTHER)
sched_get_priority_max(SCHED_FIFO)      = 99
sched_get_priority_min(SCHED_FIFO)      = 1
write(2, "claws-mail: tpp.c:84: __pthread_"..., 148claws-mail: tpp.c:84: __pthread_tpp_change_priority: Assertion `new_prio == -1 || (new_prio >= fifo_min_prio && new_prio <= fifo_max_prio)' failed.
) = 148
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f74b46a1000
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0
getpid()                                = 11701
gettid()                                = 11701
tgkill(11701, 11701, SIGABRT)           = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT +++
Process 11701 detached

***

2) stalls at FUTEX:

access("/usr/xorg/share/X11/locale/en_US.UTF-8/XLC_LOCALE", R_OK) = 0
open("/usr/xorg/share/X11/locale/en_US.UTF-8/XLC_LOCALE", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=4250, ...}) = 0
read(4, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"..., 4096) = 4096
read(4, " \n#\tcs20 class\ncs15\t{\n\tside\t\tGR\n"..., 4096) = 154
read(4, "", 4096)                       = 0
close(4)                                = 0
getresuid([501], [501], [501])          = 0
getresgid([100], [100], [100])          = 0
open("/usr/share/locale/en_US/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x7f450702a468, 0x81 /* FUTEX_??? */, 2147483647) = 0
open("/usr/local/share/locale/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/locale/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x7f450570f0a8, 0x81 /* FUTEX_??? */, 2147483647) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
futex(0x7f450702a468, 0x81 /* FUTEX_??? */, 2147483647) = 0
futex(0x2322250, FUTEX_WAIT, 2, NULL

3) stalls at rt_sigsuspend:

open("/usr/share/locale/en_US/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x7f97589a8468, 0x81 /* FUTEX_??? */, 2147483647) = 0
open("/usr/local/share/locale/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/share/locale/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x7fff0737157c, 0x7 /* FUTEX_??? */, 0) = -1 EPERM (Operation not permitted)
futex(0x7f975708d0a8, 0x81 /* FUTEX_??? */, 2147483647) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
futex(0x7f97589a8468, 0x81 /* FUTEX_??? */, 2147483647) = 0
futex(0x269d250, 0x6 /* FUTEX_??? */, 1) = -1 EDEADLK (Resource deadlock avoided)
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
rt_sigsuspend([]

***

Here's the output of ldd (as you can see, libpthread is here):

        linux-vdso.so.1 (0x00007fff4e6c1000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f11b05a9000)
        libgtk-x11-2.0.so.0 => /usr/local/lib/libgtk-x11-2.0.so.0 (0x00007f11afe79000)
        libgdk-x11-2.0.so.0 => /usr/local/lib/libgdk-x11-2.0.so.0 (0x00007f11afba1000)
        libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0 (0x00007f11af97b000)
        libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0 (0x00007f11af76d000)
        libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0 (0x00007f11af556000)
        libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0 (0x00007f11af32b000)
        libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x00007f11aefdd000)
        libpixman-1.so.0 => /usr/xorg/lib64/libpixman-1.so.0 (0x00007f11aed14000)
        libxcb-shm.so.0 => /usr/xorg/lib64/libxcb-shm.so.0 (0x00007f11aeb11000)
        libxcb-render.so.0 => /usr/xorg/lib64/libxcb-render.so.0 (0x00007f11ae903000)
        libXrender.so.1 => /usr/xorg/lib64/libXrender.so.1 (0x00007f11ae6f9000)
        libXext.so.6 => /usr/xorg/lib64/libXext.so.6 (0x00007f11ae4e4000)
        libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0 (0x00007f11ae291000)
        libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x00007f11ae08f000)
        libfontconfig.so.1 => /usr/xorg/lib64/libfontconfig.so.1 (0x00007f11ade3b000)
        libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x00007f11adc0c000)
        libpng16.so.16 => /usr/local/lib/libpng16.so.16 (0x00007f11ad9d0000)
        libharfbuzz.so.0 => /usr/local/lib/libharfbuzz.so.0 (0x00007f11ad766000)
        libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007f11ad490000)
        libgnutls.so.30 => /usr/local/lib/libgnutls.so.30 (0x00007f11ad167000)
        libidn.so.11 => /usr/local/lib/libidn.so.11 (0x00007f11acf33000)
        libtasn1.so.6 => /usr/local/lib/libtasn1.so.6 (0x00007f11acd1f000)
        libnettle.so.6 => /usr/local/lib/../lib64/libnettle.so.6 (0x00007f11acae3000)
        libhogweed.so.4 => /usr/local/lib/../lib64/libhogweed.so.4 (0x00007f11ac8ae000)
        libgmp.so.10 => /usr/local/lib/libgmp.so.10 (0x00007f11ac628000)
        libSM.so.6 => /usr/xorg/lib64/libSM.so.6 (0x00007f11ac41f000)
        libICE.so.6 => /usr/xorg/lib64/libICE.so.6 (0x00007f11ac202000)
        libstartup-notification-1.so.0 => /usr/local/lib/libstartup-notification-1.so.0 (0x00007f11abff8000)
        libxcb-util.so.1 => /usr/xorg/lib64/libxcb-util.so.1 (0x00007f11abdf2000)
        libX11-xcb.so.1 => /usr/xorg/lib64/libX11-xcb.so.1 (0x00007f11abbf0000)
        libX11.so.6 => /usr/xorg/lib64/libX11.so.6 (0x00007f11ab89f000)
        libxcb.so.1 => /usr/xorg/lib64/libxcb.so.1 (0x00007f11ab677000)
        libpthread-stubs.so.0 => /usr/xorg/lib64/libpthread-stubs.so.0 (0x00007f11ab475000)
        libXau.so.6 => /usr/xorg/lib64/libXau.so.6 (0x00007f11ab271000)
        libXdmcp.so.6 => /usr/xorg/lib64/libXdmcp.so.6 (0x00007f11ab06b000)
        libdbus-glib-1.so.2 => /usr/local/lib/libdbus-glib-1.so.2 (0x00007f11aae40000)
        libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0 (0x00007f11aaa91000)
        libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x00007f11aa88d000)
        libmount.so.1 => /lib64/libmount.so.1 (0x00007f11aa645000)
        libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f11aa403000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f11aa1ff000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f11a9ff7000)
        libdbus-1.so.3 => /usr/local/lib/libdbus-1.so.3 (0x00007f11a9da0000)
        libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x00007f11a9b4c000)
        libffi.so.6 => /usr/local/lib/../lib64/libffi.so.6 (0x00007f11a9941000)
        libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x00007f11a9618000)
        libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x00007f11a93d2000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f11a91b5000)
        libetpan.so.17 => /usr/local/lib/libetpan.so.17 (0x00007f11a8ee2000)
        libstdc++.so.6 => /usr/local/lib/../lib64/libstdc++.so.6 (0x00007f11a8b4c000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f11a8851000)
        libdb-6.1.so => /usr/local/BerkeleyDB/lib/libdb-6.1.so (0x00007f11a8459000)
        libz.so.1 => /usr/local/lib/libz.so.1 (0x00007f11a8242000)
        libsasl2.so.3 => /usr/local/lib/libsasl2.so.3 (0x00007f11a8025000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f11a7e21000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f11a7c0a000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f11a786c000)
        libXinerama.so.1 => /usr/xorg/lib/libXinerama.so.1 (0x00007f11a7669000)
        libXrandr.so.2 => /usr/xorg/lib/libXrandr.so.2 (0x00007f11a745e000)
        libXcursor.so.1 => /usr/xorg/lib/libXcursor.so.1 (0x00007f11a7252000)
        libXcomposite.so.1 => /usr/xorg/lib/libXcomposite.so.1 (0x00007f11a704f000)
        libXdamage.so.1 => /usr/xorg/lib/libXdamage.so.1 (0x00007f11a6e4c000)
        libXfixes.so.3 => /usr/xorg/lib/libXfixes.so.3 (0x00007f11a6c46000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f11b07e0000)
        libgcc_s.so.1 => /usr/local/lib/../lib64/libgcc_s.so.1 (0x00007f11a6a2e000)

Output of --version-full:

Claws Mail version 3.14.1
runtime GTK+ 2.24.31 / GLib 2.50.2
buildtime GTK+ 2.24.31 / GLib 2.50.2
Compiled-in features:
 GnuTLS
 IPv6
 iconv
 libetpan 1.6
 libSM

I even tried to compile with debug symbols and run it through gdb, but since gdb complains about libpthread, the only way to run it is forcing gdb to preload the libpthread (so I can't figure it out why libpthread isn't being linked first of all).

If it's not a bug, sorry about posting it here. I think it's interesting since other GTK2 apps don't show this behaviour. Or maybe I just broke something here. In this case you can close it and I will try the mailing list instead.

Thanks!
Comment 1 Michael Schwendt 2016-12-21 18:30:54 UTC
Just a note: The problem is specific to your installation. Discussing it on the mailing-list would have been the better decision. Don't forget giving more details about what kind of "massive clean up" and "huge upgrade" you've performed. Have you messed with glibc? That's where the tpp.c assertion comes from, btw.
Comment 2 Dan 2016-12-21 18:58:09 UTC
Ok Michael, so I'm closing here and I'll post on the mailing list.

Sorry about that.