Go to file
Rich Felker 1ad049b7b6 fix race condition in rsyscall handler
the problem: there is a (single-instruction) race condition window
between a thread flagging itself dead and decrementing itself from the
thread count. if it receives the rsyscall signal at this exact moment,
the rsyscall caller will never succeed in signalling enough flags to
succeed, and will deadlock forever. in previous versions of musl, the
about-to-terminate thread masked all signals prior to decrementing
the thread count, but this cost a whole syscall just to account for
extremely rare races.

the solution is a huge hack: rather than blocking in the signal
handler if the thread is dead, modify the signal mask of the saved
context and return in order to prevent further signal handling by the
dead thread. this allows the dead thread to continue decrementing the
thread count (if it had not yet done so) and exiting, even while the
live part of the program blocks for rsyscall.
2011-04-03 13:03:18 -04:00
arch remove obsolete and useless useconds_t type 2011-04-01 21:10:01 -04:00
crt cleanup comment cruft in startup code 2011-02-21 22:27:35 -05:00
dist remove -Wno-pointer-sign example from dist/config.mak 2011-03-25 16:50:49 -04:00
include d_fileno alias for d_ino in dirent 2011-04-03 10:24:59 -04:00
lib new solution for empty lib dir (old one had some problems) 2011-02-17 17:12:52 -05:00
src fix race condition in rsyscall handler 2011-04-03 13:03:18 -04:00
tools use -L/...../ -lgcc instead of /...../libgcc.a in musl-gcc wrapper 2011-03-01 12:04:36 -05:00
COPYING initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
COPYRIGHT some docs fixes for x86_64 2011-02-15 14:52:11 -05:00
INSTALL some docs fixes for x86_64 2011-02-15 14:52:11 -05:00
Makefile various changes in preparation for dynamic linking support 2011-02-24 16:37:21 -05:00
README initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
WHATSNEW update release notes 2011-04-01 23:15:29 -04:00

musl libc - a new standard library to power a new generation of
Linux-based devices. musl is lightweight, fast, simple, free, and
strives to be correct in the sense of standards-conformance and
safety.

musl is an alternative to glibc, eglibc, uClibc, dietlibc, and klibc.
For reasons why one might prefer musl, please see the FAQ and libc
comparison chart on the project website,

    http://www.etalabs.net/musl/

For installation instructions, see the INSTALL file.

Please refer to the COPYRIGHT file for details on the copyright status
of code included in musl, and the COPYING file for the license (LGPL)
under which the library as a whole is distributed.



Greetings libc hackers!

This package is an _alpha_ release of musl, intended for the curious
and the adventurous. While it can be used to build a complete small
Linux system (musl is self-hosted on the system I use to develop it),
at this point doing so requires a lot of manual effort. Nonetheless, I
hope low-level Linux enthusiasts will try out building some compact
static binaries with musl using the provided gcc wrapper (which allows
you to link programs with musl on a "standard" glibc Linux system),
find whatever embarassing bugs I've let slip through, and provide
feedback on issues encountered building various software against musl.

Please visit #musl on Freenode IRC or contact me via email at dalias
AT etalabs DOT net for bug reports, support requests, or to get
involved in development. As this has been a one-person project so far,
mailing lists will be setup in due time on an as-needed basis.

Thank you for trying out musl.

Cheers,

Rich Felker / dalias