Re: [BUG?] Segmentation fault in lua_error() - easily reproducible

  • From: Alex <initrd.gz@xxxxxxxxx>
  • To: luajit@xxxxxxxxxxxxx
  • Date: Fri, 12 Dec 2014 15:52:48 -0500

> luaL_loadstring(lua, "coroutine.yield()");

This just loads the string and creates a function from the contents; it
doesn't run it. You then try to resume the resulting function, which isn't
a coroutine.

On Fri, Dec 12, 2014 at 3:44 PM, Sergei Zhirikov <
dmarc-noreply@xxxxxxxxxxxxx> wrote:
>
> Hi,
>
> I've encountered this case of a consistent segmentation fault in LuaJIT
> (tested with 2.0.3 on x86 and x86_64).
> The following simple example allows to reproduce it:
>
> #include <lua.h>
> #include <lualib.h>
> #include <lauxlib.h>
> #include <stdio.h>
>
> int main()
> {
>   lua_State *lua = luaL_newstate();
>   luaL_openlibs(lua);
>   luaL_loadstring(lua, "coroutine.yield()");
>   int res = lua_resume(lua, 0);
>   printf("res=%d, top=%d\n", res, lua_gettop(lua));
>   lua_pushliteral(lua, "test");
>   lua_error(lua);
>   return 0;
> }
>
> This code is supposed to panic, but it results in a segmentation fault
> inside lua_error() instead. Admittedly, this not a very common usage
> pattern, but calling lua_error() on a suspended Lua thread can be useful
> sometimes. Also, the "classic" Lua implementation doesn't have a problem
> with this usage.
>
> I'm wondering, can this be fixed with a simple patch?
>
> Thanks & regards,
> Sergei.
>
>
>

-- 
Sincerely,
Alex Parrill

Other related posts: