On Monday, 8 January 2024 14:10:45 -03 Dirk Hohndel via subsurface wrote: > 7 libc++abi.dylib 0x00000001f7aa99c8 std::terminate() > + 56 (cxa_handlers.cpp:88) 8 Subsurface-mobile > 0x000000010027589c QMLManager::~QMLManager() + 68 (qmlmanager.cpp:608)
The fact that it's spelt "QML" in all caps in the class name led me to find this file in Subsurface's sources. Line 608 is the closing bracket of the destructor, which definitely raises a WTF question: why is it calling std::terminate()? Since there's nothing in the source code for that to call it directly, that implies it's debugging or hardening code inserted by the compiler itself. As it's happening on the closing brace, it's probably QMLManager trying to destroy one of its member variables. The one thing that comes to mind is an exception. Throwing in destructors is really frowned upon (you can't fail to clean up) and by default all destructors are noexcept, so trying to throw from them causes an immediate std::terminate(). If this is the case, then the question is: what is throwing? -- Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org Software Architect - Intel DCAI Cloud Engineering _______________________________________________ subsurface mailing list subsurface@subsurface-divelog.org http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface