Hi,

Stefan Sperling a écrit :
> Hi,
>
> wormux is a great game :)
>   

thanks :)

> I got the following crash from wormux-0.8.2 while playing a networking
> game on OpenBSD. I don't know how to reproduce, but the crash has happened
> mulitple times, not just once. It seems to occur randomly, I suspect
> a threading issue. The core dump shows that STL code is running into
> a bad pointer, see below.
>
> Is this a known problem?
>   

No, it is not a known problem, thanks a lot for reporting it !!!

>From what I see in the dump, it is related to the body (skin)
management. Could you reproduce the game in local game ? Could you try
0.8.1 to see if the bug was already there ?

I will have a further look in the next few days :)

Regards,

Matt (gentildemon)

> (gdb warns that the binary is newer than the core file. This is because
> I rebuilt the binary with debug symbols to be able to read a meaningful
> trace from the core file.)
>
> $ gdb `which wormux` wormux.core
> GNU gdb 6.3
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i386-unknown-openbsd4.4"...
>
> warning: exec file is newer than core file.
> Core was generated by `wormux'.
> Program terminated with signal 11, Segmentation fault.
> Reading symbols from /usr/lib/libpthread.so.11.1...done.
> Loaded symbols for /usr/lib/libpthread.so.11.1
> Reading symbols from /usr/local/lib/libSDL_net.so.1.1...done.
> Loaded symbols for /usr/local/lib/libSDL_net.so.1.1
> Reading symbols from /usr/local/lib/libSDL_ttf.so.7.0...done.
> Loaded symbols for /usr/local/lib/libSDL_ttf.so.7.0
> Reading symbols from /usr/local/lib/libSDL_mixer.so.3.0...done.
> Loaded symbols for /usr/local/lib/libSDL_mixer.so.3.0
> Reading symbols from /usr/local/lib/libSDL_image.so.2.0...done.
> Loaded symbols for /usr/local/lib/libSDL_image.so.2.0
> Reading symbols from /usr/local/lib/libpng.so.8.0...done.
> Loaded symbols for /usr/local/lib/libpng.so.8.0
> Reading symbols from /usr/local/lib/libSDL_gfx.so.13.0...done.
> Loaded symbols for /usr/local/lib/libSDL_gfx.so.13.0
> Reading symbols from /usr/local/lib/libSDL.so.8.0...done.
> Loaded symbols for /usr/local/lib/libSDL.so.8.0
> Reading symbols from /usr/X11R6/lib/libX11.so.11.1...done.
> Loaded symbols for /usr/X11R6/lib/libX11.so.11.1
> Reading symbols from /usr/lib/libz.so.4.1...done.
> Loaded symbols for /usr/lib/libz.so.4.1
> Reading symbols from /usr/local/lib/libxml2.so.10.0...done.
> Loaded symbols for /usr/local/lib/libxml2.so.10.0
> Reading symbols from /usr/lib/libm.so.5.0...done.
> Loaded symbols for /usr/lib/libm.so.5.0
> Reading symbols from /usr/local/lib/libintl.so.4.0...done.
> Loaded symbols for /usr/local/lib/libintl.so.4.0
> Reading symbols from /usr/local/lib/libiconv.so.5.0...done.
> Loaded symbols for /usr/local/lib/libiconv.so.5.0
> Reading symbols from /usr/local/lib/libcurl.so.12.0...done.
> Loaded symbols for /usr/local/lib/libcurl.so.12.0
> Reading symbols from /usr/local/lib/libidn.so.16.30...done.
> Loaded symbols for /usr/local/lib/libidn.so.16.30
> Reading symbols from /usr/lib/libssl.so.12.0...done.
> Loaded symbols for /usr/lib/libssl.so.12.0
> Reading symbols from /usr/lib/libcrypto.so.15.0...done.
> Loaded symbols for /usr/lib/libcrypto.so.15.0
> Reading symbols from /usr/lib/libstdc++.so.46.0...done.
> Loaded symbols for /usr/lib/libstdc++.so.46.0
> Symbols already loaded for /usr/lib/libpthread.so.11.1
> Reading symbols from /usr/lib/libc.so.50.0...done.
> Loaded symbols for /usr/lib/libc.so.50.0
> Reading symbols from /usr/lib/libsndio.so.3.2...done.
> Loaded symbols for /usr/lib/libsndio.so.3.2
> Reading symbols from /usr/X11R6/lib/libXau.so.9.0...done.
> Loaded symbols for /usr/X11R6/lib/libXau.so.9.0
> Reading symbols from /usr/X11R6/lib/libXdmcp.so.9.0...done.
> Loaded symbols for /usr/X11R6/lib/libXdmcp.so.9.0
> Reading symbols from /usr/X11R6/lib/libXext.so.10.0...done.
> Loaded symbols for /usr/X11R6/lib/libXext.so.10.0
> Reading symbols from /usr/X11R6/lib/libXrender.so.5.0...done.
> Loaded symbols for /usr/X11R6/lib/libXrender.so.5.0
> Reading symbols from /usr/X11R6/lib/libXrandr.so.6.0...done.
> Loaded symbols for /usr/X11R6/lib/libXrandr.so.6.0
> Reading symbols from /usr/lib/libusbhid.so.3.0...done.
> Loaded symbols for /usr/lib/libusbhid.so.3.0
> Reading symbols from /usr/X11R6/lib/libfreetype.so.16.1...done.
> Loaded symbols for /usr/X11R6/lib/libfreetype.so.16.1
> Reading symbols from /usr/local/lib/libmikmod.so.2.4...done.
> Loaded symbols for /usr/local/lib/libmikmod.so.2.4
> Reading symbols from /usr/local/lib/libsmpeg.so.2.0...done.
> Loaded symbols for /usr/local/lib/libsmpeg.so.2.0
> Reading symbols from /usr/local/lib/libogg.so.5.3...done.
> Loaded symbols for /usr/local/lib/libogg.so.5.3
> Reading symbols from /usr/local/lib/libvorbis.so.6.0...done.
> Loaded symbols for /usr/local/lib/libvorbis.so.6.0
> Reading symbols from /usr/local/lib/libvorbisfile.so.5.0...done.
> Loaded symbols for /usr/local/lib/libvorbisfile.so.5.0
> Reading symbols from /usr/local/lib/libjpeg.so.62.0...done.
> Loaded symbols for /usr/local/lib/libjpeg.so.62.0
> Reading symbols from /usr/local/lib/libtiff.so.38.2...done.
> Loaded symbols for /usr/local/lib/libtiff.so.38.2
> Reading symbols from /usr/libexec/ld.so...done.
> Loaded symbols for /usr/libexec/ld.so
> Reading symbols from /usr/X11R6/lib/libXcursor.so.4.0...done.
> Loaded symbols for /usr/X11R6/lib/libXcursor.so.4.0
> Reading symbols from /usr/X11R6/lib/libXfixes.so.5.0...done.
> Loaded symbols for /usr/X11R6/lib/libXfixes.so.5.0
> #0  std::_Rb_tree<std::string, std::pair<std::string const, member_mvt>, 
> std::_Select1st<std::pair<std::string const, member_mvt> >, 
> std::less<std::string>, std::allocator<std::pair<std::string const, 
> member_mvt> > >::find (
>     this=0x700032, _...@0x8a6feac0) at stl_tree.h:648
> 648         _M_root() const { return (_Link_type&) _M_header->_M_parent; }
> (gdb) p _M_header 
> Cannot access memory at address 0x700032
> (gdb) bt
> #0  std::_Rb_tree<std::string, std::pair<std::string const, member_mvt>, 
> std::_Select1st<std::pair<std::string const, member_mvt> >, 
> std::less<std::string>, std::allocator<std::pair<std::string const, 
> member_mvt> > >::find (
>     this=0x700032, _...@0x8a6feac0) at stl_tree.h:648
> #1  0x1c012634 in Body::ApplyMovement (this=0x89ade280, mvt=0x8732f500, 
> frame=1) at stl_map.h:468
> #2  0x1c013279 in Body::Build (this=0x89ade280) at character/body.cpp:401
> #3  0x1c01be38 in Character::Draw (this=0x87335008) at 
> character/character.cpp:400
> #4  0x1c03ead8 in Game::Draw (this=0x8bae7f80) at game/game.cpp:356
> #5  0x1c03ecf6 in Game::CallDraw (this=0x8bae7f80) at game/game.cpp:406
> #6  0x1c03f23c in Game::MainLoop (this=0x8bae7f80) at game/game.cpp:522
> #7  0x1c042c29 in GameClassic::EndOfGame (this=0x8bae7f80) at 
> game/game_classic.cpp:59
> #8  0x1c03ee4f in Game::Run (this=0x8bae7f80) at game/game.cpp:446
> #9  0x1c03d643 in Game::Start (this=0x8bae7f80) at game/game.cpp:128
> #10 0x1c0dc0ce in NetworkMenu::signal_ok (this=0xcfbc6790) at 
> menu/network_menu.cpp:267
> #11 0x1c0d3cd4 in Menu::mouse_ok (this=0xcfbc6790) at menu/menu.cpp:100
> #12 0x1c0d3d8c in Menu::BasicOnClickUp (this=0xcfbc6790, 
> mousepositi...@0xcfbc6738) at menu/menu.cpp:117
> #13 0x1c0d40ec in Menu::Run (this=0xcfbc6790) at menu/menu.cpp:266
> #14 0x1c0d91b6 in NetworkConnectionMenu::signal_ok (this=0xcfbc6790) at 
> menu/network_connection_menu.cpp:441
> #15 0x1c0d3cd4 in Menu::mouse_ok (this=0xcfbc6950) at menu/menu.cpp:100
> #16 0x1c0d3d8c in Menu::BasicOnClickUp (this=0xcfbc6950, 
> mousepositi...@0xcfbc68f8) at menu/menu.cpp:117
> #17 0x1c0d40ec in Menu::Run (this=0xcfbc6950) at menu/menu.cpp:266
> #18 0x1c08b820 in AppWormux::Main (this=0x80f8e040) at main.cpp:130
> #19 0x1c08dd8b in main (argc=1, argv=0xcfbc6b4c) at main.cpp:435
> (gdb) info frame
> Stack level 0, frame at 0xcfbc5f40:
>  eip = 0x1c015ff6
>     in std::_Rb_tree<std::string, std::pair<std::string const, member_mvt>, 
> std::_Select1st<std::pair<std::string const, member_mvt> >, 
> std::less<std::string>, std::allocator<std::pair<std::string const, 
> member_mvt> > >::find(std::string const&) (stl_tree.h:648); saved eip 
> 0x1c012634
>  called by frame at 0xcfbc60c0
>  source language c++.
>  Arglist at 0xcfbc5f38, args: this=0x700032, _...@0x8a6feac0
>  Locals at 0xcfbc5f38, Previous frame's sp is 0xcfbc5f40
>  Saved registers:
>   ebx at 0xcfbc5f2c, ebp at 0xcfbc5f38, esi at 0xcfbc5f30, edi at 0xcfbc5f34, 
> eip at 0xcfbc5f3c
> (gdb) 
>
>
> I'll happily test patches.
>
> Thanks,
> Stefan
>
> _______________________________________________
> Wormux-dev mailing list
> Wormux-dev@gna.org
> https://mail.gna.org/listinfo/wormux-dev
>
>
>   


_______________________________________________
Wormux-dev mailing list
Wormux-dev@gna.org
https://mail.gna.org/listinfo/wormux-dev

Répondre à