On Linux, Dotaz pins one CPU core at ~100% while idle. Root cause is in electrobun/CEF, not Dotaz: in CEF's default single-threaded message-loop mode, Chromium attaches a busy GLib source to the shared default GMainContext that gtk_main() pumps, so ppoll never blocks.
Current state: worked around in our electrobun fork (matej21/electrobun, branch feat/linux-wayland) via multi_threaded_message_loop. Works, but more invasive (needs XInitThreads, raw-Xlib modifier check, GTK dialog marshalling, --force-device-scale-factor).
Upstream fix: blackboardsh/electrobun#473 fixes the same spin more simply via CefRunMessageLoop() (keeps CEF single-threaded). Verified it works on current upstream main (CEF 147): idle drops from ~100 to ~1–2 jiffies/s.
TODO: once #473 is merged upstream, bump our electrobun dependency to it and drop the more invasive MT fork patch.
On Linux, Dotaz pins one CPU core at ~100% while idle. Root cause is in electrobun/CEF, not Dotaz: in CEF's default single-threaded message-loop mode, Chromium attaches a busy GLib source to the shared default
GMainContextthatgtk_main()pumps, soppollnever blocks.Current state: worked around in our electrobun fork (
matej21/electrobun, branchfeat/linux-wayland) viamulti_threaded_message_loop. Works, but more invasive (needsXInitThreads, raw-Xlib modifier check, GTK dialog marshalling,--force-device-scale-factor).Upstream fix: blackboardsh/electrobun#473 fixes the same spin more simply via
CefRunMessageLoop()(keeps CEF single-threaded). Verified it works on current upstreammain(CEF 147): idle drops from ~100 to ~1–2 jiffies/s.TODO: once #473 is merged upstream, bump our electrobun dependency to it and drop the more invasive MT fork patch.