diff options
author | Sverker Eriksson <[email protected]> | 2016-04-01 20:11:34 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-04-01 20:11:34 +0200 |
commit | c048886458ce68280ba32647a93a04902c929988 (patch) | |
tree | 0f61bf30bef3049ebff71b9e566c256b7d07efd7 /lib/stdlib/src/erl_tar.erl | |
parent | 6d4001de141a00b3bf37b8f7b24c5bde2b4f4015 (diff) | |
download | otp-c048886458ce68280ba32647a93a04902c929988.tar.gz otp-c048886458ce68280ba32647a93a04902c929988.tar.bz2 otp-c048886458ce68280ba32647a93a04902c929988.zip |
erts: Fix race for process_flag(trap_exit,true)
and a concurrent exit signal.
We now actually guarantee that the process will not die
from exit signal *after* the call to process_flag(trap_exit,true)
has returned.
The race is narrow and probably quite hard to observe even if you
manage to provoke it. Has only been confirmed with the help of
return trace and a sleep in send_exit_signal().
Solution:
Seize status lock to prevent send_exit_signal() from reading
an old status (without TRAP_EXIT) and then writing PENDING_EXIT
after TRAP_EXIT has been set by process_flag_2().
Diffstat (limited to 'lib/stdlib/src/erl_tar.erl')
0 files changed, 0 insertions, 0 deletions