#3 0x11162af90 in InputQueueDisplay::radiogroup_changed(int) (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0x101912f90)
... various stuff related to boost signal
#19 0x110fe76b6 in UI::Radiogroup::set_state(int) (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0
#20 0x11162340b in InputQueueDisplay::update_priority_buttons() (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0x10190b40b)
#21 0x11161f306 in InputQueueDisplay::max_size_changed() (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0x101907306)
#22 0x11162832e in InputQueueDisplay::think() (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0x101
The problem is that if a window of a building is open while watching the replay and the priority buttons have been clicked in the game, this triggers the callback of the UI::Radiogroup, which assumed that it would only be called through *clicking* the buttons.
Since in the callback we do not check if the igbase can_act() for our current building_, we just send the player command. The code assumed it was sufficient to disable the radiobuttons in the replay, so the replay watcher cannot click on them.
Similar bugs might be potentially in other places too (e.g. productionsite max wares adjustments, warehouse settings or economy settings change), but I did not find any more on a quick glance.
To trigger it, the settings must have been adjusted in game and the replay must have the window open of the building that it was adjusted to.
This is the stacktrace for the issue:
#3 0x11162af90 in InputQueueDispl ay::radiogroup_ changed( int) (/Users/ sirver/ Desktop/ Programming/ cpp/widelands/ bzr_repo/ ../build/ debug/src/ widelands: x86_64+ 0x101912f90) :set_state( int) (/Users/ sirver/ Desktop/ Programming/ cpp/widelands/ bzr_repo/ ../build/ debug/src/ widelands: x86_64+ 0 ay::update_ priority_ buttons( ) (/Users/ sirver/ Desktop/ Programming/ cpp/widelands/ bzr_repo/ ../build/ debug/src/ widelands: x86_64+ 0x10190b40b) ay::max_ size_changed( ) (/Users/ sirver/ Desktop/ Programming/ cpp/widelands/ bzr_repo/ ../build/ debug/src/ widelands: x86_64+ 0x101907306) ay::think( ) (/Users/ sirver/ Desktop/ Programming/ cpp/widelands/ bzr_repo/ ../build/ debug/src/ widelands: x86_64+ 0x101
... various stuff related to boost signal
#19 0x110fe76b6 in UI::Radiogroup:
#20 0x11162340b in InputQueueDispl
#21 0x11161f306 in InputQueueDispl
#22 0x11162832e in InputQueueDispl
The problem is that if a window of a building is open while watching the replay and the priority buttons have been clicked in the game, this triggers the callback of the UI::Radiogroup, which assumed that it would only be called through *clicking* the buttons.
Since in the callback we do not check if the igbase can_act() for our current building_, we just send the player command. The code assumed it was sufficient to disable the radiobuttons in the replay, so the replay watcher cannot click on them.
Similar bugs might be potentially in other places too (e.g. productionsite max wares adjustments, warehouse settings or economy settings change), but I did not find any more on a quick glance.
To trigger it, the settings must have been adjusted in game and the replay must have the window open of the building that it was adjusted to.