marigold-dev / marigold-dev/deku

Eio_linux crash

Open
#970 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
OCaml
Stars
82
Forks
17
PR merge metrics
No merged PRs in 30d

Description

I'm consistently getting a crash like this in Deku:
```
0: _build/install/default/bin/deku-node: internal error, uncaught exception:
0: Stdlib.Effect.Continuation_already_resumed
0: Raised by primitive operation at Eio_linux.run.(fun) in file "lib_eio_linux/eio_linux.ml", line 1471, characters 4-629
0: Called from Eio_linux.with_uring in file "lib_eio_linux/eio_linux.ml", line 1315, characters 10-18
0: Re-raised at Eio_linux.with_uring in file "lib_eio_linux/eio_linux.ml", line 1323, characters 6-41
0: Called from Cmdliner_term.app.(fun) in file "cmdliner_term.ml", line 24, characters 19-24
0: Called from Cmdliner_eval.run_parser in file "cmdliner_eval.ml", line 34, characters 37-44
```

@EduardoRFS hypothesizes it's related to doing Eio stuff from other domains.

I can reproduce quite consistently on this commit: 4bc40c448a591b229c32b5c573a16171c9958be0. It has some changes, primarily removing things in an attempt to isolate the issue: no Tezos interop, no block storage, and no chain.json dump. At that point the only IO that should happen is gossip over TCP.

We should try to shrink the reproducer and post an issue on: https://github.com/ocaml-multicore/eio. In the meantime I'll track in this issue.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the crash at commit 4bc40c448a591b229c32b5c573a16171c9958be0, starting with the stack trace in lib_eio_linux/eio_linux.ml around lines 1471 and 1315. Focus on the remaining gossip-over-TCP I/O and whether work is being performed from other domains. Done means the reproducer is reduced and suitable for an upstream issue on ocaml-multicore/eio.

Written by the indexing model from the issue text.

Assessment

Tech stack
ocaml
Domain
backend, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.