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

Reply via email to