Bug #2371
opengtk4: Client crash when accepting one treaty from many
0%
Description
Likely a regression with #2306; if there's diplomacy dialog open with multiple opponents, individual dialog does not close when it gets accepted, and sometimes client crashes at that point.
Files
Updated by Marko Lindqvist about 3 hours ago
- Blocks Task #2218: Release 3.2.7 added
Updated by Marko Lindqvist about 1 hour ago
#2306 should be reverted, and fixed properly - the actual problem is as follows:
gui_dialog_destroy() does not immediately cause call of gui_dialog_destroy_handler(), but only from gtk's main loop when it's next time entered.
gui_dialog_destroy() is first called for the last diplomacy dialog, and then for the main diplomacy dialog. This is correct order, but it still results in main diplomacy dialog being destroyed at this point.
gui_dialog_destroy_handler() is called from the gtk main loop for the last diplomacy dialog. It tries to access things that were owned by now destroyed main diplomacy dialog.
The solution is to move any access to external, potentially destroyed, dialogs from gui_dialog_destroy_handler() to happen already in gui_dialog_destroy()
Updated by Marko Lindqvist about 1 hour ago
- File 0080-gtk4-x-Fix-diplodlg-closing-memory-handling.patch 0080-gtk4-x-Fix-diplodlg-closing-memory-handling.patch added
- File 0037-gtk4-Fix-diplodlg-closing-memory-handling.patch 0037-gtk4-Fix-diplodlg-closing-memory-handling.patch added
- Status changed from New to In Review
- Assignee set to Marko Lindqvist
Updated by Marko Lindqvist 39 minutes ago
- Related to Bug #2306: gtk4: Double destruction of diplomacy dialog added