diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2020-12-02 23:38:40 -0800 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2020-12-02 23:38:42 -0800 |
commit | 58c3c75fee775abb9a145e7b106320a55f2c8be1 (patch) | |
tree | 6a443cdbc3f7247b564ae7688ace103e1d8db9b7 | |
parent | 29c9588e7ec4fcc36c91b3783dfbfe86a4d104bf (diff) |
Skip checking Ractor recursive locking
for an MJIT worker thread. We can't do it because its GET_EC() returns
NULL.
-rw-r--r-- | ractor.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -40,7 +40,8 @@ static void ASSERT_ractor_unlocking(rb_ractor_t *r) { #if RACTOR_CHECK_MODE > 0 - if (r->locked_by == GET_RACTOR()->self) { + // GET_EC is NULL in an MJIT worker + if (GET_EC() != NULL && r->locked_by == GET_RACTOR()->self) { rb_bug("recursive ractor locking"); } #endif @@ -50,7 +51,8 @@ static void ASSERT_ractor_locking(rb_ractor_t *r) { #if RACTOR_CHECK_MODE > 0 - if (r->locked_by != GET_RACTOR()->self) { + // GET_EC is NULL in an MJIT worker + if (GET_EC() != NULL && r->locked_by != GET_RACTOR()->self) { rp(r->locked_by); rb_bug("ractor lock is not acquired."); } @@ -66,7 +68,9 @@ ractor_lock(rb_ractor_t *r, const char *file, int line) rb_native_mutex_lock(&r->lock); #if RACTOR_CHECK_MODE > 0 - r->locked_by = GET_RACTOR()->self; + if (GET_EC() != NULL) { // GET_EC is NULL in an MJIT worker + r->locked_by = GET_RACTOR()->self; + } #endif RUBY_DEBUG_LOG2(file, line, "locked r:%u%s", r->id, GET_RACTOR() == r ? " (self)" : ""); |