[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Garbage collection causes stack overflow
- From: Roberto Ierusalimschy <roberto@...>
- Date: Thu, 11 Apr 2019 15:42:11 -0300
> Could this condition be triggered due to heap fragmentation?
> For example:
> 1. Lua runs out of memory.
> 2. Emergency GC is executed, some memory is actually freed. Heap is
> severely fragmented.
> 3. Lua tries to store some data, which normally should fit into the heap
> (due to previous GC). Due to high fragmentation allocation fails.
> 4. Lua calls emergency GC.
> 5. Repeat...
If memory allocation fails after an emergency GC, then there is a
real failure and pcall should return, finishing your program.
> I am pretty confident that the issue is caused by the GC. I measure the
> stack exactly before and after lua_pcall(),
> and indeed this is where the stack is used. I also placed some prints and I
> see that stack usage increases only when
> GC is running.
>
> Note that stack is used progressively. On every GC call, more and more is
> requested till the exhaustion. On the first
> calls the usage is pretty minimal.
Have you checked that after each GC call the stack is back where it
started (basic correct C behavior)?
-- Roberto