CleverRaven/Cataclysm-DDA
GitHub で見るdebugmsg CTDs if called from within ImGui drawing
Open
#82,138 opened on 2025年7月30日
(S2 - Confirmed)Code: Infrastructure / Style / Static AnalysisHelp WantedImGui[C++]
説明
Describe the bug
Calling debugmsg directly or through a seperate call from an cataimgui::window causes a CTD
Attach save file
Bladensburg-trimmed.tar.gz (Just a default start where I've accepted a mission to test with the diffs below)
Steps to reproduce
- Add a debugmsg or something that will call a debugmsg to an imgui window eg
diff --git a/src/mission_ui.cpp b/src/mission_ui.cpp
index 441b18f37b..8a14e3455d 100644
--- a/src/mission_ui.cpp
+++ b/src/mission_ui.cpp
@@ -304,6 +304,7 @@ void mission_ui_impl::draw_selected_description( std::vector<mission *> missions
}
parse_tags( parsed_description, get_player_character(), get_player_character() );
}
+ debugmsg( "Whoopsie" );
cataimgui::draw_colored_text( parsed_description, c_unset, table_column_width * 1.15 );
if( miss->has_deadline() ) {
const time_point deadline = miss->get_deadline();
or
diff --git a/src/mission_ui.cpp b/src/mission_ui.cpp
index 441b18f37b..8a14e3455d 100644
--- a/src/mission_ui.cpp
+++ b/src/mission_ui.cpp
@@ -304,6 +304,7 @@ void mission_ui_impl::draw_selected_description( std::vector<mission *> missions
}
parse_tags( parsed_description, get_player_character(), get_player_character() );
}
+ get_all_colors().name_to_color( "sasdjasidjasdij", report_color_error::yes );
cataimgui::draw_colored_text( parsed_description, c_unset, table_column_width * 1.15 );
if( miss->has_deadline() ) {
const time_point deadline = miss->get_deadline();
- Get to said call in game (eg loading the save provided and opening the
Mission window) - CTD (retrying does keep it alive long enough to see the debugmsg if you're lucky but then it still dies)
Expected behavior
At the very least just no CTD, potentially triggering an imgui error that lets you continue instead but ideally the normal proper error prompt + message.
Screenshots
Versions and configuration
- OS: Windows
- OS Version: 10.0.19045.6093 (22H2)
- Game Version: cdda-experimental-2025-07-24-0606-dirty [64-bit]
- Graphics Version: Tiles
- Game Language: English [en]
- Mods loaded: [ Dark Days Ahead [dda], Disable NPC Needs [no_npc_food], Portal Storms Ignore NPCs [personal_portal_storms] ]
Additional context
Callstack with the first diff
cataclysm-tiles.exe!common_assert_to_message_box<wchar_t>(const wchar_t * const expression, const wchar_t * const file_name, const unsigned int line_number, void * const return_address) Line 388
at minkernel\crts\ucrt\src\appcrt\startup\assert.cpp(388)
cataclysm-tiles.exe!common_assert<wchar_t>(const wchar_t * const expression, const wchar_t * const file_name, const unsigned int line_number, void * const return_address) Line 424
at minkernel\crts\ucrt\src\appcrt\startup\assert.cpp(424)
cataclysm-tiles.exe!_wassert(const wchar_t * expression, const wchar_t * file_name, unsigned int line_number) Line 444
at minkernel\crts\ucrt\src\appcrt\startup\assert.cpp(444)
cataclysm-tiles.exe!ImGui::ErrorRecoveryTryToRecoverState(const ImGuiErrorRecoveryState * state_in) Line 10492
at C:\dev\Cataclysm-DDA\src\third-party\imgui\imgui.cpp(10492)
cataclysm-tiles.exe!ImGui::EndFrame() Line 5542
at C:\dev\Cataclysm-DDA\src\third-party\imgui\imgui.cpp(5542)
cataclysm-tiles.exe!ImGui::Render() Line 5629
at C:\dev\Cataclysm-DDA\src\third-party\imgui\imgui.cpp(5629)
cataclysm-tiles.exe!cataimgui::client::end_frame() Line 578
at C:\dev\Cataclysm-DDA\src\cata_imgui.cpp(578)
cataclysm-tiles.exe!ui_adaptor::redraw_invalidated() Line 474
at C:\dev\Cataclysm-DDA\src\ui_manager.cpp(474)
cataclysm-tiles.exe!ui_adaptor::redraw() Line 356
at C:\dev\Cataclysm-DDA\src\ui_manager.cpp(356)
cataclysm-tiles.exe!ui_manager::redraw() Line 519
at C:\dev\Cataclysm-DDA\src\ui_manager.cpp(519)
cataclysm-tiles.exe!debug_error_prompt(const char * filename, const char * line, const char * funcname, const char * text, bool force) Line 390
at C:\dev\Cataclysm-DDA\src\debug.cpp(390)
cataclysm-tiles.exe!realDebugmsg(const char * filename, const char * line, const char * funcname, const std::string & text) Line 568
at C:\dev\Cataclysm-DDA\src\debug.cpp(568)
cataclysm-tiles.exe!realDebugmsg<>(const char * const filename, const char * const line, const char * const funcname, const char * const mes) Line 82
at C:\dev\Cataclysm-DDA\src\debug.h(82)
cataclysm-tiles.exe!mission_ui_impl::draw_selected_description(std::vector<mission *,std::allocator<mission *>> missions, int & selected_mission) Line 308
at C:\dev\Cataclysm-DDA\src\mission_ui.cpp(308)
cataclysm-tiles.exe!mission_ui_impl::draw_controls() Line 237
at C:\dev\Cataclysm-DDA\src\mission_ui.cpp(237)
cataclysm-tiles.exe!cataimgui::window::draw() Line 963
at C:\dev\Cataclysm-DDA\src\cata_imgui.cpp(963)
cataclysm-tiles.exe!cataimgui::window_impl::{ctor}::__l2::<lambda_1>::operator()(ui_adaptor & __formal) Line 838
at C:\dev\Cataclysm-DDA\src\cata_imgui.cpp(838)
[External Code]
cataclysm-tiles.exe!ui_adaptor::redraw_invalidated() Line 451
at C:\dev\Cataclysm-DDA\src\ui_manager.cpp(451)
cataclysm-tiles.exe!ui_manager::redraw_invalidated() Line 524
at C:\dev\Cataclysm-DDA\src\ui_manager.cpp(524)
cataclysm-tiles.exe!mission_ui::draw_mission_ui() Line 114
at C:\dev\Cataclysm-DDA\src\mission_ui.cpp(114)
cataclysm-tiles.exe!game::list_missions() Line 366
at C:\dev\Cataclysm-DDA\src\mission_ui.cpp(366)
cataclysm-tiles.exe!game::do_regular_action(action_id & act, avatar & player_character, const std::optional<coords::coord_point_ob<tripoint,5,0>> & mouse_target) Line 2915
at C:\dev\Cataclysm-DDA\src\handle_action.cpp(2915)
cataclysm-tiles.exe!game::handle_action() Line 3326
at C:\dev\Cataclysm-DDA\src\handle_action.cpp(3326)
cataclysm-tiles.exe!do_turn() Line 590
at C:\dev\Cataclysm-DDA\src\do_turn.cpp(590)
cataclysm-tiles.exe!WinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, char * __formal, int __formal) Line 864
at C:\dev\Cataclysm-DDA\src\main.cpp(864)
[External Code]