Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0599-Do-not-unload-modules-during-stop.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0599-Do-not-unload-modules-during-stop.patch of Package erlang
From 60c744567b1b56360ab02113aeb853b767e11746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@dashbit.co> Date: Wed, 7 Jul 2021 17:03:09 +0200 Subject: [PATCH] Do not unload modules during stop Closes #5031. --- erts/preloaded/src/init.erl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/erts/preloaded/src/init.erl b/erts/preloaded/src/init.erl index 3cf837791a..5b59a9d65f 100644 --- a/erts/preloaded/src/init.erl +++ b/erts/preloaded/src/init.erl @@ -463,7 +463,7 @@ new_kernelpid({_Name,ignore},BootPid,State) -> State; new_kernelpid({Name,What},BootPid,State) -> erlang:display({"could not start kernel pid",Name,What}), - clear_system(BootPid,State), + clear_system(false,BootPid,State), crash("could not start kernel pid", [Name, What]). %% Here is the main loop after the system has booted. @@ -604,7 +604,7 @@ set_flag(_,_,_) -> %%% ------------------------------------------------- %%% Stop the system. -%%% Reason is: restart | reboot | stop +%%% Reason is: restart | {restart, Mode} | reboot | stop %%% According to reason terminate emulator or restart %%% system using the same init process again. %%% ------------------------------------------------- @@ -613,7 +613,8 @@ stop(Reason,State) -> BootPid = State#state.bootpid, {_,Progress} = State#state.status, State1 = State#state{status = {stopping, Progress}}, - clear_system(BootPid,State1), + %% There is no need to unload code if the system is shutting down + clear_system(Reason=/=stop,BootPid,State1), do_stop(Reason,State1). do_stop({restart,Mode},#state{start=Start, flags=Flags0, args=Args}) -> @@ -635,11 +636,11 @@ do_restart(Start,Flags,Args) -> erts_internal:erase_persistent_terms(), boot(Start,Flags,Args). -clear_system(BootPid,State) -> +clear_system(Unload,BootPid,State) -> Heart = get_heart(State#state.kernel), Logger = get_logger(State#state.kernel), shutdown_pids(Heart,Logger,BootPid,State), - unload(Heart), + Unload andalso unload(Heart), kill_em([Logger]), do_unload([logger_server]). -- 2.31.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor