|
|
Message-Id: <1536871178.1074978.1507360824.56778F86@webmail.messagingengine.com>
Date: Thu, 13 Sep 2018 13:39:38 -0700
From: Benjamin Peterson <benjamin@...hon.org>
To: musl@...ts.openwall.com
Subject: value of thread-specific data immediately after initialization
POSIX says that after the creation of a thread-specific key, its associated value should be NULL in all threads. musl may not uphold this requirement if a particular key is deleted and later resued.
Here's an example of the bug:
#include <pthread.h>
#include <stdio.h>
int main() {
pthread_key_t k;
pthread_key_create(&k, NULL);
printf("%p\n", pthread_getspecific(k));
pthread_setspecific(k, &k);
pthread_key_delete(k);
pthread_key_create(&k, NULL);
printf("%p\n", pthread_getspecific(k));
pthread_key_delete(k);
return 0;
}
Per POSIX, I would expect this testcase to output two NULLs. However, musl prints the address of the old data even after the second initialization:
$ musl-gcc -o test test.c
$ ./test
0
0x7fff2ba3d004
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.