aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_nif.c
diff options
context:
space:
mode:
authorRichard Jones <[email protected]>2015-09-01 16:41:03 +0100
committerSiri Hansen <[email protected]>2016-01-29 16:54:19 +0100
commit9bd516dd7e3950f80768030b0e975be4bb1b1648 (patch)
tree9d0c0baf1febadae5d277cc1efb461413e900fd6 /erts/emulator/beam/erl_nif.c
parentb8c6a1196f0be5a2e98429797b43c24784bcafca (diff)
downloadotp-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 'erts/emulator/beam/erl_nif.c')
0 files changed, 0 insertions, 0 deletions