From 53a487cd5019e7f7e3abee6b4a5e2d0b05aa34c6 Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Mon, 4 Jul 2016 11:56:20 +0200 Subject: erts/kernel: Fix code loading deadlock during init:stop When init:stop is called it walks the application hierarchy and terminates each process. Some of these processes may do something while terminating and sometimes that something needs to load some new code in order to work. When this happens the code_server could just be in the process of terminating or the erl_prim_loader could be active. In both these cases the request to load the new code would cause a deadlock in the termination of the system. This commit fixes this by init rejecting attempts to load new code when init:stop has been called and fixing a termination race in the code_server. This however means that the process that tried to do something when told to terminate (for instance logging that it is terminating) will crash instead of loading the code. --- erts/preloaded/ebin/init.beam | Bin 50048 -> 50036 bytes 1 file changed, 0 insertions(+), 0 deletions(-) (limited to 'erts/preloaded/ebin/init.beam') diff --git a/erts/preloaded/ebin/init.beam b/erts/preloaded/ebin/init.beam index b856bff4fe..f0344fd6ba 100644 Binary files a/erts/preloaded/ebin/init.beam and b/erts/preloaded/ebin/init.beam differ -- cgit v1.2.3