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

Possible loop in caml_enter_blocking_section when no domain can handle a blocked signal #703

Open
abbysmal opened this issue Oct 19, 2021 · 0 comments
Assignees
Labels

Comments

@abbysmal
Copy link
Collaborator

This can be triggered when a domain that blocked a specific set of signals ends up in a situation where no other domain can process the signal (for example: it is the last domain and a signal was recorded by another domain beforehand).

What can happen is that caml_enter_blocking_section will trigger a loop because processing all signals is made impossible:
This domain cannot possibly process the signal because the logic in caml_process_pending_signals makes it so that since it is masked, it will leave it unprocessed.

In normal circumstances, another domain that does not block it will eventually process the signals in question and this domain will eventually be freed, but when no other domain can do this, we end up in a loop.

@abbysmal abbysmal added the bug label Oct 19, 2021
@kayceesrk kayceesrk added this to Runtime multi-domain safety in Review OCaml 5.0 PR Oct 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Review OCaml 5.0 PR
Runtime multi-domain safety
Development

No branches or pull requests

2 participants