I was checking at the documentation, but I couldn't find any information on this.
Is it legal to throw an error (e.g. call luaL_error(L, "some error")) within a __gc metamethod?
What will happen to the table in this case, will it be free'd correctly? And especially what will be the behavior of lua_close(L)? Will the finallization of the Lua state be complete, or the error will interrupt it?