diff --git a/CHANGELOG b/CHANGELOG index d1c5c44..ec96172 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +- Unreleased + - Fix a race introduced in 0.21.4 where a request sent right after a nested dispatch (e.g. `perform_microtask_checkpoint` or a nested `call` from an attached callback) could be dropped, deadlocking the context + - 0.21.4 - 24-06-2026 - Fix stale V8 termination state after interrupts/timeouts so contexts remain usable after cancelled evaluations - Let Ruby interrupts wake MiniRacer calls without immediately terminating V8, allowing signal traps and nested callbacks to unwind safely diff --git a/ext/mini_racer_extension/mini_racer_extension.c b/ext/mini_racer_extension/mini_racer_extension.c index afa6e9d..c13dbfe 100644 --- a/ext/mini_racer_extension/mini_racer_extension.c +++ b/ext/mini_racer_extension/mini_racer_extension.c @@ -893,7 +893,6 @@ void v8_roundtrip(Context *c, const uint8_t **p, size_t *n) { pthread_mutex_lock(&c->mtx); buf_reset(&c->v8_req); - buf_reset(&c->req); if (c->res.len) c->res_ready = 1; pthread_cond_signal(&c->cv);