Bug #1954
open
Added by John Robertson 5 days ago.
Updated 5 days ago.
Description
Latest dev [Qt]
Race condition `real_menus_update()` is sometimes called before `real_menus_init()`.
For the Qt client this results in accessing an uninitialized `multiplayer_menu` variable.
Files
This could also be cause from a delay in the loading of the ruleset (e.g. `!game.client.ruleset_ready`).
If `real_menu_init() returns without initializing, because the ruleset took too long to load, is it ever called again?
I tend to startup the server and client at the same time. I think `real_menus_init()` returns because the ruleset has not yet been loaded, causing the `multiplayer_menu` variable to never become initialized.
Reduced, but not perfect, risk.
Perfectly remove the SIGSEGV, at the sacrifice of the menus. The menus are constantly rebuilt/updated, so eventually, the `real_menus_init()` should succeed.

Before fix
`multiplayer_menu` is NULL in `real_menus_update()` if `real_menus_init()` exits because the server ruleset is not ready.
Also available in: Atom
PDF