diff --git a/testsuite/tests/rts/all.T b/testsuite/tests/rts/all.T
index 06414a6615e40766c747a4f3eefeb7dae2b8a61c..36ff586db99a9d822be07b94978bc64a2997627f 100644
--- a/testsuite/tests/rts/all.T
+++ b/testsuite/tests/rts/all.T
@@ -589,7 +589,16 @@ test('T22795c', [only_ways(['normal']), js_skip], compile_and_run, ['-threaded -
 
 test('T17574', [js_skip], compile_and_run, ['-with-rtsopts -T'])
 
-test('T23221', [js_skip, high_memory_usage, extra_run_opts('1500000'), unless(wordsize(64), skip), omit_ghci], compile_and_run, ['-O -with-rtsopts -T'])
+test('T23221',
+     [js_skip,
+      # This test is highly dependent upon GC behavior
+      omit_ways(['nonmoving', 'nonmoving_thr', 'nonmoving_thr_sanity', 'nonmoving_thr_ghc']),
+      high_memory_usage,
+      extra_run_opts('1500000'),
+      unless(wordsize(64), skip),
+      omit_ghci],
+     compile_and_run,
+     ['-O -with-rtsopts -T'])
 
 test('T23142', [unless(debug_rts(), skip), req_interp], makefile_test, ['T23142'])