Insure++ Red Hat 7.1 pthread_create error: too many arguments in function
Issue:
The “too many arguments in function call pthread_create”, PARSE_ERROR reported by Insure++ when building a threaded applications on Red Hat 7.1 using gcc 3.x
Cause:
If your operating system is Linux Red Hat 7.1 and you have recently upgraded your compiler to gcc 3.x, or above you may be experiencing this PARSE_ERROR, because of a broken system header. The gcc 3.x compiler added support for __thread keyword, and your system pthread.h and sigthread.h header files, may have the __thread as a variable name in parameter list of the function definition.
Repair:
Modify the variable __thread in the parameter list of the pthread.h header file. For example,
FROM:
extern int pthread_create (pthread_t *__restrict __thread,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) ;
TO:
extern int pthread_create (pthread_t *__restrict __thr,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) ;
Workaround:
Add ‘—mpf –no_thread_local_storage to your command line. For example
Insure gcc –g –mpf –no_thread_local_storage –o threads threads.c –lpthread
The “too many arguments in function call pthread_create”, PARSE_ERROR reported by Insure++ when building a threaded applications on Red Hat 7.1 using gcc 3.x
Cause:
If your operating system is Linux Red Hat 7.1 and you have recently upgraded your compiler to gcc 3.x, or above you may be experiencing this PARSE_ERROR, because of a broken system header. The gcc 3.x compiler added support for __thread keyword, and your system pthread.h and sigthread.h header files, may have the __thread as a variable name in parameter list of the function definition.
Repair:
Modify the variable __thread in the parameter list of the pthread.h header file. For example,
FROM:
extern int pthread_create (pthread_t *__restrict __thread,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) ;
TO:
extern int pthread_create (pthread_t *__restrict __thr,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) ;
Workaround:
Add ‘—mpf –no_thread_local_storage to your command line. For example
Insure gcc –g –mpf –no_thread_local_storage –o threads threads.c –lpthread
0