summaryrefslogtreecommitdiff
path: root/faq/libpthread_dlopen.mdwn
blob: 3b365fadf8f8098469e1026f08d4a392fc740567 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[[!meta copyright="Copyright © 2013, 2014, 2015 Free Software Foundation,
Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

[[!tag faq/open_issues]]

[[!meta title="Assertion `__pthread_threads' failed"]]

Some applications don't themselves link against libpthread, but then load
plugins which do link against libpthread.  This means internally switching from
single-threading to multi-threading, which is only supported since libc0.3
2.19-16~2. Previously, it would result in errors such as:

    ./pthread/../sysdeps/generic/pt-mutex-timedlock.c:70: __pthread_mutex_timedlock_internal: Assertion `__pthread_threads' failed.

This could be worked around by making the application link against libpthread (i.e. not only the plugin, but also the main binary), or without recompiling by explicitly pre-loading libpthread, for example:

    $ LD_PRELOAD=/lib/i386-gnu/libpthread.so.0.3 [application]

But it should now be gone, simply upgrade libc0.3.