luabind exceptions from 0.7 towards 0.8.1

"Andreas Grob" <[email protected]>
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <504985e9a691c58181c564599e297061.squirrel@unimail.uni-dortmund.de>
Hi all!

Currently I am trying to upgrade our server from luabind-0.7/lua-5.0 to
luabind-0.8.1 / lua-5.1.4. After the upgrade, luabind seems to crash the
server, when a bad script is called. Was there any change in exception
handling? Do I have to set compile time options? Anything is working just
fine with the previous version. This is the reproducable gdb stacktrace.
Perhaps you can easily spot what is going wrong there.

Thank you in advance,

Andreas


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb76ed6d0 (LWP 2616)]
0x080820a4 in __gnu_cxx::hashtable<std::pair<MAP_POSITION const,
std::map<unsigned char, CContainer*, std::less<unsigned char>,
std::allocator<std::pair<unsigned char const, CContainer*> > > >,
MAP_POSITION, CMap::mapposhash, std::_Select1st<std::pair<MAP_POSITION
const, std::map<unsigned char, CContainer*, std::less<unsigned char>,
std::allocator<std::pair<unsigned char const, CContainer*> > > > >,
CMap::eqmappos, std::allocator<std::map<unsigned char, CContainer*,
std::less<unsigned char>, std::allocator<std::pair<unsigned char const,
CContainer*> > > > >::clear (this=0x1a79d6f8)
    at /usr/include/c++/4.3/backward/hashtable.h:1081
1081          _Node* __cur = _M_buckets[__i];
(gdb) backtrace
#0  0x080820a4 in __gnu_cxx::hashtable<std::pair<MAP_POSITION const,
std::map<unsigned char, CContainer*, std::less<unsigned char>,
std::allocator<std::pair<unsigned char const, CContainer*> > > >,
MAP_POSITION, CMap::mapposhash, std::_Select1st<std::pair<MAP_POSITION
const, std::map<unsigned char, CContainer*, std::less<unsigned char>,
std::allocator<std::pair<unsigned char const, CContainer*> > > > >,
CMap::eqmappos, std::allocator<std::map<unsigned char, CContainer*,
std::less<unsigned char>, std::allocator<std::pair<unsigned char const,
CContainer*> > > > >::clear (this=0x1a79d6f8)
    at /usr/include/c++/4.3/backward/hashtable.h:1081
#1  0x08082235 in ~hashtable (this=0x1a79d6f8) at
/usr/include/c++/4.3/backward/hashtable.h:360
#2  0x080822c1 in ~hash_map (this=0x1a79d6f8) at
/usr/include/c++/4.3/ext/hash_map:84
#3  0x0808050a in ~CMap (this=0x1a79d6f8) at CMap.cpp:69
#4  0x080ab061 in ~CWorld (this=0xbfb0c1a4) at CWorld.cpp:463
#5  0x0825bf90 in luabind::detail::out_value_converter<524,
luabind::detail::null_type>::converter_postcall<CWorld> (this=0xbfb0c1a4,
L=0x1c641120) at /opt/include/luabind/out_value_policy.hpp:109
#6  0x08262eaa in luabind::detail::invoke_member<luabind::adl::object
(CWorld::*)(position, unsigned char),
boost::mpl::vector4<luabind::adl::object, CWorld&, position, unsigned
char>, luabind::detail::policy_cons<luabind::detail::out_value_policy<1,
luabind::detail::null_type>, luabind::detail::null_type> > (L=0x1c641120,
f=@0x1c65d228)
    at
/opt/include/boost-1_39/boost/preprocessor/iteration/detail/local.hpp:34
#7  0x08263015 in luabind::detail::invoke0<luabind::adl::object
(CWorld::*)(position, unsigned char),
boost::mpl::vector4<luabind::adl::object, CWorld&, position, unsigned
char>, luabind::detail::policy_cons<luabind::detail::out_value_policy<1,
luabind::detail::null_type>, luabind::detail::null_type>,
boost::is_void<luabind::adl::object> > (L=0x1c641120, f=@0x1c65d228,
policies=@0xbfb0c527)
    at /opt/include/luabind/detail/call.hpp:37
