diff options
author | Siri Hansen <[email protected]> | 2018-07-06 15:27:42 +0200 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2018-07-13 12:20:26 +0200 |
commit | 0a4834e59f2aac7b76331410bcee641d375d8ec0 (patch) | |
tree | a81ce74a20a33777f5f5c2d45cb908b6bf560b74 /lib/kernel/src/error_logger.erl | |
parent | 4ae5136ccb68bed0e72e1f45d34d1a8b44594590 (diff) | |
download | otp-0a4834e59f2aac7b76331410bcee641d375d8ec0.tar.gz otp-0a4834e59f2aac7b76331410bcee641d375d8ec0.tar.bz2 otp-0a4834e59f2aac7b76331410bcee641d375d8ec0.zip |
[kernel] Reduce risk of dead lock when terminating logger_sup
Diffstat (limited to 'lib/kernel/src/error_logger.erl')
-rw-r--r-- | lib/kernel/src/error_logger.erl | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/kernel/src/error_logger.erl b/lib/kernel/src/error_logger.erl index a7e7f19167..ad8c937882 100644 --- a/lib/kernel/src/error_logger.erl +++ b/lib/kernel/src/error_logger.erl @@ -74,8 +74,8 @@ start() -> type => worker, modules => dynamic}, case supervisor:start_child(logger_sup, ErrorLogger) of - {ok,_} -> - ok; + {ok,Pid} -> + ok = logger_handler_watcher:register_handler(?MODULE,Pid); Error -> Error end; @@ -95,9 +95,14 @@ start_link() -> %%% Stop the event manager -spec stop() -> ok. stop() -> - _ = supervisor:terminate_child(logger_sup,?MODULE), - _ = supervisor:delete_child(logger_sup,?MODULE), - ok. + case whereis(?MODULE) of + undefined -> + ok; + _Pid -> + _ = gen_event:stop(?MODULE,{shutdown,stopped},infinity), + _ = supervisor:delete_child(logger_sup,?MODULE), + ok + end. %%%----------------------------------------------------------------- %%% Callbacks for logger |