Re: What does this error mean: No space available for static Thread Local Storage ?

From: Juraj Lutter <otis_at_FreeBSD.org>
Date: Sat, 20 Apr 2024 09:10:10 UTC

> On 20 Apr 2024, at 10:37, Yuri <yuri@FreeBSD.org> wrote:
> 
> On 4/20/24 01:29, Gleb Popov wrote:
>> This message probably comes from the library code. I'd start looking there.
>> 
> 
> No, it comes from the FreeBSD src tree.
> 
> The problem with this message is that it is cryptic, and doesn't lead the user to a solution.

When we’re at rust and memory (thread-local storage?) related: I’ve tried to run databases/qdrant
in production. It works until it’s idle. When some collections are being created/loaded, it crashes.
I have been able to track it down to malloc() called from within strdup() called from within thr_set_name().

That internally calls, something like:

    frame #6: 0x00003f6e7cbc8955 libc.so.7`__je_tsd_fetch_slow(tsd=0x00003f6faeb53090, minimal=<unavailable>) at jemalloc_tsd.c:0
    frame #7: 0x00003f6e7cb77e3a libc.so.7`__je_malloc_default [inlined] tsd_fetch_impl(init=true, minimal=false) at tsd.h:355:10
    frame #8: 0x00003f6e7cb77e30 libc.so.7`__je_malloc_default [inlined] tsd_fetch at tsd.h:381:9
    frame #9: 0x00003f6e7cb77e30 libc.so.7`__je_malloc_default [inlined] imalloc(sopts=<unavailable>, dopts=<unavailable>) at jemalloc_jemalloc.c:2256:15
    frame #10: 0x00003f6e7cb77e30 libc.so.7`__je_malloc_default(size=40) at jemalloc_jemalloc.c:2293:2

I can reliably reproduce the problem on both stable/13, stable/14 and main.

otis


—
Juraj Lutter
otis@FreeBSD.org