Skip to content

fix: replace print_and_exit() with Err(anyhow!(...))#123

Merged
mobileoverlord merged 1 commit intomainfrom
beni/dev
Apr 1, 2026
Merged

fix: replace print_and_exit() with Err(anyhow!(...))#123
mobileoverlord merged 1 commit intomainfrom
beni/dev

Conversation

@bsandu-peridio
Copy link
Copy Markdown
Contributor

This fixes a deadlock in tui mode, because of tokio task error propagation. Can be reproduced by listing an extension under a runtime, but not defining in the extensions: section.

Flow chain before fix:

  • spawned tokio task (ext build) hits stamp validation failure
  • calls print_and_exit() → renderer.shutdown()
  • shutdown() busy-waits with std::thread::sleep(5ms) for the render loop to stop
  • std::thread::sleep() blocks the tokio thread, preventing the render loop task from running
  • render loop never sets loop_stopped = true
  • deadlock — shutdown() spins forever

This fixes a deadlock in tui mode, because of tokio task error propagation. Can be
reproduced by listing an extension under a runtime, but not defining in the extensions:
section.

Flow chain before fix:
- spawned tokio task (ext build) hits stamp validation failure
- calls print_and_exit() → renderer.shutdown()
- shutdown() busy-waits with std::thread::sleep(5ms) for the render loop to stop
- std::thread::sleep() blocks the tokio thread, preventing the render loop task from running
- render loop never sets loop_stopped = true
- deadlock — shutdown() spins forever

Signed-off-by: Beniamin Sandu <b.sandu@peridio.com>
@mobileoverlord mobileoverlord merged commit 03da748 into main Apr 1, 2026
5 checks passed
@mobileoverlord mobileoverlord deleted the beni/dev branch April 1, 2026 08:21
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.

2 participants