Thread-local storage issue
Thinker K.F. Li
thinker at codemud.net
Thu Sep 15 03:13:22 UTC 2011
Hi Guys,
I was in trouble for an issue of TLS implementation of FreeBSD. It is
an issue of ld-elf.so actually. If I have a thread-local variable in
program, the value of the variable is not consistent after an
dlopen(). For example,
__thread int var = 50;
void modify() {
var = 100;
}
void show() {
printf("%d\n", var);
}
int main(int argc, char * const *argv) {
dlopen(...);
modify();
show();
}
If it is compiled with -fpic, it would print "50" while "100" is
expected. (-fpic is required for shared objects)
I have send-pr a patch as
http://www.freebsd.org/cgi/query-pr.cgi?pr=160721
I need someone to review it.
Thanks!
More information about the freebsd-hackers
mailing list