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

orphans is not domain-safe. #31

Closed
dinosaure opened this issue Jul 22, 2024 · 1 comment
Closed

orphans is not domain-safe. #31

dinosaure opened this issue Jul 22, 2024 · 1 comment

Comments

@dinosaure
Copy link
Contributor

About orphans, the underlying Sequence.t used is not domain-safe. Even if a parallel insertion is forbidden due to Miou's rules, the ability to insert a bad promise into the orphans Sequence.t can lead to an undefined behavior: so we should protect orphans against a bad use. Spotted by @polytypic.

@dinosaure
Copy link
Contributor Author

Fixed by #32

dinosaure added a commit to dinosaure/opam-repository that referenced this issue Aug 22, 2024
CHANGES:

- Set the internal pipe used to interrupt a domain to a non-blocking mode and
  remove the usage of an atomic which protect how we fill the pipe
  (@haesbaert, @dinosaure, robur-coop/miou#28)
- Expose option to reuse addr/port when we `Miou_unix.bind_and_listen`
  (@ada2k, @dinosaure, robur-coop/miou#27)
- Protect an illegal access to the orphan from a possibly parallel task which
  does not own the orphan value
  (@poytypic, @dinosaure, robur-coop/miou#31, robur-coop/miou#32)
- Be able to pin a specific domain when we want to launch a parallel task
  (@dinosaure, robur-coop/miou#34)
- Expose the `Miou.Backoff` module which can be useful for users
  (@dinosaure, robur-coop/miou#35)
- Fix or improve (from the maintainance point-of-view) the `Miou.Queue` module
  and some internal parts of Miou about the usage of atomics
  (@dinosaure, @polytypic, robur-coop/miou#36, robur-coop/miou#33)
- Prefer to require a `finaliser` function for the `events` value and actually
  close the internal `Unix.pipe` used to interrupt domain than to use
  `Gc.finaliser` and possibly leak file-descriptors
  (spotted by @hannesm, @dinosaure, robur-coop/miou#37)
avsm pushed a commit to avsm/opam-repository that referenced this issue Sep 5, 2024
CHANGES:

- Set the internal pipe used to interrupt a domain to a non-blocking mode and
  remove the usage of an atomic which protect how we fill the pipe
  (@haesbaert, @dinosaure, robur-coop/miou#28)
- Expose option to reuse addr/port when we `Miou_unix.bind_and_listen`
  (@ada2k, @dinosaure, robur-coop/miou#27)
- Protect an illegal access to the orphan from a possibly parallel task which
  does not own the orphan value
  (@poytypic, @dinosaure, robur-coop/miou#31, robur-coop/miou#32)
- Be able to pin a specific domain when we want to launch a parallel task
  (@dinosaure, robur-coop/miou#34)
- Expose the `Miou.Backoff` module which can be useful for users
  (@dinosaure, robur-coop/miou#35)
- Fix or improve (from the maintainance point-of-view) the `Miou.Queue` module
  and some internal parts of Miou about the usage of atomics
  (@dinosaure, @polytypic, robur-coop/miou#36, robur-coop/miou#33)
- Prefer to require a `finaliser` function for the `events` value and actually
  close the internal `Unix.pipe` used to interrupt domain than to use
  `Gc.finaliser` and possibly leak file-descriptors
  (spotted by @hannesm, @dinosaure, robur-coop/miou#37)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant