From 66ab51817f607f68652470f16580068762d2d3bb Mon Sep 17 00:00:00 2001
From: Olivier Dion <olivier.dion@savoirfairelinux.com>
Date: Thu, 9 Dec 2021 10:48:59 -0500
Subject: [PATCH] agent/bindings/signal: Protect from GC callbacks

Change-Id: If91bed7badd8229aee216a91445b758e8901e573
---
 test/agent/src/bindings/signal.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/test/agent/src/bindings/signal.cpp b/test/agent/src/bindings/signal.cpp
index 85e044a87a..eb5db8d557 100644
--- a/test/agent/src/bindings/signal.cpp
+++ b/test/agent/src/bindings/signal.cpp
@@ -83,6 +83,8 @@ public:
             SCM ret = apply_to_guile(cb, args...);
             if (scm_is_true(ret)) {
                 to_keep.emplace_back(cb);
+            } else {
+                scm_gc_unprotect_object(cb);
             }
         }
 
@@ -138,6 +140,7 @@ on_signal_binding(SCM signal_sym, SCM handler_proc)
     mutex = static_cast<std::mutex*>(scm_to_pointer(scm_cdr(handler_pair)));
 
     std::unique_lock lck(*mutex);
+    scm_gc_protect_object(handler_proc);
     callbacks->push_back(handler_proc);
 
     return SCM_UNDEFINED;
-- 
GitLab