Hi, I have following sample code. It segfaults on the assignment "x1[1] =60", the assignment in the loop "x[i] = x[i] + i +250" goes through fine. I have looked at the assembly generated, it is different in both cases, though looks equivalent to my non-expert eyes. Is this a bug or am I missing something. gcc version is 4.4.1, kernel-version 2.6.31-21-generic compiled with "gcc -mcmodel=large test.c -o test" #include <stdio.h> #include <pthread.h> #define SIZE 2 __thread int x1[SIZE] = {300, 400}; int main() { int i = 0; for ( i = 0 ; i < SIZE ; i++ ) { x1[i] = x1[i] + i + 250; /*This access works fine*/ } x1[0] = 50; printf ("%d x1[0] = %d\n", __LINE__, x1[0]); x1[1] = 60; /* This line segfaults */ printf ("%d x1[1] = %d\n", __LINE__, x1[1]); return 0; } On further digging this might be a linker/loader issue x1@TPOFF+4 seems to generating a garbage value. -Shankha PS: Reposting of google groups query, since it didn't appear here. Andrew Haley responded there saying it is a bug