File 0506-erts-Move-faulty-positioned-asserts.patch of Package erlang

From a617afbd0b325dffae2d5a855d49f42cefe9f52c Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Wed, 28 Sep 2022 21:27:41 +0200
Subject: [PATCH] erts: Move faulty positioned asserts

assert_no_active_writers() failed if max_heap exceeded (reds==-2)
while having active writers.
---
 erts/emulator/beam/erl_gc.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index 679d7f3a21..df75c530a2 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -775,16 +775,6 @@ do_major_collection:
         ERTS_MSACC_SET_STATE_CACHED_X(ERTS_MSACC_STATE_GC);
     }
 
-    assert_no_active_writers(p);
-
-    /*
-     * Finish.
-     */
-
-    ERTS_CHK_OFFHEAP(p);
-
-    ErtsGcQuickSanityCheck(p);
-
     /* Max heap size has been reached and the process was configured
        to be killed, so we kill it and set it in a delayed garbage
        collecting state. There should be no gc_end trace or
@@ -806,6 +796,13 @@ do_major_collection:
         return res;
     }
 
+    /*
+     * Finish.
+     */
+    assert_no_active_writers(p);
+    ERTS_CHK_OFFHEAP(p);
+    ErtsGcQuickSanityCheck(p);
+
     erts_atomic32_read_band_nob(&p->state, ~ERTS_PSFLG_GC);
 
     if (IS_TRACED_FL(p, F_TRACE_GC)) {
-- 
2.35.3

openSUSE Build Service is sponsored by