File 0314-crash-dump-Fix-printing-of-OldBinVHeap-unused.patch of Package erlang

From 256824fc2e441c549a39197bdae9ba8721709a8b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Fri, 12 Apr 2019 13:09:41 +0200
Subject: [PATCH 11/11] crash dump: Fix printing of "OldBinVHeap unused"

During a garbage collection, there could have been an overflow
in the old virtual heap.
---
 erts/emulator/beam/break.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/erts/emulator/beam/break.c b/erts/emulator/beam/break.c
index 06d8c7cda8..80e871aaf6 100644
--- a/erts/emulator/beam/break.c
+++ b/erts/emulator/beam/break.c
@@ -394,8 +394,12 @@ print_process_info(fmtfn_t to, void *to_arg, Process *p, ErtsProcLocks orig_lock
     erts_print(to, to_arg, "OldBinVHeap: %b64u\n", BIN_OLD_VHEAP(p));
     erts_print(to, to_arg, "BinVHeap unused: %b64u\n",
                BIN_VHEAP_SZ(p) - p->off_heap.overhead);
-    erts_print(to, to_arg, "OldBinVHeap unused: %b64u\n",
-               BIN_OLD_VHEAP_SZ(p) - BIN_OLD_VHEAP(p));
+    if (BIN_OLD_VHEAP_SZ(p) >= BIN_OLD_VHEAP(p)) {
+        erts_print(to, to_arg, "OldBinVHeap unused: %b64u\n",
+                   BIN_OLD_VHEAP_SZ(p) - BIN_OLD_VHEAP(p));
+    } else {
+        erts_print(to, to_arg, "OldBinVHeap unused: overflow\n");
+    }
     erts_print(to, to_arg, "Memory: %beu\n", erts_process_memory(p, !0));
 
     if (garbing) {
-- 
2.16.4

openSUSE Build Service is sponsored by