Skip to content

Commit ec4566b

Browse files
authored
Fix recursive mutex (#433)
the robust mutex logic in musl seems to assume that the bit 29 of TIDs is always zero for some reasons. from https://git.musl-libc.org/cgit/musl/commit/?id=099b89d3840c30d7dd962e18668c2e6d39f0c626 > note that the kernel ABI also reserves bit 29 > not to appear in any tid, i'm not sure if the assumption is true or not, given that FUTEX_TID_MASK is 0x3fffffff. anyway, when using non-default type of mutex like recursive mutex, it causes problems as we actually use TID 0x3fffffff for the main thread. as we don't support robust mutex anyway, this commit simply comments out the problematic condition. fixes: bytecodealliance/wasm-micro-runtime#2466
1 parent 9f51a71 commit ec4566b

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

libc-top-half/musl/src/thread/pthread_mutex_trylock.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ int __pthread_mutex_trylock_owner(pthread_mutex_t *m)
2121
return 0;
2222
}
2323
}
24+
#ifdef __wasilibc_unmodified_upstream
2425
if (own == 0x3fffffff) return ENOTRECOVERABLE;
26+
#endif
2527
if (own || (old && !(type & 4))) return EBUSY;
2628

2729
if (type & 128) {

0 commit comments

Comments
 (0)