[Linux] run `just dev` crashed on startup with `Option::unwrap()` panic in tao event loop
Since there's no Linux package now, I checkout the git repository and built on my (k)ubuntu 24.04.
`just build` succeeded. But when running `just dev` (or `cd tauri && bun run tauri dev`) brings up the main window and then immediately aborts the process with a non-unwinding panic from `tao` before the UI is usable.
## Environment
- OS: Linux 6.8.0-117-generic (Ubuntu-flavoured), x86_64
- Voicebox: 0.5.0 (branch `main`, post #544)
- Rust toolchain: stable (cargo registry shows `tao 0.34.5`, `tauri 2.9.5`, `tauri-runtime-wry 2.9.3`, `glib 0.18.5`, `gtk 0.18.2`)
- Display server: X11 / GTK 3 via WebKitGTK
- Python: 3.12.3 (uvicorn backend on :17493)
## Reproduction
1. `just setup` (one-time).
2. `just dev`.
3. Wait for cargo to finish building `voicebox` and the binary to launch (`Running target/debug/voicebox`).
4. The main window briefly opens, then the process aborts.
The frontend at this point has done nothing more than load the SPA — the only HTTP request that reaches the backend before the crash is `GET /events/speak` (the Rust-side SSE subscriber in `speak_monitor`).
## Expected
`just dev` brings up the desktop app and stays running, mirroring `just build`'s bundled behaviour.
## Actual
It crashed on startup. Console error log:
```
INFO: 127.0.0.1:36638 - "GET /events/speak HTTP/1.1" 200 OK
thread 'main' (18104) panicked at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/
platform_impl/linux/event_loop.rs:449:18:
called `Option::unwrap()` on a `None` value
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' (18104) panicked at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:225:5
:
panic in a function that cannot unwind
stack backtrace:
INFO: 127.0.0.1:33184 - "OPTIONS /settings/captures HTTP/1.1" 200 OK
0: 0x5cbba2d390ba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src
/backtrace/libunwind.rs:117:9
1: 0x5cbba2d390ba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68b
d]::sys::backtrace::_print_fmt::{closure#1}>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src
/backtrace/mod.rs:66:14
2: 0x5cbba2d390ba - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74
:9
3: 0x5cbba2d390ba - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c
1f1a4ba060b9bfa]::fmt::Display>::fmt
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44
:26
4: 0x5cbba2d5245a - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
5: 0x5cbba2d5245a - core[c1f1a4ba060b9bfa]::fmt::write
6: 0x5cbba2d3ec52 - std[e28293b1aa0f68bd]::io::default_write_fmt::<std[e28293b1aa0f68bd]::sys::stdio::unix::St
derr>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
7: 0x5cbba2d3ec52 - <std[e28293b1aa0f68bd]::sys::stdio::unix::Stderr as std[e28293b1aa0f68bd]::io::Write>::wri
te_fmt
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
8: 0x5cbba2d127ff - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47
:9
9: 0x5cbba2d127ff - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
10: 0x5cbba2d2edd1 - std[e28293b1aa0f68bd]::panicking::default_hook
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:319:9
11: 0x5cbba2d2f04b - std[e28293b1aa0f68bd]::panicking::panic_with_hook
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:825:13
12: 0x5cbba2d128ea - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:691:13
13: 0x5cbba2d09789 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]:
:panicking::panic_handler::{closure#0}, !>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:18
2:18
14: 0x5cbba2d13bed - __rustc[b7974e8690430dd9]::rust_begin_unwind
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
15: 0x5cbba2d52bdd - core[c1f1a4ba060b9bfa]::panicking::panic_nounwind_fmt::runtime
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:122:2
2
16: 0x5cbba2d52bdd - core[c1f1a4ba060b9bfa]::panicking::panic_nounwind_fmt
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/intrinsics/mod.rs:
2447:9
17: 0x5cbba2d52b5b - core[c1f1a4ba060b9bfa]::panicking::panic_nounwind
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:225:5
18: 0x5cbba2d52ce7 - core[c1f1a4ba060b9bfa]::panicking::panic_cannot_unwind
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:337:5
19: 0x5cbba16a0a47 - glib::main_context_channel::dispatch::h3e10e85263d94f7a
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.18.5/src
/main_context_channel.rs:207:1
20: 0x7d50264d5585 - <unknown>
21: 0x7d5026534977 - <unknown>
22: 0x7d50264d4a23 - g_main_context_iteration
23: 0x7d50203feced - gtk_main_iteration_do
INFO: 127.0.0.1:33184 - "GET /settings/captures HTTP/1.1" 200 OK
INFO: 127.0.0.1:33200 - "OPTIONS /capture/readiness HTTP/1.1" 200 OK
24: 0x5cbba24ce409 - gtk::auto::functions::main_iteration_do::hbedd429a5a24adaa
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gtk-0.18.2/src/
auto/functions.rs:392:24
INFO: 127.0.0.1:33200 - "GET /capture/readiness HTTP/1.1" 200 OK
25: 0x5cbba14c867b - tao::platform_impl::platform::event_loop::EventLoop<T>::run_return::{{closure}}::h1e25aeb8
f359a423
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/
platform_impl/linux/event_loop.rs:1131:11
26: 0x5cbba1933a89 - glib::main_context::<impl glib::auto::main_context::MainContext>::with_thread_default::h6a
3afd5ee19c4a84
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.18.5/src
/main_context.rs:154:12
27: 0x5cbba14c8182 - tao::platform_impl::platform::event_loop::EventLoop<T>::run_return::hfed595ada628b309
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/
platform_impl/linux/event_loop.rs:1030:8
28: 0x5cbba14c90b3 - tao::platform_impl::platform::event_loop::EventLoop<T>::run::h20552bf22604fc19
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/
platform_impl/linux/event_loop.rs:983:26
29: 0x5cbba14a98b4 - tao::event_loop::EventLoop<T>::run::hc07c4e95e870ec59
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/
event_loop.rs:214:21
30: 0x5cbba19ffc7e - <tauri_runtime_wry::Wry<T> as tauri_runtime::Runtime<T>>::run::h8b6f44cfd47a3517
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-runtime-w
ry-2.9.3/src/lib.rs:3087:21
31: 0x5cbba1a4c734 - tauri::app::App<R>::run::hd4562b14d1e57a88
at /home/franklin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-2.9.5/src
/app.rs:1249:8
32: 0x5cbba1b0f490 - voicebox::run::hc0fab6f8523046cc
at /opt2/voicebox/tauri/src-tauri/src/main.rs:1427:10
33: 0x5cbba1b0f536 - voicebox::main::hdd77d42b8da17a12
at /opt2/voicebox/tauri/src-tauri/src/main.rs:1502:5
34: 0x5cbba16abe7b - core::ops::function::FnOnce::call_once::ha9ce3aca2bc8bb3c
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:25
0:5
35: 0x5cbba161332e - std::sys::backtrace::__rust_begin_short_backtrace::hc239b0de31284fde
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:16
6:18
36: 0x5cbba167fad1 - std::rt::lang_start::{{closure}}::h84a39bf88e34a73b
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/rt.rs:206:18
37: 0x5cbba2d2db84 - <&dyn core[c1f1a4ba060b9bfa]::ops::function::Fn<(), Output = i32> + core[c1f1a4ba060b9bfa]
::marker::Sync + core[c1f1a4ba060b9bfa]::panic::unwind_safe::RefUnwindSafe as core[c1f1a4ba060b9bfa]::ops::function::
FnOnce<()>>::call_once
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:28
7:21
38: 0x5cbba2d2db84 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<&dyn core[c1f1a4ba060b9bfa]::ops
::function::Fn<(), Output = i32> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::panic::unwind_safe:
:RefUnwindSafe, i32>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
39: 0x5cbba2d2db84 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<i32, &dyn core[c1f1a4ba060b9bfa]::ops::fu
nction::Fn<(), Output = i32> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::panic::unwind_safe::Ref
UnwindSafe>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
40: 0x5cbba2d2db84 - std[e28293b1aa0f68bd]::panic::catch_unwind::<&dyn core[c1f1a4ba060b9bfa]::ops::function::F
n<(), Output = i32> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::panic::unwind_safe::RefUnwindSaf
e, i32>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
41: 0x5cbba2d2db84 - std[e28293b1aa0f68bd]::rt::lang_start_internal::{closure#0}
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/rt.rs:175:24
42: 0x5cbba2d2db84 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<std[e28293b1aa0f68bd]::rt::lang_
start_internal::{closure#0}, isize>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
43: 0x5cbba2d2db84 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<isize, std[e28293b1aa0f68bd]::rt::lang_st
art_internal::{closure#0}>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
44: 0x5cbba2d2db84 - std[e28293b1aa0f68bd]::panic::catch_unwind::<std[e28293b1aa0f68bd]::rt::lang_start_interna
l::{closure#0}, isize>
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
45: 0x5cbba2d2db84 - std[e28293b1aa0f68bd]::rt::lang_start_internal
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/rt.rs:171:5
46: 0x5cbba167fab7 - std::rt::lang_start::h240bc989eb6b96f4
at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/rt.rs:205:5
47: 0x5cbba1b0f55e - main
48: 0x7d501dc2a1ca - <unknown>
49: 0x7d501dc2a28b - __libc_start_main
50: 0x5cbba14945a5 - _start
51: 0x0 - <unknown>
thread caused non-unwinding panic. aborting.
```
3 条评论