Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix recursive mutex #433

Merged
merged 1 commit into from
Aug 21, 2023
Merged

Fix recursive mutex #433

merged 1 commit into from
Aug 21, 2023

Conversation

yamt
Copy link
Contributor

@yamt yamt commented Aug 15, 2023

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

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
@Zzzabiyaka
Copy link

actually it affects any non-normal mutex, not only recursive one, if I got it right. I think we should aim to merge it as soon as we can

Copy link
Contributor

@loganek loganek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@abrown abrown merged commit ec4566b into WebAssembly:main Aug 21, 2023
yamt added a commit to yamt/wasi-sdk that referenced this pull request Aug 29, 2023
abrown pushed a commit to WebAssembly/wasi-sdk that referenced this pull request Aug 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Recursive mutex returns ENORECOVERABLE (56) with wasi-threads
4 participants