[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Potential bug in Lua when hooking functions
- From: Mike Pall <mikelu-0907@...>
- Date: Mon, 20 Jul 2009 15:45:00 +0200
Jonathan Shaw wrote:
> We've come across an interesting behaviour when calling a
> function in the context of a coroutine that's yielded.
The only thing you're allowed to do with a coroutine in yielded
state is to resume it. Calling a function on a lua_State object
which is in any state other than 0 (as returned by lua_status())
is invoking undefined behavior.
You may get away with it in the current version of Lua, but that's
not a guarantee for future versions or different VMs implementing
the Lua ABI. The problem you've just discovered illustrates one
meaning of 'undefined'.
In general it's not advisable to mix resume/yield and call/pcall
on the same lua_State. Lua states/coroutines are cheap to create,
so better create extra ones for different purposes.
Summary: not a bug in Lua, please fix your application.
--Mike