Sollevata dal sottosistema di threading quando un thread tenta di acquisire nuovamente un 'std::mutex' non ricorsivo che si trova già nel suo possesso, violando la consistenza dei lock.
STD_SYSTEM_ERROR_DEADLOCK
→
Il distruttore di 'std::thread' invoca 'std::terminate()' se l'oggetto thread viene distrutto mentre è ancora in esecuzione (joinable == true) senza che sia stato chiamato esplicitamente 'join()' o 'detach()'.
JOINABLE_THREAD_DESTRUCTION
→
Invocare 'std::async(func)' senza specificare la policy consente al runtime di scegliere 'std::launch::deferred', rimandando l'esecuzione fino a quando non viene invocato esplicitamente '.get()'; se il programma attende solo la notifica senza chiamare get(), il task non viene mai avviato.
ASYNC_LAUNCH_DEFERRED_HANG
→
La classe 'std::jthread' introdotta in C++20 supporta la cancellazione cooperativa tramite 'std::stop_token'; se il ciclo interno del thread non verifica periodicamente 'stoken.stop_requested()', il thread non si fermerà alla richiesta di stop.
JTHREAD_STOP_TOKEN_IGNORED
→
La classe 'std::atomic_ref<T>' introdotta in C++20 richiede che l'indirizzo di memoria dell'oggetto referenziato sia rigorosamente allineato a 'std::atomic_ref<T>::required_alignment'; referenziare membri packed non allineati scatena crash hardware o UB.
ATOMIC_REF_MISALIGNED
→
Le coroutine C++20 che sospendono l'esecuzione allocano il proprio frame sullo heap; se la coroutine non raggiunge la fine o la promise non invoca 'handle.destroy()' quando il chiamante la abbandona, l'intero frame di variabili locali rimane allocato indefinitamente.
COROUTINE_FRAME_LEAK
→