@@ -245,8 +245,10 @@ private RubyThread getOrCreateForeignThread(RubyContext context, Thread thread)
245
245
public final SymbolTable symbolTable ;
246
246
public final KeywordArgumentsDescriptorManager keywordArgumentsDescriptorManager = new KeywordArgumentsDescriptorManager ();
247
247
public final FrozenStringLiterals frozenStringLiterals ;
248
- public final Cleaner cleaner = Cleaner .create ();
249
248
249
+ // GR-44025: We store the cleanerThread explicitly here to make it a clear image building failure if it would still be set.
250
+ public Thread cleanerThread = null ;
251
+ @ CompilationFinal public Cleaner cleaner = newCleaner ();
250
252
251
253
public volatile ValueWrapperManager .HandleBlockWeakReference [] handleBlockSharedMap = new ValueWrapperManager .HandleBlockWeakReference [0 ];
252
254
public final ValueWrapperManager .HandleBlockAllocator handleBlockAllocator = new ValueWrapperManager .HandleBlockAllocator ();
@@ -461,8 +463,11 @@ protected void initializeContext(RubyContext context) {
461
463
try {
462
464
Metrics .printTime ("before-initialize-context" );
463
465
context .initialize ();
466
+
464
467
if (context .isPreInitializing ()) {
465
468
setRubyHome (context .getEnv (), null );
469
+ this .cleanerThread = null ;
470
+ this .cleaner = null ;
466
471
}
467
472
Metrics .printTime ("after-initialize-context" );
468
473
} catch (Throwable e ) {
@@ -494,6 +499,7 @@ protected boolean patchContext(RubyContext context, Env newEnv) {
494
499
}
495
500
496
501
setRubyHome (newEnv , findRubyHome ());
502
+ this .cleaner = newCleaner ();
497
503
498
504
boolean patched = context .patchContext (newEnv );
499
505
Metrics .printTime ("after-patch-context" );
@@ -653,6 +659,10 @@ protected Object getScope(RubyContext context) {
653
659
return context .getTopScopeObject ();
654
660
}
655
661
662
+ private Cleaner newCleaner () {
663
+ return Cleaner .create (runnable -> this .cleanerThread = new Thread (runnable , "Ruby-Cleaner" ));
664
+ }
665
+
656
666
public String getRubyHome () {
657
667
return rubyHome ;
658
668
}
0 commit comments