This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/20374] New: TLS initialization issue seen on ppc64 BE
- From: "will_schmidt at vnet dot ibm.com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Fri, 15 Jul 2016 15:02:46 +0000
- Subject: [Bug libc/20374] New: TLS initialization issue seen on ppc64 BE
- Auto-submitted: auto-generated
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.