...
 
Commits (3)
# see git-dpm(1) from git-dpm package
59d9bcd468aab0d97d763595fd4e934044dc7590
59d9bcd468aab0d97d763595fd4e934044dc7590
ec2c4ec5873dda1f58cfd7b64a31bd5cfd9f5b27
ec2c4ec5873dda1f58cfd7b64a31bd5cfd9f5b27
4d0be7303dd8f27e1e15478751a9daa2c680a677
4d0be7303dd8f27e1e15478751a9daa2c680a677
guile-2.2_2.2.4+1.orig.tar.xz
......
From ec2c4ec5873dda1f58cfd7b64a31bd5cfd9f5b27 Mon Sep 17 00:00:00 2001
From: Andrea Azzarone <andrea.azzarone@canonical.com>
Date: Thu, 11 Apr 2019 16:30:58 +0100
Subject: Fix gc.test "after-gc-hook gets called" failures.
* libguile/scmsigs.c (signal_delivery_thread): Call scm_async_tick to
give any pending asyncs a chance to run before we block indefinitely
waiting for a signal to arrive.
---
libguile/scmsigs.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c
index 21b2a9529..755e657ea 100644
--- a/libguile/scmsigs.c
+++ b/libguile/scmsigs.c
@@ -174,6 +174,14 @@ signal_delivery_thread (void *data)
{
struct signal_pipe_data sigdata;
+ /* This tick gives any pending asyncs a chance to run before we
+ block indefinitely waiting for a signal to arrive. For example
+ it can happen that the garbage collector is triggered while
+ marking the signal handler for future execution. Due to the
+ way the after-gc-hook is designed, without a call to
+ scm_async_tick, the after-gc-hook will not be triggered. */
+ scm_async_tick ();
+
scm_without_guile (read_signal_pipe_data, &sigdata);
sig = sigdata.sigbyte;
From 59d9bcd468aab0d97d763595fd4e934044dc7590 Mon Sep 17 00:00:00 2001
From: Rob Browning <rlb@defaultvalue.org>
Date: Sat, 21 Jul 2018 14:30:35 -0500
Subject: gc.test: after-gc-hook - mark unresolved on failure for mips(el)
Bug: https://debbugs.gnu.org/31776
Bug-Debian: https://bugs.debian.org/900652
---
test-suite/tests/gc.test | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/test-suite/tests/gc.test b/test-suite/tests/gc.test
index 04f353984..69f48ebbf 100644
--- a/test-suite/tests/gc.test
+++ b/test-suite/tests/gc.test
@@ -67,7 +67,10 @@
(add-hook! after-gc-hook thunk)
(gc)
(remove-hook! after-gc-hook thunk)
- foo))
+ (let ((cpu (substring %host-type 0 (string-index %host-type #\-))))
+ (cond ((string=? cpu "mips") (maybe-gc-flakiness foo))
+ ((string=? cpu "mipsel") (maybe-gc-flakiness foo))
+ (else foo)))))
(pass-if "Unused modules are removed"
(let* ((guard (make-guardian))
......@@ -3,4 +3,4 @@
0003-Disable-sandbox.test-1e6-alloc-loop-allocation-limit.patch
0004-Disable-intermittently-failing-test-out-of-memory-te.patch
0005-Disable-more-of-test-out-of-memory-test.patch
0006-gc.test-after-gc-hook-mark-unresolved-on-failure-for.patch
0006-Fix-gc.test-after-gc-hook-gets-called-failures.patch
......@@ -174,6 +174,14 @@ signal_delivery_thread (void *data)
{
struct signal_pipe_data sigdata;
/* This tick gives any pending asyncs a chance to run before we
block indefinitely waiting for a signal to arrive. For example
it can happen that the garbage collector is triggered while
marking the signal handler for future execution. Due to the
way the after-gc-hook is designed, without a call to
scm_async_tick, the after-gc-hook will not be triggered. */
scm_async_tick ();
scm_without_guile (read_signal_pipe_data, &sigdata);
sig = sigdata.sigbyte;
......
......@@ -67,10 +67,7 @@
(add-hook! after-gc-hook thunk)
(gc)
(remove-hook! after-gc-hook thunk)
(let ((cpu (substring %host-type 0 (string-index %host-type #\-))))
(cond ((string=? cpu "mips") (maybe-gc-flakiness foo))
((string=? cpu "mipsel") (maybe-gc-flakiness foo))
(else foo)))))
foo))
(pass-if "Unused modules are removed"
(let* ((guard (make-guardian))
......