-
-
Notifications
You must be signed in to change notification settings - Fork 3
Description
Hi, great project you have here! Not sure where to report this issue, so I am reporting it to where I see the SIGSEGV.
I am setting up OpenWorkers in a homelab and using it to run smaller tasks that I have lying around. My environment is set up using Podman Compose from openworkers-infra, with paths modified to point to the local domain names.
What I see is that since v0.8.7-v8, nginx will return 502 errors after doing exactly 3 requests, since the runners will just exit with error 139.
openworkers-proxy logs:
2026-01-24T22:21:01.079Z a575d6b28de112d6fb1d08dcbf261970 worker-engine-proxy [abc-worker.lab.example.com] abc 10.89.13.12 GET "/some-path" 200 0.066
2026-01-24T22:21:02.235Z a4819cf6151d17bcc1c3a089ba683e15 worker-engine-proxy [abc-worker.lab.example.com] abc 10.89.13.12 GET "/some-path" 200 0.063
2026-01-24T22:21:02.865Z b596fb35bb2dcfdd1f2080fc43dad968 worker-engine-proxy [abc-worker.lab.example.com] abc 10.89.13.12 GET "/some-path" 200 0.087
2026/01/24 22:21:03 [error] 2#2: *10 upstream prematurely closed connection while reading response header from upstream, client: 10.89.13.12, server: ~\.lab\.example\.com$, request: "GET /some-path HTTP/1.1", upstream: "http://10.89.13.7:8080/some-path", host: "abc-worker.lab.example.com"
2026/01/24 22:21:03 [warn] 2#2: *10 upstream server temporarily disabled while reading response header from upstream, client: 10.89.13.12, server: ~\.lab\.example\.com$, request: "GET /some-path HTTP/1.1", upstream: "http://10.89.13.7:8080/some-path", host: "abc-worker.lab.example.com"
(Notice that the worker URL scheme is different because I have changed them in the nginx config, but it should be irrelevant to the issue.)
A runner's log looks like this from its start to its exit:
[2026-01-24T22:38:43Z DEBUG openworkers_runner] start main (hyper)
[2026-01-24T22:38:43Z DEBUG openworkers_runner] Isolate pool config: max_size=1000, heap_initial=10MB, heap_max=50MB
[2026-01-24T22:38:43Z DEBUG openworkers_runner] connected to Postgres
[2026-01-24T22:38:43Z DEBUG openworkers_runner::nats] connecting to nats: nats://nats:4222
[2026-01-24T22:38:43Z DEBUG openworkers_runner] connected to NATS
[2026-01-24T22:38:43Z DEBUG openworkers_runner] started log publisher
[2026-01-24T22:38:43Z INFO openworkers_runtime_v8::thread_pinned_pool] Thread-pinned pool initialized: max_per_thread=1000, max_per_owner=None, queue_size=10, queue_timeout_ms=5000
[2026-01-24T22:38:43Z DEBUG openworkers_runner] Initialized thread-pinned isolate pool with 1000 isolates per thread
Listening on http://0.0.0.0:8080 with 4 listeners
[2026-01-24T22:38:43Z DEBUG openworkers_runner::nats] connecting to nats: nats://nats:4222
[2026-01-24T22:38:43Z DEBUG openworkers_runner] Listener 0 started
[2026-01-24T22:38:43Z DEBUG openworkers_runner] Listener 1 started
[2026-01-24T22:38:43Z DEBUG openworkers_runner] Listener 3 started
[2026-01-24T22:38:43Z DEBUG openworkers_runner] Listener 2 started
[2026-01-24T22:38:43Z DEBUG openworkers_runner::event_scheduled] subscribing to scheduled JoinHandle { id: Id(17) }
[2026-01-24T22:38:43Z DEBUG openworkers_runner::nats] connecting to nats: nats://nats:4222
[2026-01-24T22:38:43Z INFO openworkers_runner::log] Global log publisher started (batching: 10msg/100ms)
[2026-01-24T22:38:43Z DEBUG openworkers_runner::event_scheduled] listening for scheduled tasks
[2026-01-24T22:39:23Z DEBUG openworkers_runner] handle_request: GET /some-path in thread ThreadId(4)
[2026-01-24T22:39:24Z DEBUG openworkers_runner] host: Some("abc-worker.lab.example.com"), worker_id: None, worker_name: Some("abc")
[2026-01-24T22:39:24Z DEBUG openworkers_runner] request_id: b82ada08e80651965f7a60bb4236787f, worker_id: None, worker_name: Some("abc")
[2026-01-24T22:39:24Z DEBUG openworkers_runner::store] get_worker_with_bindings: Name("abc")
[2026-01-24T22:39:24Z DEBUG openworkers_runner::store] worker found: id: 21d5d010, version: 76, bindings: 0, type: typescript
[2026-01-24T22:39:24Z DEBUG openworkers_runner] worker found: true
[2026-01-24T22:39:24Z INFO openworkers_runner::worker_pool] Initializing worker semaphore with 160 max queued workers
[2026-01-24T22:39:24Z DEBUG openworkers_runner::worker] transpile cache MISS: worker=21d5d010, version=76
[2026-01-24T22:39:24Z DEBUG openworkers_runner::worker] transpile cache HIT: worker=21d5d010, version=76
[2026-01-24T22:39:24Z INFO openworkers_runner::worker_pool] Sequential worker pool initialized with 16 threads
[2026-01-24T22:39:24Z DEBUG openworkers_runtime_v8::thread_pinned_pool] Thread-local pool initialized on thread ThreadId(13) (max_per_owner=None, queue_size=10)
[2026-01-24T22:39:24Z DEBUG openworkers_runtime_v8::thread_pinned_pool] Cache MISS: creating new isolate for owner c88f9ecf-cc16-4b34-9006-f3b15346d2f8 (pool: 1/1000, owner: 1/None)
[2026-01-24T22:39:24Z DEBUG openworkers_runtime_v8::thread_pinned_pool] Creating new TaggedIsolate for owner: c88f9ecf-cc16-4b34-9006-f3b15346d2f8
[2026-01-24T22:39:24Z INFO openworkers_runtime_v8::thread_pinned_pool] TaggedIsolate created for owner c88f9ecf-cc16-4b34-9006-f3b15346d2f8 in 52.192604ms (snapshot: false)
[2026-01-24T22:39:24Z DEBUG openworkers_runner] handle_request done in 57ms
[2026-01-24T22:39:24Z DEBUG openworkers_runner::log] Flushing logs for worker: 21d5d010
[2026-01-24T22:39:34Z DEBUG openworkers_runner] handle_request: GET /some-path in thread ThreadId(4)
[2026-01-24T22:39:34Z DEBUG openworkers_runner] host: Some("abc-worker.lab.example.com"), worker_id: None, worker_name: Some("abc")
[2026-01-24T22:39:34Z DEBUG openworkers_runner] request_id: 09720dc84bdab9d2c928c72a45e6d65b, worker_id: None, worker_name: Some("abc")
[2026-01-24T22:39:34Z DEBUG openworkers_runner::store] get_worker_with_bindings: Name("abc")
[2026-01-24T22:39:34Z DEBUG openworkers_runner::store] worker found: id: 21d5d010, version: 76, bindings: 0, type: typescript
[2026-01-24T22:39:34Z DEBUG openworkers_runner] worker found: true
[2026-01-24T22:39:34Z DEBUG openworkers_runner::worker] transpile cache HIT: worker=21d5d010, version=76
[2026-01-24T22:39:34Z DEBUG openworkers_runner::worker] transpile cache HIT: worker=21d5d010, version=76
[2026-01-24T22:39:34Z DEBUG openworkers_runtime_v8::thread_pinned_pool] Thread-local pool initialized on thread ThreadId(14) (max_per_owner=None, queue_size=10)
[2026-01-24T22:39:34Z DEBUG openworkers_runtime_v8::thread_pinned_pool] Cache MISS: creating new isolate for owner c88f9ecf-cc16-4b34-9006-f3b15346d2f8 (pool: 1/1000, owner: 1/None)
[2026-01-24T22:39:34Z DEBUG openworkers_runtime_v8::thread_pinned_pool] Creating new TaggedIsolate for owner: c88f9ecf-cc16-4b34-9006-f3b15346d2f8
I bisected versions, and I find that the last good version that works for me is openworkers-runner:v0.8.5-v8, v0.8.7-v8 and beyond exhibit the behaviour outlined above. Other package versions don't seem to matter in this case, and the schema has been updated to the latest.
Any pointers?