April 05, 2016
If I create many threads (starts, does a short work, and ends) repeatedly (>10,000), at some point rt.tlsgc.init() gives SEGMENTATION_FAULT.

It doesn't check whether malloc fails to allocate any memory, and I cannot find the source code of "rt.sections.initTLSRanges()" anywhere.

Is it left there without a check purposefully?
April 05, 2016
On 2016-04-05 11:46, tcak wrote:
> If I create many threads (starts, does a short work, and ends)
> repeatedly (>10,000), at some point rt.tlsgc.init() gives
> SEGMENTATION_FAULT.
>
> It doesn't check whether malloc fails to allocate any memory, and I
> cannot find the source code of "rt.sections.initTLSRanges()" anywhere.
>
> Is it left there without a check purposefully?

rt.sections.initTLSRanges is available here for Linux and FreeBSD [1]. For other platforms there are similar files.

https://github.com/D-Programming-Language/druntime/blob/master/src/rt/sections_elf_shared.d#L145

-- 
/Jacob Carlborg