HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. "Read more...":https://support.plan.io/news/187
Bug #857974
closedQt client with -t augmentedi dumps core (2.6.1+)
0%
Description
I ran 'freeciv-qt -t augmentedi'. I was starting games with random rulesets and random changes to Game options, and if the game started ok, then quit and try again. I was looking for trouble (like a core dump), found it, then got confused with my own note-taking and can't reproduce it, or be sure what I did when it triggered.
Core was generated by `freeciv-qt'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f31eb0a5ee4 in QActionPrivate::sendDataChanged() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
[Current thread is 1 (Thread 0x7f31e53c74c0 (LWP 3553034))]
(gdb) bt full
#0 0x00007f31eb0a5ee4 in QActionPrivate::sendDataChanged() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#1 0x0000563b00347976 in gov_menu::update() (this=0x563b02558380) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qarraydata.h:211
gov = 0x563b05206ab0
revol_gov = 0x563b05206480
sprite = <optimized out>
gov_count = 9
i = 6
j = 5
#2 0x0000563b00347b84 in gov_menu::update_all() () at menu.cpp:735
m = <optimized out>
container =
{c = {q_hash = {{d = 0x563b01d07a70, e = 0x563b01d07a70}}}, i = {i = {i = 0x563b01fd2d20}}, e = {i = {i = 0x563b01d07a70}}, control = 1}
#3 0x0000563b00358089 in real_menus_update () at menu.cpp:580
#4 real_menus_update() () at menu.cpp:571
#5 0x0000563b003580be in qt_start_turn() () at menu.cpp:77
#6 0x0000563b00340601 in qtg_update_timeout_label() () at mapview.cpp:1086
#7 0x0000563b003d698b in client_handle_packet (type=type@entry=PACKET_BEGIN_TURN, packet=packet@entry=0x563b04ed9010) at packhand_gen.c:276
#8 0x0000563b0039689f in client_packet_input (packet=packet@entry=0x563b04ed9010, type=128) at client_main.c:770
FUNCTION = "client_packet_input"
#9 0x0000563b0039d79c in input_from_server (fd=fd@entry=41) at clinet.c:416
type = PACKET_BEGIN_TURN
packet = 0x563b04ed9010
nb = <optimized out>
FUNCTION = "input_from_server"
#10 0x0000563b00445c14 in fc_client::server_input(int) (this=0x563b017f8270, sock=41) at fc_client.cpp:462
#11 0x00007f31eb88a5c8 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007f31eb897135 in QSocketNotifier::activated(int, QSocketNotifier::QPrivateSignal) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007f31eb897491 in QSocketNotifier::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007f31eb0aaa86 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007f31eb0b3e00 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007f31eb85ea9a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007f31eb8b7305 in () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007f31e8ee784d in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007f31e8ee7ad0 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007f31e8ee7b73 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007f31eb8b66a5 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007f31eb85d63b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007f31eb8653a6 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x0000563b00445ee1 in fc_client::fc_main(QApplication*) (this=0x563b017f8270, qapp=0x563b0143c120) at fc_client.cpp:257
#25 0x0000563b003226d3 in qtg_ui_main(int, char**) (argc=<optimized out>, argv=<optimized out>) at gui_main.cpp:191
qpm = <optimized out>
app_icon = {d = 0x563b01e2dc70}
#26 0x0000563b00396fce in client_main (argc=1, argv=0x7fff82e71708) at client_main.c:685
i = 1
loglevel = LOG_NORMAL
ui_options = <optimized out>
ui_separator = <optimized out>
option = <optimized out>
fatal_assertions = -1
--Type <RET> for more, q to quit, c to continue without paging--c
aii = 1
FUNCTION = "client_main"
#27 0x00007f31ea9fa1e3 in __libc_start_main (main=0x563b00320460 <main(int, char**)>, argc=1, argv=0x7fff82e71708, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff82e716f8) at ../csu/libc-start.c:308
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 4538260550429502599, 94811406342016, 140735389570816, 0, 0, 7886408311432866951, 7849482102057397383}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7fff82e71718, 0x7f31ec77c190}, data = {prev = 0x0, cleanup = 0x0, canceltype = -2098784488}}}
not_first_call = <optimized out>
#28 0x0000563b003217ae in _start () at gui_main.cpp:114
Files
Related issues
Updated by Marko Lindqvist about 3 years ago
Chippo Elder wrote:
#5 0x0000563b003580be in qt_start_turn() () at menu.cpp:77
#6 0x0000563b00340601 in qtg_update_timeout_label() () at mapview.cpp:1086
This call-chain is showing up in several of your backtraces in different tickets. I think qt_start_turn() gets called when client state is not suitable for it. I don't know why Qt-client has that qt_start_turn() call in qtg_update_timeout_label(). Other clients do not have equivalent call in their update_timeout_label() function.
Updated by Jacob Nevins about 3 years ago
- Related to Bug #857869: Qt SEGV in Cancel of Load Game (2.6.1+) added
Updated by Jacob Nevins about 3 years ago
- Related to Bug #858251: SEGV in name_translation_get (2.6.1+, qt) added
Updated by Marko Lindqvist almost 3 years ago
- Category set to Client
- Status changed from New to In Progress
- Sprint/Milestone set to 2.6.3
Marko Lindqvist wrote:
I don't know why Qt-client has that qt_start_turn() call in qtg_update_timeout_label(). Other clients do not have equivalent call in their update_timeout_label() function.
I considered patching over that design in S2_6, but it turned out that there's no low-impact way to do it, so I'm going to full clean gui API change even in S2_6. As qt_start_turn() call goes away from qtg_update_timeout_label(), any ticket with backtrace with that call chain should be closed if my patch gets accepted.
Updated by Marko Lindqvist almost 3 years ago
- File 0022-Fix-Qt-client-crash-on-timeout-label-update.patch 0022-Fix-Qt-client-crash-on-timeout-label-update.patch added
- File 0010-Fix-Qt-client-crash-on-timeout-label-update.patch 0010-Fix-Qt-client-crash-on-timeout-label-update.patch added
- File 0006-Fix-Qt-client-crash-on-timeout-label-update.patch 0006-Fix-Qt-client-crash-on-timeout-label-update.patch added
- Status changed from In Progress to Resolved
Patches that reimplement affected code. In any case this is cleaner implementation. I believe it to also avoid the crashes of the old implementation.
Updated by Marko Lindqvist almost 3 years ago
- Status changed from Resolved to Closed
- Assignee set to Marko Lindqvist
Updated by Marko Lindqvist over 2 years ago
- Sprint/Milestone changed from 2.6.3 to 2.6.2.1