Hi,

wormux is a great game :)

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?

(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

Répondre à