#8  0x0826304e in luabind::detail::invoke<luabind::adl::object
(CWorld::*)(position, unsigned char),
boost::mpl::vector4<luabind::adl::object, CWorld&, position, unsigned
char>, luabind::detail::policy_cons<luabind::detail::out_value_policy<1,
luabind::detail::null_type>, luabind::detail::null_type> > (L=0x1c641120,
f=@0x1c65d228, policies=@0xbfb0c527) at
/opt/include/luabind/detail/call.hpp:58
#9  0x08263077 in luabind::detail::function_invoke<luabind::adl::object
(CWorld::*)(position, unsigned char),
boost::mpl::vector4<luabind::adl::object, CWorld&, position, unsigned
char>, luabind::detail::policy_cons<luabind::detail::out_value_policy<1,
luabind::detail::null_type>, luabind::detail::null_type> >::operator()
(this=0x1c65d228, L=0x1c641120) at
/opt/include/luabind/make_function.hpp:31
#10 0x08263097 in
boost::detail::function::function_obj_invoker1<luabind::detail::function_invoke<luabind::adl::object
(CWorld::*)(position, unsigned char),
boost::mpl::vector4<luabind::adl::object, CWorld&, position, unsigned
char>, luabind::detail::policy_cons<luabind::detail::out_value_policy<1,
luabind::detail::null_type>, luabind::detail::null_type> >, int,
lua_State*>::invoke (
    function_obj_ptr=@0x1c65d228, a0=0x1c641120) at
/opt/include/boost-1_39/boost/function/function_template.hpp:131
#11 0xb7c90c0b in boost::function1<int, lua_State*>::operator()
(this=0x1c65d224, a0=0x1c641120) at
/home/vilarion/boost_1_39_0/boost/function/function_template.hpp:989
#12 0xb7c9240c in call (this=0x1c65d21c, L=0x1c641120) at
src/function.cpp:114
#13 0xb7c9167f in call<const luabind::detail::<unnamed>::function* const,
lua_State*> (this=0xbfb0c6f8, u=@0xbfb0c700, b1=@0xbfb0c650) at
/home/vilarion/boost_1_39_0/boost/bind/mem_fn_template.hpp:217
#14 0xb7c916a8 in operator()<const luabind::detail::<unnamed>::function*>
(this=0xbfb0c6f8, u=@0xbfb0c700, a1=0x1c641120) at
/home/vilarion/boost_1_39_0/boost/bind/mem_fn_template.hpp:226
#15 0xb7c916ff in operator()<int, boost::_mfi::cmf1<int,
luabind::detail::<unnamed>::function, lua_State*>, boost::_bi::list0>
(this=0xbfb0c700, f=@0xbfb0c6f8, a=@0xbfb0c6a3)
    at /home/vilarion/boost_1_39_0/boost/bind/bind.hpp:296
#16 0xb7c9174e in operator() (this=0xbfb0c6f8) at
/home/vilarion/boost_1_39_0/boost/bind/bind_template.hpp:20
#17 0xb7c9185b in handle_exceptions<int, boost::_bi::bind_t<int,
boost::_mfi::cmf1<int, luabind::detail::<unnamed>::function, lua_State*>,
boost::_bi::list2<boost::_bi::value<const
luabind::detail::<unnamed>::function*>, boost::_bi::value<lua_State*> > >
> (L=0x1c641120, fn=
            {f_ = {f_ = 0xb7c921bc <call>}, l_ =
{<boost::_bi::storage2<boost::_bi::value<const
luabind::detail::<unnamed>::function*>,
boost::_bi::value<lua_State*> >> =
{<boost::_bi::storage1<boost::_bi::value<const
luabind::detail::<unnamed>::function*> >> = {a1_ = {t_ =
0x1c65d21c}}, a2_ = {t_ = 0x1c641120}}, <No data fields>}}) at
./luabind/exception_handler.hpp:94
#18 0xb7c92161 in function_dispatcher (L=0x1c641120) at src/function.cpp:125
#19 0x082c2b05 in luaD_precall ()
#20 0x082cc040 in luaV_execute ()
#21 0x082c30a8 in luaD_call ()
#22 0x082c0181 in f_call ()
#23 0x082c26b7 in luaD_rawrunprotected ()
#24 0x082c271f in luaD_pcall ()
#25 0x082bff9b in lua_pcall ()
#26 0xb7c93ac7 in luabind::detail::pcall (L=0x1c641120, nargs=0,
nresults=0) at src/pcall.cpp:42
#27 0x08270aa4 in ~proxy_function_void_caller (this=0xbfb0ca5c) at
/opt/include/luabind/detail/call_function.hpp:262
#28 0x0826e60d in CLuaNPCScript::nextCycle (this=0x1c6223d0) at
script/CLuaNPCScript.cpp:25
#29 0x080a7605 in CWorld::checkNPC (this=0xa22c860) at CWorld.cpp:907
#30 0x080aae3f in CWorld::turntheworld (this=0xa22c860) at CWorld.cpp:509
#31 0x08135709 in main (argc=2, argv=0xbfb0d024) at main.cpp:211


------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.