Closed
Description
Prior to 533b7c1, compiling some coroutine that references a TLS variable generates this wrapper:
0000000000029d80 <_ZTWN2db13schema_tablesL14the_merge_lockE>:
29d80: 50 pushq %rax
29d81: e8 4a b3 10 00 callq 0x1350d0 <__tls_init>
29d86: 64 48 8b 04 25 00 00 00 00 movq %fs:0x0, %rax
29d8f: 48 8d 80 00 00 00 00 leaq (%rax), %rax
0000000000029d92: R_X86_64_TPOFF32 _ZN2db13schema_tablesL14the_merge_lockE
29d96: 59 popq %rcx
29d97: c3 retq
29d98: 0f 1f 84 00 00 00 00 00 nopl (%rax,%rax)
It correctly calls __tls_init
.
With 533b7c1 and later, up to 18.1.1, the following TLS wrapper is generated:
0000000000029d80 <_ZTWN2db13schema_tablesL14the_merge_lockE>:
29d80: 50 pushq %rax
29d81: e8 00 00 00 00 callq 0x29d86 <_ZTWN2db13schema_tablesL14the_merge_lockE+0x6>
0000000000029d82: R_X86_64_PLT32 _ZTH15data_type_for_vIN7seastar13basic_sstringIcjLj15ELb1EEEE-0x4
29d86: 64 48 8b 04 25 00 00 00 00 movq %fs:0x0, %rax
29d8f: 48 8d 80 00 00 00 00 leaq (%rax), %rax
0000000000029d92: R_X86_64_TPOFF32 _ZN2db13schema_tablesL14the_merge_lockE
29d96: 59 popq %rcx
29d97: c3 retq
29d98: 0f 1f 84 00 00 00 00 00 nopl (%rax,%rax)
The call to __tls_init
was replaced by a call to some random function. When the coroutine is then called, it does not initialize the object.
I will follow up with a full reproducer.
Metadata
Metadata
Assignees
Type
Projects
Status
Done