[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: LuaJIT2 crashes with luabind or wxLua
- From: Daniel Wallin <daniel@...>
- Date: Thu, 15 Apr 2010 20:32:48 +0200
On Thu, Apr 15, 2010 at 02:17:23PM +0200, Mike Pall wrote:
> Yang Fan wrote:
> > I have a C++ program which embeds Lua interpreter and registers
> > several classes, then replace the Lua interpreter dll with
> > LuaJIT2's. The C++ program calls a Lua function which would call
> > C++ functions registered by Luabind, and if the called C++
> > functions are invalid the C++ program may crash, but the
> > officila Lua won't, please see the attachment for example.
>
> The example works fine for me on Linux/x64, but I can't test this
> easily on Windows. And the sources of luabind and boost are
> incomprehensible, so I'm at a loss what really happens.
>
> You could attach a debugger to see where it's crashing. The
> interesting path starts somwehere at:
> luabind::detail::class_rep::static_class_gettable()
>
> It could be that luabind tries to throw exceptions across Lua
> frames or tries to throw Lua errors across C++ frames protected
> with try/catch (works on Windows/x64, crashes on Windows/x86).
It doesn't. In this case static_class_gettable() calls lua_error()
directly, with no non-trivial objects alive on the stack, so it should
be longjmp-safe. lua_pcall() returns properly, and then the crash
happens when luabind throws an exception.
FWIW I can reproduce this on my Windows VM, but I have no idea what's
wrong.
--
Daniel Wallin
BoostPro Computing
http://www.boostpro.com