Closed xet7 closed 1 month ago
You will need to compile a debug version (pass -DCMAKE_BUILD_TYPE=Debug
to cmake
) and then run TSC through GDB or another C++-capable debugger available on MacOS. With GDB, issue command r
and then reproduce the crash. When it happens, return to the debugger console and issue the command bt
. This will print a proper backtrace with source file and line information of the entire call stack.
@Quintus
It is not macOS. While the hardware is M1 Air, here it is dual booting to bare metal version of Ubuntu 24.04 arm64. It is using same package that also runs at RasPi4 at Ubuntu 24.04 arm64.
So I'll try using Linux version of GDB.
@Quintus
Here is kernel and distro info:
$ uname -a
Linux m1air 6.8.0-1011-asahi-arm #11-Ubuntu SMP PREEMPT_DYNAMIC
Tue Jun 25 18:16:36 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
$ cat /etc/issue
Ubuntu 24.04 LTS \n \l
Here is the backtrace:
[New Thread 0xffffe857f100 (LWP 145240)]
[New Thread 0xffffe7d6f100 (LWP 145241)]
[New Thread 0xffffe755f100 (LWP 145243)]
[New Thread 0xffffe6d4f100 (LWP 145244)]
[New Thread 0xffffe653f100 (LWP 145245)]
warning: could not find '.gnu_debugaltlink' file for /usr/lib/aarch64-linux-gnu/spa-0.2/audioconvert/libspa-audioconvert.so
Downloading separate debug info for /usr/lib/aarch64-linux-gnu/spa-0.2/audioconvert/libspa-audioconvert.so
[New Thread 0xffffe5caf100 (LWP 145248)]
Configuration file is '/home/user/.config/tsc/config.xml'.
Translation locale is LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C.UTF-8;LC_TIME=C.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=C.UTF-8;LC_NAME=C.UTF-8;LC_ADDRESS=C.UTF-8;LC_TELEPHONE=C.UTF-8;LC_MEASUREMENT=C.UTF-8;LC_IDENTIFICATION=C.UTF-8
Translation support with gettext set to:
Directory /home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/translations
Codeset: UTF-8
Text domain: Secretchronicles
CEGUI log file is at '/home/user/.cache/tsc/cegui.log'.
Downloading separate debug info for /usr/lib/aarch64-linux-gnu/cegui-0.8/libCEGUICoreWindowRendererSet.so
Loading campaigns
Loaded campaign file: /home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/campaigns/tutorial.tsccpn
Loaded campaign file: /home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/campaigns/smc.tsccpn
Setting up level player
Loading levels
Applying preferences
No joysticks available
Loading world from directory '/home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/worlds/test_1'
Loading world from directory '/home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/worlds/world_1'
Loading world from directory '/home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/worlds/world_2'
Loading world from directory '/home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/worlds/world_3'
Loading world from directory '/home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/worlds/world_4'
Loaded level: /home/user/repos/Secretchronicles/TSC/tsc/tsc/share/tsc/levels/menu_brown_1.tsclvl
Preloading images and sounds...
Done preloading images and sounds.
[New Thread 0xffff918b3100 (LWP 145254)]
CEGUI::InvalidRequestException in function 'void CEGUI::Editbox::setValidationString(const CEGUI::String&)' (./cegui/src/widgets/Editbox.cpp:161) : Unable to set validation string on Editbox 'game_spinner_camera_hor_speed/__auto_editbox__' because it does not currently have a RegexMatcher validator.
terminate called after throwing an instance of 'CEGUI::InvalidRequestException'
what(): CEGUI::InvalidRequestException in function 'void CEGUI::Editbox::setValidationString(const CEGUI::String&)' (./cegui/src/widgets/Editbox.cpp:161) : Unable to set validation string on Editbox 'game_spinner_camera_hor_speed/__auto_editbox__' because it does not currently have a RegexMatcher validator.
Thread 1 "tsc" received signal SIGABRT, Aborted.
Download failed: Invalid argument. Continuing without source file ./nptl/./nptl/pthread_kill.c.
__pthread_kill_implementation (threadid=281474841700576, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
warning: 44 ./nptl/pthread_kill.c: No such file or directory
(gdb) bt
#0 __pthread_kill_implementation (threadid=281474841700576, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1 0x0000fffff7197690 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2 0x0000fffff714cb3c in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x0000fffff7137e00 in __GI_abort () at ./stdlib/abort.c:79
#4 0x0000fffff747dd2c in __gnu_cxx::__verbose_terminate_handler () at ../../../../src/libstdc++-v3/libsupc++/vterminate.cc:95
#5 0x0000fffff7479f8c in __cxxabiv1::__terminate (handler=<optimized out>) at ../../../../src/libstdc++-v3/libsupc++/eh_terminate.cc:48
#6 0x0000fffff7470d3c in std::terminate () at ../../../../src/libstdc++-v3/libsupc++/eh_terminate.cc:58
#7 0x0000fffff747a3a0 in __cxxabiv1::__cxa_rethrow () at ../../../../src/libstdc++-v3/libsupc++/eh_throw.cc:136
#8 0x0000fffff7cfa620 in CEGUI::WindowManager::loadLayoutFromFile
(this=<optimized out>, filename=<optimized out>, resourceGroup=<optimized out>, callback=0x0, userdata=<optimized out>)
at /usr/src/cegui-mk2-0.8.7+git20220615-5.1ubuntu2/cegui/src/WindowManager.cpp:294
#9 0x0000aaaaaaccb2c8 [PAC] in TSC::cMenu_Options::Init_GUI (this=0xaaaaac06ab80) at /home/user/repos/Secretchronicles/TSC/tsc/src/gui/menu_data.cpp:1428
#10 0x0000aaaaaaccb070 in TSC::cMenu_Options::Init (this=0xaaaaac06ab80) at /home/user/repos/Secretchronicles/TSC/tsc/src/gui/menu_data.cpp:1411
#11 0x0000aaaaaacbec68 in TSC::cMenuCore::Load (this=0xaaaab6bec1c0, menu=TSC::MENU_OPTIONS, exit_gamemode=TSC::MODE_NOTHING)
at /home/user/repos/Secretchronicles/TSC/tsc/src/gui/menu.cpp:455
#12 0x0000aaaaaac4a508 in TSC::Handle_Generic_Game_Events (action_data=...) at /home/user/repos/Secretchronicles/TSC/tsc/src/core/game_core.cpp:182
#13 0x0000aaaaaac4a194 in TSC::Handle_Game_Events () at /home/user/repos/Secretchronicles/TSC/tsc/src/core/game_core.cpp:159
#14 0x0000aaaaaac56af4 in TSC::Update_Game () at /home/user/repos/Secretchronicles/TSC/tsc/src/core/main.cpp:591
#15 0x0000aaaaaac54dcc in main (argc=1, argv=0xffffffffe8f8) at /home/user/repos/Secretchronicles/TSC/tsc/src/core/main.cpp:202
CEGUI::InvalidRequestException in function 'void CEGUI::Editbox::setValidationString(const CEGUI::String&)' (./cegui/src/widgets/Editbox.cpp:161) : Unable to set validation string on Editbox 'game_spinner_camera_hor_speed/auto_editbox' because it does not currently have a RegexMatcher validator. terminate called after throwing an instance of 'CEGUI::InvalidRequestException' what(): CEGUI::InvalidRequestException in function 'void CEGUI::Editbox::setValidationString(const CEGUI::String&)' (./cegui/src/widgets/Editbox.cpp:161) : Unable to set validation string on Editbox 'game_spinner_camera_hor_speed/auto_editbox' because it does not currently have a RegexMatcher validator. ...
9 0x0000aaaaaaccb2c8 [PAC] in TSC::cMenu_Options::Init_GUI (this=0xaaaaac06ab80) at /home/user/repos/Secretchronicles/TSC/tsc/src/gui/menu_data.cpp:1428
Here’s the culprit: https://github.com/Secretchronicles/TSC/blob/3ae93772ebe1c8ac17c58021eb016d38b41d6dc6/tsc/src/gui/menu_data.cpp#L1428
This is not at all a MacOS-specific issue. It’s most likely a version incompatibility in CEGUI. Ah, CEGUI strikes back again. It appears that the version of CEGUI you have installed does not like the contents of tab_game.layout
, specifically the loading of game_spinner_camera_hor_speed. Probably the version of CEGUI you use is newer than the one TSC was coded against, and the newer version of CEGUI requires edit boxes of the kind used in tab_game.layout
to have a RegexMatcher
property to be set, presumly to a regular expression that is then used to validate the input. So, to fix this issue, someone has to read the CEGUI docs, find out where to place this RegexMatcher
parameter in the XML defining game_spinner_camera_hor_speed
in tab_game.layout
and set it to a regular expression that only matches the input valid for this edit box. If I am allowed to make a further guess, I suppose RegexMatcher
in newer versions of CEGUI replaces the TextInputMode
parameter currently used in tab_game.layout
.
And if I may take an even further guess - without looking into any CEGUI documentation - maybe the problem can be fixed by replacing
<Property name="TextInputMode" value="FloatingPoint"/>
in tab_game.layout
with
<Property name="RegexMatcher" value="^[[[:digit:]]\.,]$"/>
or a similar regular expression that validates floating-point number input. Please ensure that the expression accepts both .
and ,
as the decimal point, becaue of US/EU differences in writing such numbers.
That’s all I can suggest here, as my time does not permit me to do further investigation.
Moved to here from #713
From spadix at IRC Libera.Chat channel secretchronicles:
Hi, I downloaded and installed TSC 2.1.1-dev (amd64 deb package for Ubuntu 24.04) and, for some reason, every time that I try to use "Options" in the main menu, the game crashes.
I tried to see what is going on by using the debug mode from the console, and this is the output I got:
CEGUI::InvalidRequestException in function
'void CEGUI::Editbox::setValidationString(const CEGUI::String&)'
(./cegui/src/widgets/Editbox.cpp:161) :
Unable to set validation string on
Editbox 'game_spinner_camera_hor_speed/__auto_editbox__'
because it does not currently have a RegexMatcher validator.
Hardware details:
CPU:
Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
GPU:
VGA compatible controller: NVIDIA Corporation GP106BM [GeForce GTX 1060 Mobile 6GB] (rev a1)
Info was looked this way:
CPU:
cat /proc/cpuinfo | less
GPU:
lspci | less
or
sudo lspci | less
Kernel:
Linux z 6.8.0-45-generic #45-Ubuntu
SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04
UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
CPU:
Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
GPU:
VGA compatible controller:
NVIDIA Corporation GP107GLM [Quadro P1000 Mobile] (rev a1)
CEGUI::InvalidRequestException in function
'void CEGUI::Editbox::setValidationString(const CEGUI::String&)'
(./cegui/src/widgets/Editbox.cpp:161) :
Unable to set validation string on
Editbox 'game_spinner_camera_hor_speed/__auto_editbox__'
because it does not currently have a RegexMatcher validator.
terminate called after throwing an instance of
'CEGUI::InvalidRequestException'
what(): CEGUI::InvalidRequestException
in function 'void CEGUI::Editbox::setValidationString(const CEGUI::String&)'
(./cegui/src/widgets/Editbox.cpp:161) :
Unable to set validation string on Editbox
'game_spinner_camera_hor_speed/__auto_editbox__'
because it does not currently have a RegexMatcher validator.
./run-tsc.sh: line 7: 138018 Aborted (core dumped) ./bin/tsc
Kernel:
Linux o 6.1.0-1025-rockchip #25-Ubuntu
SMP Mon Aug 26 23:01:14 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
CPU:
Rockchip RK3588S
Error:
CEGUI::InvalidRequestException in function
'void CEGUI::Editbox::setValidationString(const CEGUI::String&)'
(./cegui/src/widgets/Editbox.cpp:161) :
Unable to set validation string on
Editbox 'game_spinner_camera_hor_speed/__auto_editbox__'
because it does not currently have a RegexMatcher validator.
terminate called after throwing an instance of 'CEGUI::InvalidRequestException'
what(): CEGUI::InvalidRequestException in function
'void CEGUI::Editbox::setValidationString(const CEGUI::String&)'
(./cegui/src/widgets/Editbox.cpp:161) :
Unable to set validation string on Editbox
'game_spinner_camera_hor_speed/__auto_editbox__'
because it does not currently have a RegexMatcher validator.
./run-tsc.sh: line 7: 42823 Aborted (core dumped) ./bin/tsc
spadix did find, that at http://static.cegui.org.uk/docs/0.8.7/change_log.html is this text:
[Core library (CEGUIBase)] Editbox regexp validation is completely broken. (CrazyEddie) - resolved.
That usually "Resolved" usually means "did fix it" or "did break it".
The correct way would be to add fix to newest CEGUI. Not to use old version of CEGUI.
I'm thinking, that maybe CEGUI 0.8.7 works, and 0.8.7-1 does not work? I will try.
For the record, I tried to compile TSC against CEGUI'S HEAD version, but I wasn’t successful. I managed to build CEGUI with these flags:
cmake -Wno-dev -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install -DCEGUI_BUILD_IMAGECODEC_DEVIL=ON -DCEGUI_BUILD_IMAGECODEC_SDL2=OFF -DCEGUI_BUILD_IMAGECODEC_FREEIMAGE=OFF -DCEGUI_BUILD_STATIC_CONFIGURATION=ON -DCEGUI_BUILD_PYTHON_MODULES=OFF -DCEGUI_BUILD_LUA_MODULE=OFF -DCEGUI_BUILD_XMLPARSER_EXPAT=ON -DCEGUI_BUILD_XMLPARSER_LIBXML2=OFF -DCEGUI_BUILD_XMLPARSER_RAPIDXML=OFF -DCEGUI_BUILD_XMLPARSER_XERCES=OFF -DCEGUI_BUILD_XMLPARSER_TINYXML=OFF -DCEGUI_BUILD_RENDERER_OPENGL=ON -DCEGUI_BUILD_RENDERER_OPENGL3=OFF -DCEGUI_BUILD_RENDERER_OPENGLES=OFF -DCEGUI_BUILD_RENDERER_DIRECT3D1=OFF -DCEGUI_BUILD_RENDERER_DIRECT3D9=OFF -DCEGUI_BUILD_RENDERER_DIRECTFB=OFF -DCEGUI_BUILD_RENDERER_IRRLICHT=OFF -DCEGUI_BUILD_RENDERER_NULL=ON -DCEGUI_BUILD_RENDERER_OGRE=OFF -DCEGUI_SAMPLES_ENABLED=OFF -DCEGUI_BUILD_PYTHON_MODULES_PYPLUSPLUS=OFF -DCEGUI_BUILD_PYTHON_MODULES_SWIG=OFF -DCEGUI_BUILD_SAMPLES=OFF -DCEGUI_BUILD_APPLICATION_TEMPLATES=OFF ..
But TSC won’t compile. I ran into #711 which I circumvented simply by deleting that #include
line in global_basic.hpp
, but because I did not make it far due to the CEGUI problem I cannot say that this resolves #711.
I also had some compilation problems with mruby
, which I was able to resolve by editing mruby/mruby/tasks/toolchains/gcc.rake
and changing line 5 to
cxx_invalid_flags = %w()
TSC itself then errors in compilation with
[ 17%] Building CXX object CMakeFiles/tsc.dir/src/audio/audio.cpp.o
/usr/bin/c++ -DBOOST_ATOMIC_DYN_LINK -DBOOST_ATOMIC_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_CHRONO_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_FILESYSTEM_NO_LIB -DBOOST_THREAD_DYN_LINK -DBOOST_THREAD_NO_LIB -D_DEBUG=1 -I/home/quintus/repos/TSC/TSC/tsc/build -I/usr/include/SFML -I/usr/include/libxml++-2.6 -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/libxml++-2.6/include -I/home/quintus/repos/TSC/TSC/tsc/../pod-parser -I/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999 -I/home/quintus/repos/TSC/TSC/tsc/../mruby/mruby/include -g -std=c++11 -Wall -Wno-deprecated-declarations -fno-inline -MD -MT CMakeFiles/tsc.dir/src/audio/audio.cpp.o -MF CMakeFiles/tsc.dir/src/audio/audio.cpp.o.d -o CMakeFiles/tsc.dir/src/audio/audio.cpp.o -c /home/quintus/repos/TSC/TSC/tsc/src/audio/audio.cpp
In Datei, eingebunden von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InjectedInputReceiver.h:30,
von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/GUIContext.h:31,
von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/CEGUI.h:61,
von /home/quintus/repos/TSC/TSC/tsc/src/audio/../audio/../core/global_basic.hpp:94,
von /home/quintus/repos/TSC/TSC/tsc/src/audio/../audio/audio.hpp:22,
von /home/quintus/repos/TSC/TSC/tsc/src/audio/audio.cpp:17:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:49:69: Fehler: »underlying_type_t« in Namensraum »std« bezeichnet keinen Templatetyp; meinten Sie »underlying_type«?
49 | template<typename T, bool needShift = false, typename mask_t = std::underlying_type_t<T>
| ^~~~~~~~~~~~~~~~~
| underlying_type
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:49:86: Fehler: expected »>« before »<« token
49 | template<typename T, bool needShift = false, typename mask_t = std::underlying_type_t<T>
| ^
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In Konstruktor »CEGUI::Flags<T, needShift, mask_t>::Flags(std::initializer_list<_Tp>)«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:73:5: Fehler: »constexpr«-Konstruktor hat keinen leeren Körper
73 | }
| ^
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: Im globalen Gültigkeitsbereich:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:285:45: Fehler: Templateargument 3 ist ungültig
285 | using MouseButtons = Flags<MouseButton, true>;
| ^
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:300:59: Fehler: Templateargument 3 ist ungültig
300 | struct CEGUIEXPORT ModifierKeys : public Flags<ModifierKey>
| ^
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:309:28: Fehler: Templateargument 3 ist ungültig
309 | using Flags<ModifierKey>::Flags; // Inherit all constructors
| ^
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In statischer Elementfunktion »static CEGUI::ModifierKeys CEGUI::ModifierKeys::Shift()«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:305:92: Fehler: »{CEGUI::ModifierKey::LeftShift, CEGUI::ModifierKey::RightShift}« konnte nicht von »<brace-enclosed initializer list>« nach »CEGUI::ModifierKeys« umgewandelt werden
305 | static ModifierKeys Shift() { return { ModifierKey::LeftShift, ModifierKey::RightShift }; }
| ^
| |
| <brace-enclosed initializer list>
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In statischer Elementfunktion »static CEGUI::ModifierKeys CEGUI::ModifierKeys::Ctrl()«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:306:89: Fehler: »{CEGUI::ModifierKey::LeftCtrl, CEGUI::ModifierKey::RightCtrl}« konnte nicht von »<brace-enclosed initializer list>« nach »CEGUI::ModifierKeys« umgewandelt werden
306 | static ModifierKeys Ctrl() { return { ModifierKey::LeftCtrl, ModifierKey::RightCtrl }; }
| ^
| |
| <brace-enclosed initializer list>
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In statischer Elementfunktion »static CEGUI::ModifierKeys CEGUI::ModifierKeys::Alt()«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:307:86: Fehler: »{CEGUI::ModifierKey::LeftAlt, CEGUI::ModifierKey::RightAlt}« konnte nicht von »<brace-enclosed initializer list>« nach »CEGUI::ModifierKeys« umgewandelt werden
307 | static ModifierKeys Alt() { return { ModifierKey::LeftAlt, ModifierKey::RightAlt }; }
| ^
| |
| <brace-enclosed initializer list>
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In Elementfunktion »bool CEGUI::ModifierKeys::hasShift() const«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:311:36: Fehler: »hasAny« wurde in diesem Gültigkeitsbereich nicht deklariert; meinten Sie »hasAlt«?
311 | bool hasShift() const { return hasAny(Shift()); }
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In Elementfunktion »bool CEGUI::ModifierKeys::hasCtrl() const«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:312:35: Fehler: »hasAny« wurde in diesem Gültigkeitsbereich nicht deklariert; meinten Sie »hasAlt«?
312 | bool hasCtrl() const { return hasAny(Ctrl()); }
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In Elementfunktion »bool CEGUI::ModifierKeys::hasAlt() const«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:313:34: Fehler: »hasAny« wurde in diesem Gültigkeitsbereich nicht deklariert; meinten Sie »hasAlt«?
313 | bool hasAlt() const { return hasAny(Alt()); }
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: Im globalen Gültigkeitsbereich:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:378:26: Fehler: »0« konnte nicht von »int« nach »CEGUI::ModifierKeys« umgewandelt werden
378 | ModifierKeys d_map = 0; // ModifierKey bits that need to be checked
| ^
| |
| int
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:379:26: Fehler: »0« konnte nicht von »int« nach »CEGUI::ModifierKeys« umgewandelt werden
379 | ModifierKeys d_set = 0; // Whether the corresponding key should be pressed or not
| ^
| |
| int
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In Elementfunktion »bool CEGUI::ModifierKeyRule::match(CEGUI::ModifierKeys) const«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:351:39: Fehler: »struct CEGUI::ModifierKeys« hat kein Element namens »getMask«
351 | ModifierKeys violations((keys.getMask() ^ d_set.getMask()) & d_map.getMask());
| ^~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:351:57: Fehler: »const struct CEGUI::ModifierKeys« hat kein Element namens »getMask«
351 | ModifierKeys violations((keys.getMask() ^ d_set.getMask()) & d_map.getMask());
| ^~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:351:76: Fehler: »const struct CEGUI::ModifierKeys« hat kein Element namens »getMask«
351 | ModifierKeys violations((keys.getMask() ^ d_set.getMask()) & d_map.getMask());
| ^~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:354:13: Fehler: »violations« konnte nicht von »CEGUI::ModifierKeys« nach »bool« umgewandelt werden
354 | if (violations)
| ^~~~~~~~~~
| |
| CEGUI::ModifierKeys
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:356:23: Fehler: »const struct CEGUI::ModifierKeys« hat kein Element namens »hasAll«; meinten Sie »hasAlt«?
356 | if (d_set.hasAll(ModifierKeys::Shift()) && !violations.hasAll(ModifierKeys::Shift()))
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:356:68: Fehler: »struct CEGUI::ModifierKeys« hat kein Element namens »hasAll«; meinten Sie »hasAlt«?
356 | if (d_set.hasAll(ModifierKeys::Shift()) && !violations.hasAll(ModifierKeys::Shift()))
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:357:28: Fehler: no match for »operator-=« (operand types are »CEGUI::ModifierKeys« and »CEGUI::ModifierKeys«)
357 | violations -= ModifierKeys::Shift();
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:358:23: Fehler: »const struct CEGUI::ModifierKeys« hat kein Element namens »hasAll«; meinten Sie »hasAlt«?
358 | if (d_set.hasAll(ModifierKeys::Ctrl()) && !violations.hasAll(ModifierKeys::Ctrl()))
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:358:67: Fehler: »struct CEGUI::ModifierKeys« hat kein Element namens »hasAll«; meinten Sie »hasAlt«?
358 | if (d_set.hasAll(ModifierKeys::Ctrl()) && !violations.hasAll(ModifierKeys::Ctrl()))
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:359:28: Fehler: no match for »operator-=« (operand types are »CEGUI::ModifierKeys« and »CEGUI::ModifierKeys«)
359 | violations -= ModifierKeys::Ctrl();
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:360:23: Fehler: »const struct CEGUI::ModifierKeys« hat kein Element namens »hasAll«; meinten Sie »hasAlt«?
360 | if (d_set.hasAll(ModifierKeys::Alt()) && !violations.hasAll(ModifierKeys::Alt()))
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:360:66: Fehler: »struct CEGUI::ModifierKeys« hat kein Element namens »hasAll«; meinten Sie »hasAlt«?
360 | if (d_set.hasAll(ModifierKeys::Alt()) && !violations.hasAll(ModifierKeys::Alt()))
| ^~~~~~
| hasAlt
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:361:28: Fehler: no match for »operator-=« (operand types are »CEGUI::ModifierKeys« and »CEGUI::ModifierKeys«)
361 | violations -= ModifierKeys::Alt();
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:364:16: Fehler: no match for »operator!« (operand type is »CEGUI::ModifierKeys«)
364 | return !violations;
| ^~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:364:16: Anmerkung: Kandidat: »operator!(bool)« (eingebaut)
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:364:16: Anmerkung: keine bekannte Umwandlung für Argument 1 von »CEGUI::ModifierKeys« nach »bool«
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: In Elementfunktion »void CEGUI::ModifierKeyRule::set(CEGUI::ModifierKey, bool)«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:371:15: Fehler: no match for »operator+=« (operand types are »CEGUI::ModifierKeys« and »CEGUI::ModifierKey«)
371 | d_map += key;
| ~~~~~~^~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:373:19: Fehler: no match for »operator-=« (operand types are »CEGUI::ModifierKeys« and »CEGUI::ModifierKey«)
373 | d_set -= key;
| ~~~~~~^~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:375:19: Fehler: no match for »operator+=« (operand types are »CEGUI::ModifierKeys« and »CEGUI::ModifierKey«)
375 | d_set += key;
| ~~~~~~^~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h: Im globalen Gültigkeitsbereich:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:432:67: Fehler: »MouseButtons« wurde nicht deklariert
432 | CursorInputEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons = {}, ModifierKeys modifiers = {});
| ^~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:441:5: Fehler: »MouseButtons« bezeichnet keinen Typ; meinten Sie »MouseButton«?
441 | MouseButtons d_buttons;
| ^~~~~~~~~~~~
| MouseButton
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:458:66: Fehler: »MouseButtons« wurde nicht deklariert
458 | CursorMoveEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, const glm::vec2& moveDelta)
| ^~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:474:67: Fehler: »MouseButtons« wurde nicht deklariert
474 | MouseButtonEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, MouseButton button, int clickEventOrder = 0)
| ^~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:492:62: Fehler: »MouseButtons« wurde nicht deklariert
492 | ScrollEventArgs(Window* wnd, const glm::vec2& globalPos, MouseButtons buttons, ModifierKeys modifiers, float delta)
| ^~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/InputEvent.h:616:5: Fehler: »MouseButtons« bezeichnet keinen Typ; meinten Sie »MouseButton«?
616 | MouseButtons buttons;
| ^~~~~~~~~~~~
| MouseButton
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/GUIContext.h:162:125: Fehler: »MouseButtons« wurde nicht deklariert
162 | void registerInputSemantic(const String& value, MouseButton button, ModifierKeyRule modifiers = {}, int clickOrder = 0, MouseButtons buttons = {});
| ^~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/GUIContext.h:224:5: Fehler: »MouseButtons« bezeichnet keinen Typ; meinten Sie »MouseButton«?
224 | MouseButtons getMouseButtons() const { return d_mouseButtons; }
| ^~~~~~~~~~~~
| MouseButton
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/GUIContext.h:402:5: Fehler: »MouseButtons« bezeichnet keinen Typ; meinten Sie »MouseButton«?
402 | MouseButtons d_mouseButtons;
| ^~~~~~~~~~~~
| MouseButton
In Datei, eingebunden von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/./ListView.h:33,
von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/All.h:32,
von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/CEGUI.h:117:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/falagard/Enums.h: In Funktion »CEGUI::HorizontalTextFormatting CEGUI::decomposeHorizontalFormatting(HorizontalTextFormatting, bool*)«:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/falagard/Enums.h:115:16: Warnung: Aufzählungswert »LeftAligned« wird nicht von switch behandelt [-Wswitch]
115 | switch (fmt)
| ^
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/falagard/Enums.h:115:16: Warnung: Aufzählungswert »RightAligned« wird nicht von switch behandelt [-Wswitch]
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/falagard/Enums.h:115:16: Warnung: Aufzählungswert »CentreAligned« wird nicht von switch behandelt [-Wswitch]
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/falagard/Enums.h:115:16: Warnung: Aufzählungswert »Justified« wird nicht von switch behandelt [-Wswitch]
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/falagard/Enums.h:115:16: Warnung: Aufzählungswert »Bidi« wird nicht von switch behandelt [-Wswitch]
In Datei, eingebunden von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/All.h:31:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/./ItemView.h: Im globalen Gültigkeitsbereich:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/./ItemView.h:281:18: Warnung: »virtual void CEGUI::ItemView::ensureIndexIsVisible(const CEGUI::ModelIndex&)« war versteckt [-Woverloaded-virtual=]
281 | virtual void ensureIndexIsVisible(const ModelIndex& index);
| ^~~~~~~~~~~~~~~~~~~~
In Datei, eingebunden von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/widgets/./ComboDropList.h:30,
von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/widgets/All.h:31,
von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/CEGUI.h:123:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/widgets/ListWidget.h:109:18: Anmerkung: von »virtual void CEGUI::ListWidget::ensureIndexIsVisible(const CEGUI::StandardItem*)«
109 | virtual void ensureIndexIsVisible(const StandardItem* item);
| ^~~~~~~~~~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/./ItemView.h:274:18: Warnung: »virtual bool CEGUI::ItemView::isIndexSelected(const CEGUI::ModelIndex&) const« war versteckt [-Woverloaded-virtual=]
274 | virtual bool isIndexSelected(const ModelIndex& index) const;
| ^~~~~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/widgets/ListWidget.h:94:10: Anmerkung: von »bool CEGUI::ListWidget::isIndexSelected(size_t)«
94 | bool isIndexSelected(size_t index);
| ^~~~~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/./ItemView.h:272:18: Warnung: »virtual bool CEGUI::ItemView::setIndexSelectionState(const CEGUI::ModelIndex&, bool)« war versteckt [-Woverloaded-virtual=]
272 | virtual bool setIndexSelectionState(const ModelIndex& index, bool selected);
| ^~~~~~~~~~~~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/widgets/ListWidget.h:61:10: Anmerkung: von »CEGUI::ListWidget::setIndexSelectionState«
61 | void setIndexSelectionState(StandardItem* item, bool state);
| ^~~~~~~~~~~~~~~~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/./ItemView.h:193:24: Warnung: »virtual CEGUI::ItemModel* CEGUI::ItemView::getModel() const« war versteckt [-Woverloaded-virtual=]
193 | virtual ItemModel* getModel() const;
| ^~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/widgets/ListWidget.h:99:32: Anmerkung: von »virtual CEGUI::StandardItemModel* CEGUI::ListWidget::getModel()«
99 | virtual StandardItemModel* getModel();
| ^~~~~~~~
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/views/./ItemView.h:193:24: Warnung: »virtual CEGUI::ItemModel* CEGUI::ItemView::getModel() const« war versteckt [-Woverloaded-virtual=]
193 | virtual ItemModel* getModel() const;
| ^~~~~~~~
In Datei, eingebunden von /home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/widgets/All.h:62:
/home/quintus/repos/TSC/TSC/cegui/build/install/include/cegui-9999/CEGUI/widgets/./TreeWidget.h:54:32: Anmerkung: von »virtual CEGUI::StandardItemModel* CEGUI::TreeWidget::getModel()«
54 | virtual StandardItemModel* getModel();
| ^~~~~~~~
make[2]: *** [CMakeFiles/tsc.dir/build.make:76: CMakeFiles/tsc.dir/src/audio/audio.cpp.o] Fehler 1
make[2]: Verzeichnis „/home/quintus/repos/TSC/TSC/tsc/build“ wird verlassen
make[1]: *** [CMakeFiles/Makefile2:228: CMakeFiles/tsc.dir/all] Fehler 2
make[1]: Verzeichnis „/home/quintus/repos/TSC/TSC/tsc/build“ wird verlassen
make: *** [Makefile:156: all] Fehler 2
which indicates that CEGUI has introduced breaking changes since version 0.8.7. So, as it stands, there is no easy way to upgrade CEGUI to its HEAD version.
That was with
g++ (GCC) 14.2.1 20240910
Copyright (C) 2024 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
gibt KEINE Garantie; auch nicht für MARKTGÄNGIGKEIT oder FÜR SPEZIELLE ZWECKE.
on ArchLinux.
Also note that CEGUI 0.8.7 will not compile against a recent Linux graphics stack, that is, against a recent version of Mesa. That was what prompted me to try CEGUI’s HEAD. I have this one:
$ LANG=en_US.UTF-8 pacman -Si mesa
Repository : extra
Name : mesa
Version : 1:24.2.3-1
Description : Open-source OpenGL drivers
Architecture : x86_64
URL : https://www.mesa3d.org/
Licenses : MIT AND BSD-3-Clause AND SGI-B-2.0
Groups : None
Provides : mesa-libgl opengl-driver
Depends On : expat gcc-libs glibc libdrm libelf libglvnd libx11 libxcb libxext libxfixes libxshmfence libxxf86vm llvm-libs lm_sensors wayland zlib zstd libomxil-bellagio
Optional Deps : opengl-man-pages: for the OpenGL API man pages
Conflicts With : mesa-libgl
Replaces : mesa-libgl
Download Size : 19.14 MiB
Installed Size : 111.13 MiB
Packager : Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Build Date : Wed 18 Sep 2024 11:52:57 PM CEST
Validated By : SHA-256 Sum Signature
This version of Mesa requires at least C++11 in its OpenGL headers. CEGUI 0.8.7, however, specifically sets the C++ standard to C++03. This means that until CEGUI releases a new stable version, TSC will not compile on recent Linuxes (unless someone replaces CEGUI with something else, which is a huge task).
As CEGUI seems to be mostly abandoned, I have no high hopes.
For the record, here’s the compilation error with CEGUI 0.8.7:
[ 73%] Building CXX object cegui/src/RendererModules/OpenGL/CMakeFiles/CEGUIOpenGLRenderer-0_Static.dir/GL.cpp.o
In file included from /usr/include/c++/14.2.1/cstdint:35,
from /usr/include/GL/glew.h:225,
from /home/quintus/Downloads/cegui-0-8-7/cegui/include/CEGUI/RendererModules/OpenGL/GL.h:38,
from /home/quintus/Downloads/cegui-0-8-7/cegui/src/RendererModules/OpenGL/GL.cpp:27:
/usr/include/c++/14.2.1/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
32 | #error This file requires compiler and library support \
| ^~~~~
Looking at it again, even though there’s GL and glew involved, the error actually stems from cstdint
. So it might be an incompatibility with the compiler more than with Mesa...
Workaround found and included with commit 5f851fed0c50a7947f375eaabffd3b7998f157a4. After some cleanup, starting with 3db0ea0a9350d56e47b30ddaccc5a3e8ee0b1342 TSC should compile with the aforementioned version of g++ again on Arch.
@xet7 can you still reproduce the problem in the OP with my recent changes applied? I cannot.
My final suspicion on all these spurious CEGUI crashes are that they come from CEGUI's XML parsing facilities. The static version of CEGUI TSC compiles since yesterday hardcodes CEGUI's XML backend to Expat, which seems to work okay.
@Quintus
You fixed this. At Ubuntu 24.04 amd64 and arm64 now options menu works.
I have updated build scripts to include changed dependencies, and committed those changes to git repo.
Hi, when selecting options from main menu, TSC crashes at M1 Air running Asahi Ubuntu 24.04 arm64, with this stacktrace. TSC was installed from Ubuntu 24.04 arm64 .deb package from https://secretchronicles.org download page.
1)
2)
3)
4)
5)