lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


>  Timer( function() print "timeout" end ):start(1)

I've found now a (large) test case that fails in 1 of ~10 runs with this error.

After adding some consistence checks and output I see that the problem occurs
when at a certain time luaC_step is run.  I see that the later failing Timer object 
is moved from 'finobj' to 'tobefnz' in the function separatetobefnz.  I think this
should only happen for unreferenced objects?

But: In the next consistence check the timer is still in the registry, but the
corresponding callback is gone.  Why is the Timer marked for finalization, if its
in the registry?  Please note that __gc of the Timer was not called up to this point.
The problem seems not to happen if a full collection is performed before every
consistence check.  So it might be a problem with incremental collection.

But this is all speculation so far.  What I need now are some ideas how to debug this further.

BTW: This is Lua 5.2.3

- Jörg