File 0050-erts-Fix-proc-arity-value-when-exiting.patch of Package erlang

From c0f82eef818a71a8cb475d9b27a3c30074fe3b77 Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Mon, 27 Feb 2017 12:01:50 +0100
Subject: [PATCH] erts: Fix proc arity value when exiting

Not setting it correctly will cause the swapin later
to fail in debug build as REDS_IN will overwrite
the value in reg[5].
---
 erts/emulator/beam/beam_emu.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c
index 49f932a1c..8be0f5822 100644
--- a/erts/emulator/beam/beam_emu.c
+++ b/erts/emulator/beam/beam_emu.c
@@ -1324,6 +1324,7 @@ void process_main(Eterm * x_reg_array, FloatDef* f_reg_array)
     goto do_schedule1;
 
  do_schedule:
+    ASSERT(c_p->arity < 6);
     ASSERT(c_p->debug_reds_in == REDS_IN(c_p));
     if (!ERTS_PROC_GET_SAVED_CALLS_BUF(c_p))
 	reds_used = REDS_IN(c_p) - FCALLS;
@@ -1924,6 +1925,7 @@ void process_main(Eterm * x_reg_array, FloatDef* f_reg_array)
 	     erts_smp_proc_unlock(c_p, ERTS_PROC_LOCKS_MSG_RECEIVE);
 	     SWAPOUT;
 	     c_p->flags &= ~F_DELAY_GC;
+             c_p->arity = 0;
 	     goto do_schedule; /* Will be rescheduled for exit */
 	 }
 	 ERTS_SMP_MSGQ_MV_INQ2PRIVQ(c_p);
@@ -2166,6 +2168,7 @@ void process_main(Eterm * x_reg_array, FloatDef* f_reg_array)
 		  * in limbo forever.
 		  */
 		 SWAPOUT;
+                 c_p->arity = 0;
 		 goto do_schedule;
 	     }
 #endif
-- 
2.12.0

openSUSE Build Service is sponsored by