[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: bug of GC "step"
- From: Irayo <irayo.lt@...>
- Date: Wed, 02 Jul 2008 18:14:36 -0500
Mauro Iazzi wrote:
I would agree that it's not a bug, then. Lua could throw an error, but
that just adds an extra check to the garbage collection. I think it'd
be sufficient and easier to put a notice about it in the manual ("asking
the GC to collect when memory grows to 100% of its current size will
cause an infinite loop" or some such). I don't think it would be enough
of an issue to actually code a specific check for it, but that's
certainly an option as well. I guess GC operations take long enough
that a couple extra machine instructions wouldn't hurt.
On my computer (x86_64) this runs well. Using -m32 to generate 32 bit
code recreates the freeze.
However it seems to me that this is not a bug. If you read the
definitions of the gc parameters, you will see that you are asking the
collector to start whenever the memory grows over 100% of what's
If a collection cycle has just finished then it cannot reclaim any
memory, and whatever threshold it wants to get under (probably a
percentage of current), it cannot reach it. Thus it remains in the
loop you have seen. Try using collectgarbage("setpause", 101) : it
seems to fix things here.
Another interesting question is why the 64-bit Lua can do it just fine.