This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/20374] New: TLS initialization issue seen on ppc64 BE


https://sourceware.org/bugzilla/show_bug.cgi?id=20374

            Bug ID: 20374
           Summary: TLS initialization issue seen on ppc64 BE
           Product: glibc
           Version: 2.22
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libc
          Assignee: unassigned at sourceware dot org
          Reporter: will_schmidt at vnet dot ibm.com
                CC: drepper.fsp at gmail dot com
  Target Milestone: ---

This issue manifests as a valgrind test suite failure hgtls on ppc64 BE.

On ppc64 BE, attempts to walk from the thread pointer to TLS storage are
failing, beginning sometime in glibc 2.22.  The problem does not seem to occur
on PPC64 LE.   Glibc itself seems to understand how to get to the TLS variables
OK, so this is ultimately a request for help in figuring out what has changed
and how to adapt valgrind to handle it.

As illustrated under a gdb session, where the process under debug is a simple
application with multiple threads and _thread variables declared in shared
objects, attempts to get the TLS pointer are returning with -1.  

R13 is the thread pointer, the TCB is at -0x7000 from there, with slight offset
for the TCB block. 

(gdb) p $r13
$5 = 0x57c68c0
(gdb) x/16w $r13-0x7000-8
0x57bf8b8:      0x0     0x47c04d0       0x234   0x345
0x57bf8c8:      0x1234  0x4567  0x7890  0x345
0x57bf8d8:      0x5678  0x4567  0x3456  0x678
0x57bf8e8:      0x9876  0x6543  0x3210  0x4567
(gdb) x/16w 0x47c04d0
0x47c04d0:      0x0     0x1     0x0     0x0
0x47c04e0:      0xffffffff      0xffffffff      0x0     0x0
0x47c04f0:      0xffffffff      0xffffffff      0x0     0x0
0x47c0500:      0xffffffff      0xffffffff      0x0     0x0


(gdb) info addr so_local
Symbol "so_local" is a thread-local variable at offset 0xc in the thread-local
storage for `/home/willschm/valgrind_builds/valgrind/none/tests/tls.so'.
(gdb) info addr so_extern
Symbol "so_extern" is a thread-local variable at offset 0xc in the thread-local
storage for `/home/willschm/valgrind_builds/valgrind/none/tests/tls2.so'.

Per bisection and assistance from Tulio, we have identified f8aeae34 as the
patch which changed the behavior here.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]