C and C++ Binaries


CONCURRENCY.BADFUNC.PTHREAD_KILL : Use of pthread_kill

Summary

A use of pthread_kill(). Some signal arguments to pthread_kill() can terminate the entire process rather than just a single thread, which may not be the intention.

Properties

Class Name Use of pthread_kill
Significance reliability
Mnemonic CONCURRENCY.BADFUNC.PTHREAD_KILL
Categories
CWE CWE:676 Use of Potentially Dangerous Function
CERT-C CERT-C:POS44-C Do not use signals to terminate threads
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Use of pthread_kill"

Example

#include <pthread.h>
#include <signal.h>

int stop_thread(pthread_t thread, int i){
    if (i>0){
        return pthread_kill(thread, SIGTERM); /* 'Use of pthread_kill' warning issued here */
    }
    else {
        return pthread_cancel(thread);                                /* pthread_cancel() terminates a single thread */
    }
}

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.