Date: Thu, 15 Sep 2011 10:50:47 +0800 (CST) From: "Thinker K.F. Li" <thinker@codemud.net> To: freebsd-hackers@freebsd.org Subject: Thread-local storage issue Message-ID: <20110915.105047.104045404.thinker@eeebox.branda.to>
next in thread | raw e-mail | index | archive | help
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!
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110915.105047.104045404.thinker>
