diff options
author | Richard Jones <[email protected]> | 2015-09-01 16:41:03 +0100 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2016-01-29 16:54:19 +0100 |
commit | 9bd516dd7e3950f80768030b0e975be4bb1b1648 (patch) | |
tree | 9d0c0baf1febadae5d277cc1efb461413e900fd6 /lib/kernel/doc/src/seq_trace.xml | |
parent | b8c6a1196f0be5a2e98429797b43c24784bcafca (diff) | |
download | otp-9bd516dd7e3950f80768030b0e975be4bb1b1648.tar.gz otp-9bd516dd7e3950f80768030b0e975be4bb1b1648.tar.bz2 otp-9bd516dd7e3950f80768030b0e975be4bb1b1648.zip |
Fix noproc crash during release installation
When release_handler_1:get_supervised_procs/0 does a recursive walk of
the supervision tree, it calls sys:get_status/1 on supervisors, to check
if they are suspended or running.
This fixes a race condition where a list of supervisor pids is gathered,
one of them (legitimately) exits before release_handler can examine it,
then sys:get_status/1 is called with a dead pid, causing an exit(noproc)
See: http://erlang.org/pipermail/erlang-questions/2015-August/085712.html
(To recreate this problem for testing, I added a timer:sleep into the
release_handler_1 code, and killed a supervisor during
get_supervised_procs being called).
Diffstat (limited to 'lib/kernel/doc/src/seq_trace.xml')
0 files changed, 0 insertions, 0 deletions