diff options
Diffstat (limited to 'lib/stdlib/src/supervisor.erl')
-rw-r--r-- | lib/stdlib/src/supervisor.erl | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/stdlib/src/supervisor.erl b/lib/stdlib/src/supervisor.erl index 0d8b5a5ef4..7208068f4e 100644 --- a/lib/stdlib/src/supervisor.erl +++ b/lib/stdlib/src/supervisor.erl @@ -926,6 +926,8 @@ shutdown(#child{pid=Pid, shutdown=brutal_kill} = Child) -> case unlink_flush(Pid, Reason0) of killed -> ok; + shutdown when not (?is_permanent(Child)) -> + ok; {shutdown, _} when not (?is_permanent(Child)) -> ok; normal when not (?is_permanent(Child)) -> @@ -1041,6 +1043,10 @@ wait_dynamic_children(#child{shutdown=brutal_kill} = Child, Pids, Sz, wait_dynamic_children(Child, maps:remove({Pid, Mon}, Pids), Sz-1, TRef, EStack); + shutdown when not (?is_permanent(Child)) -> + wait_dynamic_children(Child, maps:remove({Pid, Mon}, Pids), + Sz-1, TRef, EStack); + {shutdown, _} when not (?is_permanent(Child)) -> wait_dynamic_children(Child, maps:remove({Pid, Mon}, Pids), Sz-1, TRef, EStack); |