Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault when selecting orders #2490

Open
lmoureaux opened this issue Jan 6, 2025 · 0 comments
Open

Segfault when selecting orders #2490

lmoureaux opened this issue Jan 6, 2025 · 0 comments
Labels
bug Something isn't working gui This issue requires changes to the user interface important This issue should be fixed asap
Milestone

Comments

@lmoureaux
Copy link
Contributor

Describe the bug

I got a bunch of assertion errors followed by a segfault when trying to load a unit into a ship. There were two ships inside a city, one of which had a warrior. I used goto to add another unit and the transport selection dialog (the full one with buttons, not the small menu) popped up. I used the buttons to cycle through transports and ended up with the warrior selected (wut?), then eventually the game crashed.

To Reproduce
Steps to reproduce the behavior:

  1. Unclear

Expected behavior
No crash

Screenshots
Assertion stack trace:

[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - Stack trace (most recent call last):
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #37   Object "/home/louis/Personal/freeciv21/build/freeciv21-client", at 0x62ffd6ad4eb4, in _start
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #36   Source "../csu/libc-start.c", line 360, in __libc_start_main_impl [0x77e3bd22a28a]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #35   Source "../sysdeps/nptl/libc_start_call_main.h", line 58, in __libc_start_call_main [0x77e3bd22a1c9]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #34   Source "/home/louis/Personal/freeciv21/client/gui_main.cpp", line 63, in main [0x62ffd6b96d0e]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          60: /**
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          61:    Entry point for whole freeciv client program.
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          62:  */
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       >  63: int main(int argc, char **argv) { return client_main(argc, argv); }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          64: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          65: /**
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          66:    The main loop for the UI.  This is called from main(), and when it
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #33   Source "/home/louis/Personal/freeciv21/client/client_main.cpp", line 621, in client_main [0x62ffd6b33695]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         618:   editor_init();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         619: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         620:   // run gui-specific client
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 621:   ui_main();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         622: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         623:   // termination
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         624:   client_exit();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #32   Source "/home/louis/Personal/freeciv21/client/gui_main.cpp", line 85, in ui_main [0x62ffd6b96f7c]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          82:       gui_clear_theme();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          83:     }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          84:     freeciv_qt = new fc_client();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       >  85:     freeciv_qt->fc_main(qApp);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          86:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          87: }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #31   Source "/home/louis/Personal/freeciv21/client/fc_client.cpp", line 158, in fc_main [0x62ffd6b7d41a]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         155:   startTimer(TIMER_INTERVAL);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         156:   connect(qapp, &QCoreApplication::aboutToQuit, this, &fc_client::closing);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         157:   qapp->setAttribute(Qt::AA_UseHighDpiPixmaps);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 158:   qapp->exec();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         159: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         160:   free_mapcanvas_and_overview();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         161:   tileset_free_tiles(tileset);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #30   Source "kernel/qcoreapplication.cpp", line 1375, in exec [0x77e3bdcdde07]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #29   Source "kernel/qeventloop.cpp", line 235, in exec [0x77e3bdcd549a]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #28   Source "kernel/qeventdispatcher_glib.cpp", line 423, in processEvents [0x77e3bdd33208]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #27   Object "/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0", at 0x77e3bc513a52, in g_main_context_iteration
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #26   Object "/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0", at 0x77e3bc573716, in 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #25   Object "/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0", at 0x77e3bc5145b4, in 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #24   Source "kernel/qeventdispatcher_glib.cpp", line 107, in socketNotifierSourceDispatch [0x77e3bdd33dac]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #23   Source "kernel/qcoreapplication.cpp", line 1064, in notifyInternal2 [0x77e3bdcd6b37]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #22   Source "kernel/qapplication.cpp", line 3640, in notify_helper [0x77e3be96bd44]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #21   Source "socket/qnativesocketengine.cpp", line 1274, in event [0x77e3bf2b0e38]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #20 | Source "socket/qabstractsocket.cpp", line 748, in emitReadyRead
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       Source "socket/qabstractsocket.cpp", line 1323, in canReadNotification [0x77e3bf29db4e]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #19 | Source "kernel/qobject.cpp", line 3925, in call
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       Source "../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h", line 398, in doActivate<false> [0x77e3bdd11265]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #18   Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 418, in impl [0x62ffd6b845d4]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         415:                 delete static_cast<QSlotObject*>(this_);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         416:                 break;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         417:             case Call:
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 418:                 FuncType::template call<Args, R>(static_cast<QSlotObject*>(this_)->function, static_cast<typename FuncType::Object *>(r), a);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         419:                 break;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         420:             case Compare:
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         421:                 *ret = *reinterpret_cast<Func *>(a) == static_cast<QSlotObject*>(this_)->function;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #17   Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 185, in call<QtPrivate::List<>, void> [0x62ffd6b84933]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         182:         enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true};
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         183:         template <typename SignalArgs, typename R>
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         184:         static void call(Function f, Obj *o, void **arg) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 185:             FunctorCall<typename Indexes<ArgumentCount>::Value, SignalArgs, R, Function>::call(f, o, arg);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         186:         }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         187:     };
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         188:     template<class Obj, typename Ret, typename... Args> struct FunctionPointer<Ret (Obj::*) (Args...) const>
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #16   Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 152, in call [0x62ffd6b84abe]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         149:     template <int... II, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         150:     struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...)> {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         151:         static void call(SlotRet (Obj::*f)(SlotArgs...), Obj *o, void **arg) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 152:             (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         153:         }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         154:     };
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         155:     template <int... II, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #15   Source "/home/louis/Personal/freeciv21/client/fc_client.cpp", line 303, in server_input [0x62ffd6b7db11]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         300: void fc_client::server_input()
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         301: {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         302:   if (auto *socket = dynamic_cast<QIODevice *>(sender())) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 303:     input_from_server(socket);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         304:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         305: }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #14   Source "/home/louis/Personal/freeciv21/client/clinet.cpp", line 311, in input_from_server [0x62ffd6b3e9ce]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         308:       void *packet = get_packet_from_connection(&client.conn, &type);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         309: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         310:       if (nullptr != packet) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 311:         client_packet_input(packet, type);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         312:         ::operator delete(packet);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         313: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         314:         if (type == PACKET_PROCESSING_FINISHED) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #13   Source "/home/louis/Personal/freeciv21/client/client_main.cpp", line 711, in client_packet_input [0x62ffd6b35151]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         708:     qCritical("Received packet %s (%d) before establishing connection!",
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         709:               packet_name(static_cast<packet_type>(type)), type);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         710:     disconnect_from_server();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 711:   } else if (!client_handle_packet(static_cast<packet_type>(type), packet)) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         712:     qCritical("Received unknown packet (type %d) from server!", type);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         713:     disconnect_from_server();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         714:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #12   Source "/home/louis/Personal/freeciv21/build/client/packhand_gen.cpp", line 210, in client_handle_packet [0x62ffd6d7dc3b]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         207:     return true;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         208: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         209:   case PACKET_UNIT_ACTIONS:
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 210:     handle_unit_actions(static_cast<const packet_unit_actions *>(packet));
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         211:     return true;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         212: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         213:   case PACKET_DIPLOMACY_INIT_MEETING:
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #11   Source "/home/louis/Personal/freeciv21/client/packhand.cpp", line 5024, in handle_unit_actions [0x62ffd6c2e827]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        5021:       action_selection_next_in_focus(packet->actor_unit_id);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        5022:     } else {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        5023:       // Show the client specific action dialog
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       >5024:       popup_action_selection(actor_unit, target_city, target_unit,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        5025:                              target_tile, target_extra, act_probs);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        5026:     }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        5027:   } else if (disturb_player) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #10   Source "/home/louis/Personal/freeciv21/client/dialogs.cpp", line 1791, in popup_action_selection [0x62ffd6b5b602]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1789:   cd = king()->get_diplo_dialog();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1790:   if ((cd != nullptr) && cd->targeted_unit != nullptr) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       >1791:     cd->update_dialog(act_probs);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1792:     return;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1793:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1794:   cd = new choice_dialog(title, text, queen()->game_tab_widget,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #9    Source "/home/louis/Personal/freeciv21/client/dialogs.cpp", line 1413, in update_dialog [0x62ffd6b5a1d6]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1410:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1411:   unit_skip->setParent(nullptr);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1412:   fc_assert_ret(actor_unit);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       >1413:   action_selection_refresh(actor_unit, nullptr, targeted_unit,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1414:                            targeted_unit->tile,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1415:                            (sub_target_id[ASTK_EXTRA] != EXTRA_NONE
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        1416:                                 ? extra_by_number(sub_target_id[ASTK_EXTRA])
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #8    Source "/home/louis/Personal/freeciv21/client/dialogs.cpp", line 3689, in action_selection_refresh [0x62ffd6b63fa4]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        3686:       if (target_city != nullptr) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        3687:         qv2 = target_city->id;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        3688:       } else {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       >3689:         fc_assert_msg(!action_prob_possible(act_probs[act])
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        3690:                           || target_city != nullptr,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -        3691:                       "Action enabled against non existing city!");
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #7    Source "/home/louis/Personal/freeciv21/utility/log.cpp", line 242, in fc_assert_handle_failure [0x62ffd6fc6055]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         239: {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         240:   Q_UNUSED(function)
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         241:   QMessageLogger logger(file, line, assert_category().categoryName());
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 242:   logger.critical("Assertion %s failed", condition);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         243:   if (!message.isEmpty()) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         244:     logger.critical().noquote() << message;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         245:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #6    Source "global/qlogging.cpp", line 779, in critical [0x77e3bda90c84]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #5    Source "global/qlogging.cpp", line 385, in qt_message [0x77e3bdad294d]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #4    Source "global/qlogging.cpp", line 1856, in qt_message_print [0x77e3bdad282f]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #3    Source "/home/louis/Personal/freeciv21/utility/fcbacktrace.cpp", line 74, in backtrace_log [0x62ffd6fb36ce]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          71:                           const QString &message)
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          72: {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          73:   if (type == QtFatalMsg || type == QtCriticalMsg) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       >  74:     backtrace_print(type, context);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          75:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          76: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          77:   if (previous != nullptr) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #2    Source "/home/louis/Personal/freeciv21/utility/fcbacktrace.cpp", line 99, in backtrace_print [0x62ffd6fb376f]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          97:   using namespace backward;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -          98:   StackTrace st;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       >  99:   st.load_here(MAX_NUM_FRAMES);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         100: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         101:   // Generate the trace string
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         102:   Printer p;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #1    Source "/home/louis/Personal/freeciv21/dependencies/backward-cpp-1.6/backward.hpp", line 869, in load_here [0x62ffd6fb4611]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         866:       return 0;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         867:     }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         868:     _stacktrace.resize(depth);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 869:     size_t trace_cnt = details::unwind(callback(*this), depth);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         870:     _stacktrace.resize(trace_cnt);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         871:     skip_n_firsts(0);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         872:     return size();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - #0    Source "/home/louis/Personal/freeciv21/dependencies/backward-cpp-1.6/backward.hpp", line 851, in unwind<backward::StackTraceImpl<backward::system_tag::linux_tag>::callback> [0x62ffd6fb7895]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         849: template <typename F> size_t unwind(F f, size_t depth) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         850:   Unwinder<F> unwinder;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -       > 851:   return unwinder(f, depth);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         852: }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         853: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) -         854: } // namespace details
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/dialogs.cpp:3689) - Assertion !action_prob_possible(act_probs[act]) || target_city != nullptr failed

Another assertion stack trace:

[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - Stack trace (most recent call last):
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #38   Object "/home/louis/Personal/freeciv21/build/freeciv21-client", at 0x62ffd6ad4eb4, in _start
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #37   Source "../csu/libc-start.c", line 360, in __libc_start_main_impl [0x77e3bd22a28a]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #36   Source "../sysdeps/nptl/libc_start_call_main.h", line 58, in __libc_start_call_main [0x77e3bd22a1c9]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #35   Source "/home/louis/Personal/freeciv21/client/gui_main.cpp", line 63, in main [0x62ffd6b96d0e]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          60: /**
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          61:    Entry point for whole freeciv client program.
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          62:  */
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >  63: int main(int argc, char **argv) { return client_main(argc, argv); }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          64: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          65: /**
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          66:    The main loop for the UI.  This is called from main(), and when it
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #34   Source "/home/louis/Personal/freeciv21/client/client_main.cpp", line 621, in client_main [0x62ffd6b33695]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         618:   editor_init();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         619: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         620:   // run gui-specific client
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 621:   ui_main();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         622: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         623:   // termination
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         624:   client_exit();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #33   Source "/home/louis/Personal/freeciv21/client/gui_main.cpp", line 85, in ui_main [0x62ffd6b96f7c]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          82:       gui_clear_theme();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          83:     }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          84:     freeciv_qt = new fc_client();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >  85:     freeciv_qt->fc_main(qApp);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          86:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          87: }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #32   Source "/home/louis/Personal/freeciv21/client/fc_client.cpp", line 158, in fc_main [0x62ffd6b7d41a]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         155:   startTimer(TIMER_INTERVAL);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         156:   connect(qapp, &QCoreApplication::aboutToQuit, this, &fc_client::closing);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         157:   qapp->setAttribute(Qt::AA_UseHighDpiPixmaps);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 158:   qapp->exec();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         159: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         160:   free_mapcanvas_and_overview();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         161:   tileset_free_tiles(tileset);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #31   Source "kernel/qcoreapplication.cpp", line 1375, in exec [0x77e3bdcdde07]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #30   Source "kernel/qeventloop.cpp", line 235, in exec [0x77e3bdcd549a]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #29   Source "kernel/qeventdispatcher_glib.cpp", line 423, in processEvents [0x77e3bdd33208]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #28   Object "/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0", at 0x77e3bc513a52, in g_main_context_iteration
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #27   Object "/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0", at 0x77e3bc573716, in 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #26   Object "/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.8000.0", at 0x77e3bc5145b4, in 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #25   Source "kernel/qeventdispatcher_glib.cpp", line 107, in socketNotifierSourceDispatch [0x77e3bdd33dac]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #24   Source "kernel/qcoreapplication.cpp", line 1064, in notifyInternal2 [0x77e3bdcd6b37]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #23   Source "kernel/qapplication.cpp", line 3640, in notify_helper [0x77e3be96bd44]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #22   Source "socket/qnativesocketengine.cpp", line 1274, in event [0x77e3bf2b0e38]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #21 | Source "socket/qabstractsocket.cpp", line 748, in emitReadyRead
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       Source "socket/qabstractsocket.cpp", line 1323, in canReadNotification [0x77e3bf29db4e]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #20 | Source "kernel/qobject.cpp", line 3925, in call
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       Source "../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h", line 398, in doActivate<false> [0x77e3bdd11265]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #19   Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 418, in impl [0x62ffd6b845d4]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         415:                 delete static_cast<QSlotObject*>(this_);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         416:                 break;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         417:             case Call:
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 418:                 FuncType::template call<Args, R>(static_cast<QSlotObject*>(this_)->function, static_cast<typename FuncType::Object *>(r), a);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         419:                 break;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         420:             case Compare:
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         421:                 *ret = *reinterpret_cast<Func *>(a) == static_cast<QSlotObject*>(this_)->function;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #18   Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 185, in call<QtPrivate::List<>, void> [0x62ffd6b84933]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         182:         enum {ArgumentCount = sizeof...(Args), IsPointerToMemberFunction = true};
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         183:         template <typename SignalArgs, typename R>
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         184:         static void call(Function f, Obj *o, void **arg) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 185:             FunctorCall<typename Indexes<ArgumentCount>::Value, SignalArgs, R, Function>::call(f, o, arg);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         186:         }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         187:     };
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         188:     template<class Obj, typename Ret, typename... Args> struct FunctionPointer<Ret (Obj::*) (Args...) const>
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #17   Source "/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h", line 152, in call [0x62ffd6b84abe]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         149:     template <int... II, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         150:     struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...)> {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         151:         static void call(SlotRet (Obj::*f)(SlotArgs...), Obj *o, void **arg) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 152:             (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         153:         }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         154:     };
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         155:     template <int... II, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #16   Source "/home/louis/Personal/freeciv21/client/fc_client.cpp", line 303, in server_input [0x62ffd6b7db11]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         300: void fc_client::server_input()
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         301: {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         302:   if (auto *socket = dynamic_cast<QIODevice *>(sender())) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 303:     input_from_server(socket);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         304:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         305: }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #15   Source "/home/louis/Personal/freeciv21/client/clinet.cpp", line 311, in input_from_server [0x62ffd6b3e9ce]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         308:       void *packet = get_packet_from_connection(&client.conn, &type);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         309: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         310:       if (nullptr != packet) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 311:         client_packet_input(packet, type);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         312:         ::operator delete(packet);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         313: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         314:         if (type == PACKET_PROCESSING_FINISHED) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #14   Source "/home/louis/Personal/freeciv21/client/client_main.cpp", line 711, in client_packet_input [0x62ffd6b35151]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         708:     qCritical("Received packet %s (%d) before establishing connection!",
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         709:               packet_name(static_cast<packet_type>(type)), type);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         710:     disconnect_from_server();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 711:   } else if (!client_handle_packet(static_cast<packet_type>(type), packet)) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         712:     qCritical("Received unknown packet (type %d) from server!", type);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         713:     disconnect_from_server();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         714:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #13   Source "/home/louis/Personal/freeciv21/build/client/packhand_gen.cpp", line 210, in client_handle_packet [0x62ffd6d7dc3b]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         207:     return true;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         208: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         209:   case PACKET_UNIT_ACTIONS:
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 210:     handle_unit_actions(static_cast<const packet_unit_actions *>(packet));
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         211:     return true;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         212: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         213:   case PACKET_DIPLOMACY_INIT_MEETING:
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #12   Source "/home/louis/Personal/freeciv21/client/packhand.cpp", line 5024, in handle_unit_actions [0x62ffd6c2e827]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        5021:       action_selection_next_in_focus(packet->actor_unit_id);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        5022:     } else {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        5023:       // Show the client specific action dialog
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >5024:       popup_action_selection(actor_unit, target_city, target_unit,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        5025:                              target_tile, target_extra, act_probs);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        5026:     }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        5027:   } else if (disturb_player) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #11   Source "/home/louis/Personal/freeciv21/client/dialogs.cpp", line 1791, in popup_action_selection [0x62ffd6b5b602]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1789:   cd = king()->get_diplo_dialog();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1790:   if ((cd != nullptr) && cd->targeted_unit != nullptr) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >1791:     cd->update_dialog(act_probs);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1792:     return;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1793:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1794:   cd = new choice_dialog(title, text, queen()->game_tab_widget,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #10   Source "/home/louis/Personal/freeciv21/client/dialogs.cpp", line 1413, in update_dialog [0x62ffd6b5a1d6]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1410:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1411:   unit_skip->setParent(nullptr);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1412:   fc_assert_ret(actor_unit);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >1413:   action_selection_refresh(actor_unit, nullptr, targeted_unit,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1414:                            targeted_unit->tile,
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1415:                            (sub_target_id[ASTK_EXTRA] != EXTRA_NONE
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1416:                                 ? extra_by_number(sub_target_id[ASTK_EXTRA])
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #9    Source "/home/louis/Personal/freeciv21/client/dialogs.cpp", line 3669, in action_selection_refresh [0x62ffd6b63d5c]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        3666:       continue;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        3667:     }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        3668: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >3669:     custom = get_act_sel_action_custom_text(
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        3670:         action_by_number(act), act_probs[act], actor_unit, target_city);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        3671: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        3672:     // Put the target id in qv2.
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #8    Source "/home/louis/Personal/freeciv21/client/text.cpp", line 1286, in get_act_sel_action_custom_text [0x62ffd6c7737c]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1283:     return nullptr;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1284:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1285: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >1286:   fc_assert_ret_val((action_get_target_kind(paction) != ATK_CITY
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1287:                      || target_city != nullptr),
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -        1288:                     nullptr);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #7    Source "/home/louis/Personal/freeciv21/utility/log.cpp", line 242, in fc_assert_handle_failure [0x62ffd6fc6055]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         239: {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         240:   Q_UNUSED(function)
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         241:   QMessageLogger logger(file, line, assert_category().categoryName());
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 242:   logger.critical("Assertion %s failed", condition);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         243:   if (!message.isEmpty()) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         244:     logger.critical().noquote() << message;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         245:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #6    Source "global/qlogging.cpp", line 779, in critical [0x77e3bda90c84]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #5    Source "global/qlogging.cpp", line 385, in qt_message [0x77e3bdad294d]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #4    Source "global/qlogging.cpp", line 1856, in qt_message_print [0x77e3bdad282f]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #3    Source "/home/louis/Personal/freeciv21/utility/fcbacktrace.cpp", line 74, in backtrace_log [0x62ffd6fb36ce]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          71:                           const QString &message)
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          72: {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          73:   if (type == QtFatalMsg || type == QtCriticalMsg) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >  74:     backtrace_print(type, context);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          75:   }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          76: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          77:   if (previous != nullptr) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #2    Source "/home/louis/Personal/freeciv21/utility/fcbacktrace.cpp", line 99, in backtrace_print [0x62ffd6fb376f]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          97:   using namespace backward;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -          98:   StackTrace st;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       >  99:   st.load_here(MAX_NUM_FRAMES);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         100: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         101:   // Generate the trace string
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         102:   Printer p;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #1    Source "/home/louis/Personal/freeciv21/dependencies/backward-cpp-1.6/backward.hpp", line 869, in load_here [0x62ffd6fb4611]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         866:       return 0;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         867:     }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         868:     _stacktrace.resize(depth);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 869:     size_t trace_cnt = details::unwind(callback(*this), depth);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         870:     _stacktrace.resize(trace_cnt);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         871:     skip_n_firsts(0);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         872:     return size();
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - #0    Source "/home/louis/Personal/freeciv21/dependencies/backward-cpp-1.6/backward.hpp", line 851, in unwind<backward::StackTraceImpl<backward::system_tag::linux_tag>::callback> [0x62ffd6fb7895]
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         849: template <typename F> size_t unwind(F f, size_t depth) {
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         850:   Unwinder<F> unwinder;
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -       > 851:   return unwinder(f, depth);
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         852: }
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         853: 
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) -         854: } // namespace details
[critical] freeciv21-client (/home/louis/Personal/freeciv21/client/text.cpp:1286) - Assertion (action_get_target_kind(paction) != ATK_CITY || target_city != nullptr) failed

Platform and version (please complete the following information):

  • OS: Linux
  • Freeciv21 version: master
  • Ruleset/Longturn game (if applicable): LTT

Additional context
Add any other context about the problem here.

@lmoureaux lmoureaux added bug Something isn't working gui This issue requires changes to the user interface important This issue should be fixed asap labels Jan 6, 2025
@lmoureaux lmoureaux added this to the v3.1-stable milestone Jan 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working gui This issue requires changes to the user interface important This issue should be fixed asap
Projects
None yet
Development

No branches or pull requests

1 participant