Re: luabind and g++ 4.7

Nigel J Atkinson <[email protected]> Thu, 5 Apr 2012 18:43:27 +1000
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <[email protected]>
Just something off the top of my head, but make sure that you compile *everything* with g++ 4.7 and see if that fixes it.

I've previously had issues with a program compiled with 4.4 but Luabind compiled with 4.3

Nigel


On 05/04/2012, at 6:25 PM, [email protected] wrote:

> 
> Hi, 
> 
> thanks for the answer. Sorry for the so few details and so vague message last
> time. Here are more details.
> 
> Compilation works fine under both versions of compilers (CXX exported to the
> correct g++ file).
> The program crashes when running after being compiled with g++ 4.7.
> Here below a backtrace.
> 
> But what's annoying me here is that gdb uses the wrong files (here files from
> g++ 4.6 whereas the program was _really_ compiled with g++ 4.7).
> 
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0x7fffe2742700 (LWP 27305)]
> _M_lower_bound (__y=<optimized out>, __k=..., __x=0x407, this=<optimized out>)
>    at /usr/include/c++/4.6/bits/stl_tree.h:1096
> warning: Source file is more recent than executable.
> 1096	
> (gdb) bt
> #0  _M_lower_bound (__y=<optimized out>, __k=..., __x=0x407, this=<optimized out>)
>    at /usr/include/c++/4.6/bits/stl_tree.h:1096
> #1  find (__k=..., this=0x7fffe27410e8) at /usr/include/c++/4.6/bits/stl_tree.h:1539
> #2  find (__x=..., this=0x7fffe27410e8) at /usr/include/c++/4.6/bits/stl_map.h:752
> #3  get (object_offset=-6846562, dynamic_id=6, target=6, src=6896208, this=0x7fffe27410e8) at src/inheritance.cpp:87
> #4  luabind::detail::cast_graph::impl::cast (this=0x7fffe27410d0, p=0x687868, src=6896208, target=6, dynamic_id=6, 
>    dynamic_ptr=<optimized out>) at src/inheritance.cpp:152
> #5  0x00007ffff799f66c in luabind::detail::cast_graph::cast (this=<optimized out>, p=<optimized out>, 
>    src=<optimized out>, target=<optimized out>, dynamic_id=<optimized out>, dynamic_ptr=<optimized out>)
>    at src/inheritance.cpp:227
> #6  0x000000000043b6c1 in luabind::detail::pointer_holder<game::ServerMonster*, void const>::get (this=0x696ba0, 
>    target=6) at /usr/include/luabind/detail/instance_holder.hpp:109
> #7  0x0000000000423997 in luabind::detail::object_rep::get_instance (this=0x6939f8, target=6)
>    at /usr/include/luabind/detail/object_rep.hpp:59
> #8  0x000000000044015b in luabind::detail::const_ref_converter::match<game::ServerMonster> (this=0x7fffe2741140, 
>    L=0x6859f0, index=1) at /usr/include/luabind/detail/policy.hpp:450
> #9  0x0000000000440494 in luabind::detail::invoke_member<game::MonsterState (game::ServerMonster::*)() const, boost::mpl::vector2<game::MonsterState, game::ServerMonster const&>, luabind::detail::null_type> (L=0x6859f0, self=..., ctx=..., f=
>    @0x692790: (game::MonsterState (game::ServerMonster::*)(const game::ServerMonster * const)) 0x432bd8 <game::ServerMonster::GetState() const>) at /usr/include/luabind/detail/call.hpp:257
> #10 0x000000000043fe9c in luabind::detail::invoke0<game::MonsterState (game::ServerMonster::*)() const, boost::mpl::vector2<game::MonsterState, game::ServerMonster const&>, luabind::detail::null_type, boost::is_void<game::MonsterState> > (
>    L=0x6859f0, self=..., ctx=..., f=
>    @0x692790: (game::MonsterState (game::ServerMonster::*)(const game::ServerMonster * const)) 0x432bd8 <game::ServerMonster::GetState() const>, policies=...) at /usr/include/luabind/detail/call.hpp:78
> #11 0x000000000043e945 in luabind::detail::invoke<game::MonsterState (game::ServerMonster::*)() const, boost::mpl::vector2<game::MonsterState, game::ServerMonster const&>, luabind::detail::null_type> (L=0x6859f0, self=..., ctx=..., f=
>    @0x692790: (game::MonsterState (game::ServerMonster::*)(const game::ServerMonster * const)) 0x432bd8 <game::ServerMonster::GetState() const>, policies=...) at /usr/include/luabind/detail/call.hpp:101
> #12 0x000000000043e12e in luabind::detail::function_object_impl<game::MonsterState (game::ServerMonster::*)() const, boost::mpl::vector2<game::MonsterState, game::ServerMonster const&>, luabind::detail::null_type>::entry_point (L=0x6859f0)
>    at /usr/include/luabind/make_function.hpp:63
> #13 0x00007ffff7bb5e2b in luaD_precall () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #14 0x00007ffff7bb60c1 in luaD_call () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #15 0x00007ffff7bb0279 in lua_call () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #16 0x00007ffff79a02d1 in get_instance_value (L=0x6859f0) at src/object_rep.cpp:165
> #17 luabind::detail::(anonymous namespace)::get_instance_value (L=0x6859f0) at src/object_rep.cpp:148
> #18 0x00007ffff7bb5e2b in luaD_precall () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #19 0x00007ffff7bb60c1 in luaD_call () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #20 0x00007ffff7bc2df4 in callTMres () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #21 0x00007ffff7bc30fc in luaV_gettable () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> ---Type <return> to continue, or q <return> to quit---
> #22 0x00007ffff7bc4384 in luaV_execute () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #23 0x00007ffff7bb60d6 in luaD_call () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #24 0x00007ffff7bb02e3 in f_call () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #25 0x00007ffff7bb508f in luaD_rawrunprotected () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #26 0x00007ffff7bb64f5 in luaD_pcall () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #27 0x00007ffff7bb038d in lua_pcall () from /usr/lib/x86_64-linux-gnu/liblua5.1.so.0
> #28 0x0000000000434f6d in luabind::detail::proxy_function_void_caller<boost::tuples::tuple<boost::reference_wrapper<game::ServerMonster> const*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::~proxy_function_void_caller (this=0x7fffe2741ca0, __in_chrg=<optimized out>)
>    at /usr/include/luabind/detail/call_function.hpp:262
> #29 0x00000000004323f4 in game::ServerMonster::Update (this=0x693a50) at server_monster.cc:78
> #30 0x0000000000433e57 in game::MonsterArea::Update (this=0x693460, time=1333612531, dt=3.719329833984375e-05)
>    at server_monster.cc:469
> #31 0x0000000000448867 in game::MonsterManager::Run (this=0x66cde0) at server.cc:127
> #32 0x00007fffe4641cee in mel::layers::threads::ThreadFunc (th=0x66cde0) at pthreads.cc:99
> #33 0x00007fffe34c8b50 in start_thread (arg=<optimized out>) at pthread_create.c:304
> #34 0x00007fffe3abd90d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
> #35 0x0000000000000000 in ?? ()
> 
> 
> ----- Mail original -----
> De: "Ryan Pavlik" <[email protected]>
> À: [email protected]
> Envoyé: Jeudi 5 Avril 2012 00:33:46
> Objet: Re: [luabind] luabind and g++ 4.7
> 
> 
> Unfortunately this isn't very much information to go on. Does it fail at compile time or runtime? Are any warnings or error messages printed? 
> 
> 
> Ryan 
> 
> 
> On Wed, Apr 4, 2012 at 10:19 AM, < [email protected] > wrote: 
> 
> 
> 
> Hello, 
> 
> my program using luabind stopped to work when compiled with g++ 4.7. 
> If I switch back to g++ 4.6 it works again. 
> 
> Is it a know issue ? 
> 
> For the moment it is not easy for me to know where exactly the thing 
> hurts. 
> 
> Regards, 
> 
> dAgeCKo 
> 
> ------------------------------------------------------------------------------ 
> Better than sec? Nothing is better than sec when it comes to 
> monitoring Big Data applications. Try Boundary one-second 
> resolution app monitoring today. Free. 
> http://p.sf.net/sfu/Boundary-dev2dev 
> _______________________________________________ 
> luabind-user mailing list 
> [email protected] 
> https://lists.sourceforge.net/lists/listinfo/luabind-user 
> 
> 
> 
> 
> -- 
> Ryan Pavlik 
> HCI Graduate Student 
> Virtual Reality Applications Center 
> Iowa State University 
> 
> [email protected] 
> http://academic.cleardefinition.com 
> 
> ------------------------------------------------------------------------------
> Better than sec? Nothing is better than sec when it comes to
> monitoring Big Data applications. Try Boundary one-second 
> resolution app monitoring today. Free.
> http://p.sf.net/sfu/Boundary-dev2dev
> _______________________________________________
> luabind-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/luabind-user
> 
> ------------------------------------------------------------------------------
> Better than sec? Nothing is better than sec when it comes to
> monitoring Big Data applications. Try Boundary one-second 
> resolution app monitoring today. Free.
> http://p.sf.net/sfu/Boundary-dev2dev
> _______________________________________________
> luabind-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/luabind-user


------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev