← All tasks
cppscylladb/seastar #2247Not a task: not reproduced

seastar allocator causes infinite recursive call if seastar is compiled as a shared library

envgap__scylladb__seastar-2247

01 / FAILURE SIGNATURE

As reported upstream

No identifying execution failure has been captured.
Not a benchmark task.
  • In a clean container the reported failure did not reproduce, or the known fix did not make the project run.

02 / ENVIRONMENT RECIPE

Base commit
855fc4b401ee17498fc10531a4117ab02be24bfe
Manifest
CMakeLists.txt
Reproduce
Awaiting issue-specific recipe
Run under trace
Awaiting a meaningful runtime command

03 / ORIGINAL ISSUE TEXT

scylladb/seastar #2247 · read the original issue
this can be reproduced with:



```console

$ ./configure.py --mode dev

$ ninja -C build/dev test_unit_tls

$ build/dev/tests/unit/tls_test

Running 31 test cases...

INFO  2024-05-17 13:44:00,704 seastar - Reactor backend: io_uring

INFO  2024-05-17 13:44:00,707 seastar - Perf-based stall detector creation failed (EACCESS), try setting /proc/sys/kernel/perf_event_paranoid to 1 or less to enable kernel backtraces: falling back to posix timer.

random-seed=4026002337

Segmentation fault (core dumped)

```



on fedora 40.



the backtrace looks like:

```

#47271 0x00007ffff7fdb754 in update_get_addr (ti=0x7ffff7dbf288, gen=<optimized out>) at ../elf/dl-tls.c:916

#47272 0x00007ffff7fde4ec in __tls_get_addr () at ../sysdeps/x86_64/tls_get_addr.S:55

#47273 0x00007ffff7ac12a0 in free () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47274 0x00007ffff7fdb67b in free (ptr=<optimized out>) at ../include/rtld-malloc.h:50

#47275 _dl_update_slotinfo (req_modid=2, new_gen=2) at ../elf/dl-tls.c:822

#47276 0x00007ffff7fdb754 in update_get_addr (ti=0x7ffff7dbf288, gen=<optimized out>) at ../elf/dl-tls.c:916

#47277 0x00007ffff7fde4ec in __tls_get_addr () at ../sysdeps/x86_64/tls_get_addr.S:55

#47278 0x00007ffff7ac12a0 in free () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47279 0x00007ffff7fdb67b in free (ptr=<optimized out>) at ../include/rtld-malloc.h:50

#47280 _dl_update_slotinfo (req_modid=2, new_gen=2) at ../elf/dl-tls.c:822

#47281 0x00007ffff7fdb754 in update_get_addr (ti=0x7ffff7dbf288, gen=<optimized out>) at ../elf/dl-tls.c:916

#47282 0x00007ffff7fde4ec in __tls_get_addr () at ../sysdeps/x86_64/tls_get_addr.S:55

#47283 0x00007ffff7ac12a0 in free () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47284 0x00007ffff7fdb67b in free (ptr=<optimized out>) at ../include/rtld-malloc.h:50

#47285 _dl_update_slotinfo (req_modid=2, new_gen=2) at ../elf/dl-tls.c:822

#47286 0x00007ffff7fdb754 in update_get_addr (ti=0x7ffff7dbf288, gen=<optimized out>) at ../elf/dl-tls.c:916

#47287 0x00007ffff7fde4ec in __tls_get_addr () at ../sysdeps/x86_64/tls_get_addr.S:55

#47288 0x00007ffff7ac12a0 in free () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47289 0x00007ffff7fdb67b in free (ptr=<optimized out>) at ../include/rtld-malloc.h:50

#47290 _dl_update_slotinfo (req_modid=2, new_gen=2) at ../elf/dl-tls.c:822

#47291 0x00007ffff7fdb754 in update_get_addr (ti=0x7ffff7dbf288, gen=<optimized out>) at ../elf/dl-tls.c:916

#47292 0x00007ffff7fde4ec in __tls_get_addr () at ../sysdeps/x86_64/tls_get_addr.S:55

#47293 0x00007ffff7ac12a0 in free () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47294 0x00007ffff7fdb67b in free (ptr=<optimized out>) at ../include/rtld-malloc.h:50

#47295 _dl_update_slotinfo (req_modid=2, new_gen=2) at ../elf/dl-tls.c:822

#47296 0x00007ffff7fdb754 in update_get_addr (ti=0x7ffff7dbf288, gen=<optimized out>) at ../elf/dl-tls.c:916

#47297 0x00007ffff7fde4ec in __tls_get_addr () at ../sysdeps/x86_64/tls_get_addr.S:55

#47298 0x00007ffff7ac12a0 in free () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47299 0x00007ffff7fdb67b in free (ptr=<optimized out>) at ../include/rtld-malloc.h:50

#47300 _dl_update_slotinfo (req_modid=2, new_gen=2) at ../elf/dl-tls.c:822

#47301 0x00007ffff7fdb754 in update_get_addr (ti=0x7ffff7dbf288, gen=<optimized out>) at ../elf/dl-tls.c:916

#47302 0x00007ffff7fde4ec in __tls_get_addr () at ../sysdeps/x86_64/tls_get_addr.S:55

#47303 0x00007ffff7b2641f in seastar::reactor::service_highres_timer() () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47304 0x00007ffff7a8fff5 in seastar::reactor_backend_uring::hrtimer_completion::complete_with(long) () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47305 0x00007ffff7a8f0c4 in seastar::reactor_backend_uring::wait_and_process_events(__sigset_t const*) () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47306 0x00007ffff7b273ca in seastar::reactor::do_run() () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47307 0x00007ffff7b43118 in std::_Function_handler<void (), seastar::smp::configure(seastar::smp_options const&, seastar::reactor_options const&)::$_0>::_M_invoke(std::_Any_data const&) ()

   from /home/kefu/dev/seastar/build/dev/libseastar.so

#47308 0x00007ffff7adb2cb in seastar::posix_thread::start_routine(void*) () from /home/kefu/dev/seastar/build/dev/libseastar.so

#47309 0x00007ffff72a91b7 in start_thread () from /lib64/libc.so.6

#47310 0x00007ffff732b39c in clone3 () from /lib64/libc.so.6

```



it looks like an issue in glibc's TLS support. and it seems that there is a patch trying to address this, see https://patchwork.ozlabs.org/project/glibc/patch/8734v1ieke.fsf@oldenburg.str.redhat.com/ . but at the moment of writing, the patch has not landed on upstream's master branch (https://sourceware.org/git/?p=glibc.git).
Continue on GitHub ↗

04 / LABELS

Labels from the report text only; not yet run

No supported category has been assigned.

Label rules and the text that matched
[]