musl - an implementation of the standard library for Linux-based systems
Go to file
Rich Felker 36b72cd6fd fix potential deadlock in dlerror buffer handling at thread exit
ever since commit 8f11e6127f introduced
the thread list lock, this has been wrong. initially, it was wrong via
calling free from the context with the thread list lock held. commit
aa5a9d15e0 deferred the unsafe free but
added a lock, which was also unsafe. in particular, it could deadlock
if code holding freebuf_queue_lock was interrupted by a signal handler
that takes the thread list lock.

commit 4d5aa20a94 observed that there
was a lock here but failed to notice that it's invalid.

there is no easy solution to this problem with locks; any attempt at
solving it while still using locks would require the lock to be an
AS-safe one (blocking signals on each access to the dlerror buffer
list to check if there's deferred free work to be done) which would be
excessively costly, and there are also lock order considerations with
respect to how the lock would be handled at fork.

instead, just use an atomic list.
2022-10-19 14:01:32 -04:00
arch re-enable vdso clock_gettime on arm (32-bit) with workaround 2022-09-19 13:21:54 -04:00
compat/time32 remove LFS64 symbol aliases; replace with dynamic linker remapping 2022-10-19 14:01:31 -04:00
crt remove unnecessary and problematic _Noreturn from crt/ldso startup 2019-06-25 19:05:40 -04:00
dist
include remove LFS64 programming interfaces (macro-only) from _GNU_SOURCE 2022-10-19 14:01:31 -04:00
ldso remove LFS64 symbol aliases; replace with dynamic linker remapping 2022-10-19 14:01:31 -04:00
src fix potential deadlock in dlerror buffer handling at thread exit 2022-10-19 14:01:32 -04:00
tools fix incorrect escaping in add-cfi.*.awk scripts 2020-01-20 15:57:29 -05:00
.gitignore remove obsolete gitignore rules 2016-07-06 00:21:25 -04:00
.mailmap update contributor name 2019-12-07 12:21:35 -05:00
configure configure: disable TBAA optimization because most compilers are buggy 2022-10-19 14:01:31 -04:00
COPYRIGHT add optimized aarch64 memcpy and memset 2020-06-26 17:49:51 -04:00
dynamic.list fix regression in access to optopt object 2018-11-19 13:20:41 -05:00
INSTALL fix typo in INSTALL 2020-11-29 00:46:38 -05:00
Makefile make mallocng the default malloc implementation 2020-06-30 15:38:27 -04:00
README
VERSION release 1.2.3 2022-04-07 13:12:40 -04:00
WHATSNEW release 1.2.3 2022-04-07 13:12:40 -04:00

    musl libc

musl, pronounced like the word "mussel", is an MIT-licensed
implementation of the standard C library targetting the Linux syscall
API, suitable for use in a wide range of deployment environments. musl
offers efficient static and dynamic linking support, lightweight code
and low runtime overhead, strong fail-safe guarantees under correct
usage, and correctness in the sense of standards conformance and
safety. musl is built on the principle that these goals are best
achieved through simple code that is easy to understand and maintain.

The 1.1 release series for musl features coverage for all interfaces
defined in ISO C99 and POSIX 2008 base, along with a number of
non-standardized interfaces for compatibility with Linux, BSD, and
glibc functionality.

For basic installation instructions, see the included INSTALL file.
Information on full musl-targeted compiler toolchains, system
bootstrapping, and Linux distributions built on musl can be found on
the project website:

    http://www.musl-libc.org/