concurrency-thread-canceltype-asynchronous¶
Finds pthread_setcanceltype
function calls where a thread’s cancellation
type is set to asynchronous. Asynchronous cancellation type
(PTHREAD_CANCEL_ASYNCHRONOUS
) is generally unsafe, use type
PTHREAD_CANCEL_DEFERRED
instead which is the default. Even with deferred
cancellation, a cancellation point in an asynchronous signal handler may still
be acted upon and the effect is as if it was an asynchronous cancellation.
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype);
This check corresponds to the CERT C Coding Standard rule POS47-C. Do not use threads that can be canceled asynchronously.