File 0470-Fix-sys_SUITE-special_process-1-to-terminating-proce.patch of Package erlang

From 5415e60c0b6a17accc33e128c73fa90ccb82c081 Mon Sep 17 00:00:00 2001
From: Siri Hansen <siri@erlang.org>
Date: Tue, 16 Oct 2018 14:42:37 +0200
Subject: [PATCH 1/2] Fix sys_SUITE:special_process/1 to terminating process
 synchronously

---
 lib/stdlib/test/sys_SUITE.erl | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/lib/stdlib/test/sys_SUITE.erl b/lib/stdlib/test/sys_SUITE.erl
index 3278eb0eb0..fcc4419569 100644
--- a/lib/stdlib/test/sys_SUITE.erl
+++ b/lib/stdlib/test/sys_SUITE.erl
@@ -219,7 +219,7 @@ spec_proc(Mod) ->
 		       {Mod,system_get_state},{throw,fail}},_}} ->
 		 ok
 	 end,
-    ok = sys:terminate(Mod, normal),
+    ok = sync_terminate(Mod),
     {ok,_} = Mod:start_link(4),
     ok = case catch sys:replace_state(Mod, fun(_) -> {} end) of
 	     {} ->
@@ -228,7 +228,7 @@ spec_proc(Mod) ->
 		       {Mod,system_replace_state},{throw,fail}},_}} ->
 		 ok
 	 end,
-    ok = sys:terminate(Mod, normal),
+    ok = sync_terminate(Mod),
     {ok,_} = Mod:start_link(4),
     StateFun = fun(_) -> error(fail) end,
     ok = case catch sys:replace_state(Mod, StateFun) of
@@ -240,7 +240,18 @@ spec_proc(Mod) ->
 	     {'EXIT',{{callback_failed,StateFun,{error,fail}},_}} ->
 		 ok
 	 end,
-    ok = sys:terminate(Mod, normal).
+    ok = sync_terminate(Mod).
+
+sync_terminate(Mod) ->
+    P = whereis(Mod),
+    MRef = erlang:monitor(process,P),
+    ok = sys:terminate(Mod, normal),
+    receive
+        {'DOWN',MRef,_,_,normal} ->
+            ok
+    end,
+    undefined = whereis(Mod),
+    ok.
 
 %%%%%%%%%%%%%%%%%%%%
 %% Dummy server
-- 
2.16.4

openSUSE Build Service is sponsored by