Thread safety of alloca
Denis Koroskin
2korden at gmail.com
Sat Oct 24 17:49:12 PDT 2009
On Sun, 25 Oct 2009 03:34:24 +0300, dsimcha <dsimcha at yahoo.com> wrote:
> Does anyone know if alloca() is by some chance not thread safe? I'm
> working
> on improving my parallelization library and I keep running into all
> kinds of
> erratic behavior (but not stack overflows) when I use alloca() instead
> of heap
> as an optimization, but when I disable this optimization, everything
> seems to
> work. I do know that several threads are likely calling alloca() at the
> same
> time and with requests large enough that their stacks might need to be
> expanded.
>
> At first, I thought this was just a symptom of a subtle race condition,
> but I
> tried inserting sleep statements and synchronized blocks in various
> places
> around the alloca() calls to change the timing of things and the
> conclusion is
> the same: malloc() works, alloca() doesn't.
You are probably misusing alloca (e.g. returning it from a function) or
overwriting the stack space in some other way. This is strange otherwise.
I don't think it is thread-unsafe since it doesn't access any global state.
Is the problematic source code available for inspection online?
btw, alloca is implemented in druntime\src\compiler\dmd\alloca.d
More information about the Digitalmars-d
mailing list