From ee5e750be32d71f80c60deeaa20795770ddec3b7 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Tue, 22 Jul 2025 13:33:24 +0100 Subject: [PATCH] tests: Connect to GMemoryMonitor signals earlier It might be possible for the `low-memory-warning` signal to be emitted (by the GLib worker thread) before the test has connected to it, which could cause the tests to loop forever. Potentially fixes https://gitlab.gnome.org/pwithnall/glib/-/jobs/5322491, though I have not been able to reproduce the race locally. Signed-off-by: Philip Withnall --- gio/tests/memory-monitor-poll.c | 5 ++--- gio/tests/memory-monitor-psi.c | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/gio/tests/memory-monitor-poll.c b/gio/tests/memory-monitor-poll.c index ac707d9b0..d6ef6db9a 100644 --- a/gio/tests/memory-monitor-poll.c +++ b/gio/tests/memory-monitor-poll.c @@ -65,11 +65,10 @@ test_event (const void *data) "poll-interval-ms", 50, "mem-free-ratio", test_data->simulated_mem_free_ratio, NULL); - g_initable_init (G_INITABLE (monitor), NULL, &local_error); - g_assert_no_error (local_error); - warning_id = g_signal_connect (monitor, "low-memory-warning", G_CALLBACK (memory_monitor_signal_cb), &warning_level); + g_initable_init (G_INITABLE (monitor), NULL, &local_error); + g_assert_no_error (local_error); while (warning_level == -1) g_main_context_iteration (NULL, TRUE); diff --git a/gio/tests/memory-monitor-psi.c b/gio/tests/memory-monitor-psi.c index 35d6a246c..4f149d8ef 100644 --- a/gio/tests/memory-monitor-psi.c +++ b/gio/tests/memory-monitor-psi.c @@ -84,6 +84,8 @@ test_receive_signals (SetupData *setup, gconstpointer data) monitor = g_object_new (G_TYPE_MEMORY_MONITOR_PSI, "proc-path", setup->mock_proc_path, NULL); + warning_id = g_signal_connect (monitor, "low-memory-warning", + G_CALLBACK (memory_monitor_psi_signal_cb), &warning_level); g_initable_init (G_INITABLE (monitor), NULL, &local_error); g_assert_no_error (local_error); @@ -93,9 +95,6 @@ test_receive_signals (SetupData *setup, gconstpointer data) &local_error); g_assert_no_error (local_error); - warning_id = g_signal_connect (monitor, "low-memory-warning", - G_CALLBACK (memory_monitor_psi_signal_cb), &warning_level); - while (warning_level == -1) g_main_context_iteration (NULL, TRUE);