diff options
| author | bitflash-maintainer <noreply@bitflash.invalid> | 2026-09-02 17:42:24 +0000 |
|---|---|---|
| committer | bitflash-maintainer <noreply@bitflash.invalid> | 2026-09-02 17:42:24 +0000 |
| commit | b8a976f4870ba5dfc7a6af1ea09c9277b71d686c (patch) | |
| tree | 24bc580af6e1616fd1854ebc86f700c508e62a43 /src/compactblock.cpp | |
| parent | 0a8c445742ce871c6b9352bf406d2232a6fd3134 (diff) | |
gui: check the two thread spawns the GUI target still leaves unguarded
gui.cpp is not in NODE_OBJS, so bitflash-node never sees it -- but it is in
GUI_OBJS and `all: bitflash` is the default target, so this is what an
operator who runs the windowed build is running.
Two spawns there were still unchecked. Enabling pool mode from the options
dialog set gPoolServerRunning = true and then called _beginthread without
looking at the result, so a refused spawn left the operator with a pool
that reports itself running, no RPC server for miners to reach, and nothing
in the log. The flag latches, so the branch is never retried either. The
restore dialog called std::thread(RestoreThread).detach() bare, which on a
refused spawn is an uncaught std::system_error and takes the window down --
the same failure issue #18 was about, in the same tree, one target over.
The busy flag stays where it was, set before the spawn and rolled back in
the catch. It cannot move after the spawn: RestoreThread clears it itself
on the way out, and a restore that finishes quickly would have its `false`
overwritten by ours, leaving the dialog greyed out over a search that is
not running.
Verified by type-checking gui.cpp under the Makefile's exact flags against
a stub GLFW/GL header, since this host has neither. That is a syntax and
type check, not a link: gui.cpp reaches GLFW through 13 functions and three
GL calls, all declared with their real signatures, but the GUI target has
not been built here.
Diffstat (limited to 'src/compactblock.cpp')
0 files changed, 0 insertions, 0 deletions