NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: lib/52751: pthread_mutex_lock(3) does not return EINVAL on destroyed lock



On Nov 22,  1:00pm, n54%gmx.com@localhost (n54%gmx.com@localhost) wrote:
-- Subject: lib/52751: pthread_mutex_lock(3) does not return EINVAL on destro

| >Number:         52751
| >Category:       lib
| >Synopsis:       pthread_mutex_lock(3) does not return EINVAL on destroyed lock
| >Confidential:   no
| >Severity:       serious
| >Priority:       medium
| >Responsible:    lib-bug-people
| >State:          open
| >Class:          sw-bug
| >Submitter-Id:   net
| >Arrival-Date:   Wed Nov 22 13:00:00 +0000 2017
| >Originator:     Kamil Rytarowski
| >Release:        NetBSD 8.99.7 amd64
| >Organization:
| TNF
| >Environment:
| NetBSD chieftec 8.99.7 NetBSD 8.99.7 (GENERIC) #8: Tue Nov 21 08:36:07 CET 2017  root@chieftec:/public/netbsd-root/sys/arch/amd64/compile/GENERIC amd64
| >Description:
| pthread_mutex_lock(3) after calling pthread_mutex_destroy(3) does not return EINVAL. It returns errno 0, which is fine.
| 
| Linux and FreeBSD return EINVAL and errno 0.
| >How-To-Repeat:
| $ gcc tt2.c -pthread                                                                                                         
| $ ./a.out                                                                                                                    
| ret=0 errno=0
| $ cat tt2.c                                                                                                                  
| #include <pthread.h>
| #include <stdio.h>
| #include <stdlib.h>
| #include <errno.h>
| 
| int main(int argc, char *argv[]) { 
|   int ret;
| 
|   pthread_mutex_t m;
|   pthread_mutex_init(&m, 0);
|   pthread_mutex_lock(&m);
|   pthread_mutex_unlock(&m);
|   pthread_mutex_destroy(&m);
| 
|   ret = pthread_mutex_lock(&m);
| 
|   printf("ret=%d errno=%d\n", ret, errno);

What happens when you set PTHREAD_DIAGASSERT appropriately in the environment?

christos


Home | Main Index | Thread Index | Old Index