Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
erlang
1252-Do-not-unload-modules-during-stop.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 1252-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 @@ -423,7 +423,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. @@ -531,7 +531,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. %%% ------------------------------------------------- @@ -540,7 +540,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,#state{start = Start, flags = Flags, args = Args}) -> @@ -556,10 +557,10 @@ do_restart(Start,Flags,Args) -> stop_heart(State), halt(Status). -clear_system(BootPid,State) -> +clear_system(Unload,BootPid,State) -> Heart = get_heart(State#state.kernel), shutdown_pids(Heart,BootPid,State), - unload(Heart). + Unload andalso unload(Heart). flush() -> receive -- 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