Vesa Karvonen
Vesa Karvonen
Could you try adding a call / top-level side-effect ```ocaml let () = Picos_io_select.configure () (* Can only be called once *) ``` or ```ocaml let () = Picos_io_select.check_configured ()...
Hmm... I can't seem to be able to reproduce the issue. Here is the program I tried: [`moonpool_issue_35.ml`](https://github.com/polytypic/picos-issue/blob/main/test/moonpool_issue_35.ml) It runs fine [on Ubuntu GitHub action](https://github.com/polytypic/picos-issue/actions/runs/11232398184/job/31223906926): ``` (cd _build/default/test && ./moonpool_issue_35.exe)...
Yes, it seems a thread is created in `moonpool_dpool.ml` in a static initializer: ```ocaml (* special case for main domain: we start a worker immediately *) let () = assert...
One unguarded TLS access, which slipped into Picos 0.5.0, is in a signal handler. Have you also pinned to use the latest main of Picos? The latest main will raise...
So, the way I found the earlier `Thread.create` call happening before the signal mask was set is that I simply added `print_endline` calls to all the place where threads were...
> I've just pinned all picos and moonpool packages to the main branch [...] I still hit this same output So, if you still get the `Not_set` exception, that would...
@amongonz Any news on a potential repro case, I could take a look.
> > What is the behaviour when a Picos function spawns a child? I've had libraries written for picos using Picos.Fiber.Spawn throw Miou.Still_has_children running under miou-with-picos. > > Miou has...
Looking at the "safe" version, the push logic: ```ocaml (* ... *) let push { tail; _ } value = let rec find_tail_and_enq curr_end node = if not (Atomic.compare_and_set curr_end...
> About the missing safe optimizations: I added the fast path in the push function. However, the benchmarks suggest that adding backoff (either for in `fix_tail` or `find_tail_and_end`) does not...