Skip site navigation (1)Skip section navigation (2)
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>