From 6366ea17359731a7fe3c08e128a74b7efb6bf294 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 16 Aug 2024 02:24:51 +0200 Subject: [PATCH] Fix "can't alloc thread" exception on exit (#310) It's no longer possible to create new threads once Ruby's main thread has exited. --- lib/mini_racer.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/mini_racer.rb b/lib/mini_racer.rb index e615a4d..38748e7 100644 --- a/lib/mini_racer.rb +++ b/lib/mini_racer.rb @@ -316,6 +316,7 @@ def ensure_gc_thread @last_eval = Process.clock_gettime(Process::CLOCK_MONOTONIC) @ensure_gc_mutex.synchronize do @ensure_gc_thread = nil if !@ensure_gc_thread&.alive? + return if !Thread.main.alive? # avoid "can't alloc thread" exception @ensure_gc_thread ||= Thread.new do ensure_gc_after_idle_seconds = @ensure_gc_after_idle / 1000.0 done = false