A modern, delicious implementation of the Nix package manager, focused on correctness, usability, and growth — and committed to doing right by its community https://lix.systems
Find a file
Eelco Dolstra 524f89f139 Use unshare() instead of clone()
It turns out that using clone() to start a child process is unsafe in
a multithreaded program. It can cause the initialisation of a build
child process to hang in setgroups(), as seen several times in the
build farm:

The reason is that Glibc thinks that the other threads of the parent
exist in the child, so in setxid_mark_thread() it tries to get a futex
that has been acquired by another thread just before the clone(). With
fork(), Glibc runs pthread_atfork() handlers that take care of this
(in particular, __reclaim_stacks()). But clone() doesn't do that.

Fortunately, we can use fork()+unshare() instead of clone() to set up
private namespaces.

See also https://www.mail-archive.com/lxc-devel@lists.linuxcontainers.org/msg03434.html.
2014-08-21 14:08:09 +02:00
config Add config.guess, config.sub and install-sh 2013-11-25 11:26:02 +00:00
corepkgs Use proper quotes everywhere 2014-08-20 18:03:48 +02:00
doc Remove pointless NIX_LOG_TYPE environment variable 2014-08-13 01:19:02 +02:00
misc Install systemd and Upstart stuff only on Linux 2014-07-16 11:53:47 +02:00
mk Merge commit '2aa93858afee22e0c32d8f4366970976374091ac' 2014-08-20 18:44:26 +02:00
perl Use proper quotes everywhere 2014-08-20 18:03:48 +02:00
scripts Use proper quotes everywhere 2014-08-20 18:03:48 +02:00
src Use unshare() instead of clone() 2014-08-21 14:08:09 +02:00
tests Use proper quotes everywhere 2014-08-20 18:03:48 +02:00
.gitignore Install an Upstart service 2014-05-02 13:14:10 +02:00
bootstrap.sh bootstrap: Simplify & make more robust. 2011-09-06 12:11:05 +00:00
configure.ac Remove maybeVfork 2014-07-10 13:35:44 +02:00
COPYING * Change this to LGPL to keep the government happy. 2006-04-25 16:41:06 +00:00
dev-shell Make dev-shell script work on Darwin 2014-07-16 11:53:47 +02:00
INSTALL * Autoconf / Automake configuration and building. 2003-04-04 16:14:56 +00:00
local.mk Install config.h only once 2014-08-20 18:33:07 +02:00
Makefile Install an Upstart service 2014-05-02 13:14:10 +02:00
Makefile.config.in nix-store -l: Fetch build logs from the Internet 2014-05-21 17:19:36 +02:00
nix.spec.in Really fix the RPM builds 2014-05-06 10:51:16 +02:00
README * Install documentation in $(docdir) (i.e. share/doc/nix). 2008-11-19 13:19:09 +00:00
release.nix Add option ‘build-extra-chroot-dirs’ 2014-08-04 18:00:00 +02:00
version Bump version to 1.8 2014-04-11 11:15:24 +02:00

Nix is a purely functional package manager.  For installation and
usage instructions, please read the manual, which can be found in
`docs/manual/manual.html', and additionally at the Nix website at
<http://nixos.org/>.


Acknowledgments

This product includes software developed by the OpenSSL Project for
use in the OpenSSL Toolkit (http://www.OpenSSL.org/).