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