[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: coroutine.resume() crash
- From: Sean Conner <sean@...>
- Date: Fri, 9 Sep 2022 20:01:25 -0400
It was thus said that the Great Sean Conner once stated:
> It was thus said that the Great John Dunn once stated:
> > >  If you are using Linux, could you run the app under valgrind?  It will
> > >  take longer, but it should reveal some issues.
> > 
> > Running on Ubuntu using g++ 9.3.0 it is still crashing. Here is the output
> > of valgrind. It definitely detected an error - the issue for me is that's
> > the error is deep inside of Lua and I'm not sure how my code could have
> > caused this. This is using Lua 5.3 from apt-get so it doesn't contain any
> > modifications.
> 
>   I went back to the original example you provided, recompiled it, and yes,
> I finally got a segfault.  Using valgrind, I was able to find the problem in
> this function:
> 
> 	struct mytimer
> 	{
> 	  lua_State* L;
> 	  int handler_index{ LUA_REFNIL };
> 	  void trigger()
> 	  {
> 	    std::cout << __FUNCTION__ << std::endl;
> 	    lua_rawgeti(L, LUA_REGISTRYINDEX, handler_index);
> 	    lua_pcall(L, 0, 0, 0);
> 	  }
> 	};
  Furthermore, I changed the code a bit to print out the Lua pointer when
created, and when used in trigger() and timer_after_call().  The output from
that run:
	[spc]matrix:~/tmp>./co11
	running good code
	L new state 0x558e8fe4a2c8
	init good
	timer_call_after L state param 0x558e8fe4a2c8
	init good
	trigger L state param 0x558e8fe4a2c8
	trigger L state 0x558e8fe4a2c8
	tick
	running bad code
	L new state 0x558e8fe510a8
	timer_call_after L state param 0x558e8fe58108
	init good
	trigger L state param 0x558e8fe510a8
	trigger L state 0x558e8fe58108
  So Xmilia Hermit's reply is correct about the Lua states.  
  -spc