glibc/manual
Florian Weimer 29d794863c malloc: Run fork handler as late as possible [BZ #19431]
Previously, a thread M invoking fork would acquire locks in this order:

  (M1) malloc arena locks (in the registered fork handler)
  (M2) libio list lock

A thread F invoking flush (NULL) would acquire locks in this order:

  (F1) libio list lock
  (F2) individual _IO_FILE locks

A thread G running getdelim would use this order:

  (G1) _IO_FILE lock
  (G2) malloc arena lock

After executing (M1), (F1), (G1), none of the threads can make progress.

This commit changes the fork lock order to:

  (M'1) libio list lock
  (M'2) malloc arena locks

It explicitly encodes the lock order in the implementations of fork,
and does not rely on the registration order, thus avoiding the deadlock.
2016-04-14 09:17:02 +02:00
..
examples Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argp.texi
arith.texi
charset.texi
check-safety.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
conf.texi
contrib.texi
creature.texi
crypt.texi
ctype.texi
debug.texi
dir
errno.texi
fdl-1.3.texi
filesys.texi Deprecate readdir_r, readdir64_r [BZ #19056] 2016-02-20 12:56:55 +01:00
freemanuals.texi
getopt.texi
header.texi
install-plain.texi
install.texi Require Linux 3.2 except on x86 / x86_64, 3.2 headers everywhere. 2016-02-24 17:15:12 +00:00
intro.texi
io.texi
ipc.texi
job.texi
lang.texi
lgpl-2.1.texi
libc-texinfo.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
libc.texinfo Fix doc quoting problems with Texinfo 5 2016-01-10 00:20:51 -08:00
libcbook.texi
libdl.texi
libm-err-tab.pl Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
llio.texi
locale.texi
macros.texi
maint.texi
Makefile Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
math.texi Allow spurious underflow / inexact for ldbl-128ibm. 2016-03-10 23:48:46 +00:00
memory.texi malloc: Run fork handler as late as possible [BZ #19431] 2016-04-14 09:17:02 +02:00
message.texi
nss.texi
nsswitch.texi
pattern.texi
pipe.texi
platform.texi
probes.texi
process.texi Remove union wait [BZ #19613] 2016-04-14 08:54:57 +02:00
resource.texi
search.texi
setjmp.texi
signal.texi
socket.texi
startup.texi
stdio-fp.c
stdio.texi
string.texi
summary.awk Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
sysinfo.texi Make obsolete syscall wrappers into compat symbols (bug 18472). 2015-12-14 22:52:15 +00:00
syslog.texi
terminal.texi
texinfo.tex Update miscellaneous files from upstream sources. 2016-01-05 18:04:06 +00:00
texis.awk
threads.texi
time.texi
tsort.awk Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
users.texi
xtract-typefun.awk Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00