Bug 456844

Summary: game crashes for no apparent reason
Product: [Fedora] Fedora Reporter: Michael Smith-Sardior <linux>
Component: 8KingdomsAssignee: Hans de Goede <hdegoede>
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: low    
Version: 8CC: kevin, trevin
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-07-29 19:45:32 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Michael Smith-Sardior 2008-07-28 03:00:42 UTC
Description of problem:
8kingdoms - fedora 8 - Games
I am using fedora 8 x86_64. I just want to get the developers an error message
that only appeared once when it crashed. It crashes almost every time I play it,
but only once did this error message appear.

"Fatal Error: Promenna zadaneho jemna nenalezena"

I have not received any bugzilla backtraces or anything that I could send you to
assist fixing it. If you could let me know what I need to do to help find the
problem please email me back. I have installed the 8kingdoms debug package, but
to no avail for creating a backtrace. 

Version-Release number of selected component (if applicable):
ver 1.1.0

How reproducible:
It is random for when it crashes. I don't have a clue as to how to reproduce it
except to just play the game. On any move it could happen. The longer the game
the greater the chance it will crash. 

Steps to Reproduce:
1.
2.
3.
  
Actual results:
The screen blanks, the main fedora window comes up greatly expanded. Sometimes
the mouse quits working, sometimes it doesn't. I reboot the computer and
everything comes back to normal. I can also change screen resolution, not accept
the new changes, and it will return to normal. 

Ran the program from a terminal and the return message was:

ERROR in script execution. All defenders should be dead!!
Segmentation fault

This is the best I can do. I hope this helps. 

Expected results:


Additional info:

Comment 1 Hans de Goede 2008-07-28 07:31:12 UTC
Hmm,

8Kingdoms is no longer under active development I'm afraid, but lets see if we
can fix this. Can you do the following next time you play:

In a terminal first give the following command:
ulimit -c unlimited

Before starting 8Kingdoms, now you should get a core.xxxxx file next time
8Kingdoms segfaults.

Then after the segfault do:
gdb /usr/bin/8Kingdoms core.xxxxx

At the (gdb) prompt type "bt" and paste the output here.

Thanks!


Comment 2 Michael Smith-Sardior 2008-07-29 09:24:54 UTC
This doesn't look very helpful but here it is. This is the second crash. this
evening. The first one left me without a mouse and an expanded screen (looked
like a 640x480 screen). I had a lot of information on the terminal screen, but I
couldn't select it to copy it. If you have a fix for that, or a workaround to
re-enable my mouse that would be helpful. Or another way to capture the output.
I will try to do my part to help get this fixed. Thanks

[sardior@crystalpalace ~]$ ulimit -c unlimited
Segmentation fault (core dumped)
[sardior@crystalpalace ~]$ gdb /usr/bin/8Kingdoms core.xxxxx
GNU gdb Red Hat Linux (6.6-45.fc8rh)
Copyright (C) 2006 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 "x86_64-redhat-linux-gnu"...
Using host libthread_db library "/lib64/libthread_db.so.1".
/home/sardior/core.xxxxx: No such file or directory.
(gdb) bt
No stack.
(gdb) 



Comment 3 Michael Smith-Sardior 2008-07-29 09:36:28 UTC
Uh oh... I see what you mean. Sorry, didn't realize I needed to find the file
name of "core.xxxxx". There is also one with only 4 digits that is over a Gig.
But here's the right information. 

[sardior@crystalpalace ~]$ gdb /usr/bin/8Kingdoms core.14170
GNU gdb Red Hat Linux (6.6-45.fc8rh)
Copyright (C) 2006 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 "x86_64-redhat-linux-gnu"...
Using host libthread_db library "/lib64/libthread_db.so.1".

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib64/libSDL-1.2.so.0...done.
Loaded symbols for /usr/lib64/libSDL-1.2.so.0
Reading symbols from /lib64/libpthread.so.0...done.
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /usr/lib64/libSDL_mixer-1.2.so.0...done.
Loaded symbols for /usr/lib64/libSDL_mixer-1.2.so.0
Reading symbols from /usr/lib64/nvidia/libGL.so.1...done.
Loaded symbols for /usr/lib64/nvidia/libGL.so.1
Reading symbols from /usr/lib64/libGLU.so.1...done.
Loaded symbols for /usr/lib64/libGLU.so.1
Reading symbols from /lib64/libexpat.so.1...done.
Loaded symbols for /lib64/libexpat.so.1
Reading symbols from /usr/lib64/libtcl8.4.so...done.
Loaded symbols for /usr/lib64/libtcl8.4.so
Reading symbols from /usr/lib64/libstdc++.so.6...done.
Loaded symbols for /usr/lib64/libstdc++.so.6
Reading symbols from /lib64/libm.so.6...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libgcc_s.so.1...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libc.so.6...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/libdl.so.2...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/ld-linux-x86-64.so.2...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /usr/lib64/libmikmod.so.2...done.
Loaded symbols for /usr/lib64/libmikmod.so.2
Reading symbols from /usr/lib64/nvidia/libGLcore.so.1...done.
Loaded symbols for /usr/lib64/nvidia/libGLcore.so.1
Reading symbols from /usr/lib64/nvidia/tls/libnvidia-tls.so.1...done.
Loaded symbols for /usr/lib64/nvidia/tls/libnvidia-tls.so.1
Reading symbols from /usr/lib64/libXext.so.6...done.
Loaded symbols for /usr/lib64/libXext.so.6
Reading symbols from /usr/lib64/libX11.so.6...done.
Loaded symbols for /usr/lib64/libX11.so.6
Reading symbols from /usr/lib64/libXau.so.6...done.
Loaded symbols for /usr/lib64/libXau.so.6
Reading symbols from /usr/lib64/libxcb-xlib.so.0...done.
Loaded symbols for /usr/lib64/libxcb-xlib.so.0
Reading symbols from /usr/lib64/libxcb.so.1...done.
Loaded symbols for /usr/lib64/libxcb.so.1
Reading symbols from /usr/lib64/libXdmcp.so.6...done.
Loaded symbols for /usr/lib64/libXdmcp.so.6
Reading symbols from /lib64/librt.so.1...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /usr/lib64/libesd.so.0...done.
Loaded symbols for /usr/lib64/libesd.so.0
Reading symbols from /lib64/libasound.so.2.0.0...Reading symbols from
/usr/lib/debug/lib64/libasound.so.2.0.0.debug...done.
done.
Loaded symbols for /lib64/libasound.so.2.0.0
Reading symbols from /usr/lib64/libaudiofile.so.0...done.
Loaded symbols for /usr/lib64/libaudiofile.so.0
Reading symbols from /usr/lib64/libXrender.so.1...done.
Loaded symbols for /usr/lib64/libXrender.so.1
Reading symbols from /usr/lib64/libXrandr.so.2...done.
Loaded symbols for /usr/lib64/libXrandr.so.2
Reading symbols from /usr/lib64/libXcursor.so.1...done.
Loaded symbols for /usr/lib64/libXcursor.so.1
Reading symbols from /usr/lib64/libXfixes.so.3...done.
Loaded symbols for /usr/lib64/libXfixes.so.3
Core was generated by `8Kingdoms'.
Program terminated with signal 6, Aborted.
#0  0x0000003c97430ec5 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x0000003c97430ec5 in raise () from /lib64/libc.so.6
#1  0x0000003c97432970 in abort () from /lib64/libc.so.6
#2  0x0000003c9746b0db in __libc_message () from /lib64/libc.so.6
#3  0x0000003c97472832 in _int_free () from /lib64/libc.so.6
#4  0x0000003c97475f2c in free () from /lib64/libc.so.6
#5  0x00000000004c4570 in gui::Destroy3DObject (obj=0x2f71860)
    at gui/engine/SceneGeom.cpp:637
#6  0x00000000004cf62c in gui::TModel::freeModel (this=0x2f71780)
    at gui/model/ModelRep.cpp:77
#7  0x00000000004d094e in ~TModel (this=0x375a) at gui/model/ModelRep.cpp:48
#8  0x00000000004dc7e7 in ~THex (this=0x3934960) at gui/model/hexy.cpp:157
#9  0x00000000004d282a in gui::TguiMap::done (this=0x1624730)
    at gui/model/guimap.cpp:785
#10 0x00000000004886d5 in gui::TGame::deactivateContext (this=0x1623e20)
    at gui/contexts/Game.cpp:417
#11 0x000000000046ebe5 in gui::TScreen::enterMainLoop (this=0x1464cb0)
    at gui/common/Screen.cpp:101
#12 0x000000000046179c in gui::TGUI::main (this=<value optimized out>)
    at gui/GUI.cpp:199
#13 0x0000000000407f69 in main (argc=<value optimized out>, 
    argv=<value optimized out>) at 8Kingdoms.cpp:515
#14 0x0000003c9741e074 in __libc_start_main () from /lib64/libc.so.6
#15 0x00000000004068c9 in _start ()
Missing separate debuginfos, use: debuginfo-install SDL.x86_64 SDL_mixer.x86_64
audiofile.x86_64 esound.x86_64 expat.x86_64 gcc.x86_64 glibc.x86_64
libX11.x86_64 libXau.x86_64 libXcursor.x86_64 libXdmcp.x86_64 libXext.x86_64
libXfixes.x86_64 libXrandr.x86_64 libXrender.x86_64 libxcb.x86_64 mesa.x86_64
mikmod.x86_64 tcl.x86_64
(gdb) 


Comment 4 Michael Smith-Sardior 2008-07-29 15:10:39 UTC
Ok, now I get it, this following data is from the first crash... looked at time
stamps.

[sardior@crystalpalace ~]$ gdb /usr/bin/8Kingdoms core.3267
GNU gdb Red Hat Linux (6.6-45.fc8rh)
Copyright (C) 2006 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 "x86_64-redhat-linux-gnu"...
Using host libthread_db library "/lib64/libthread_db.so.1".

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib64/libSDL-1.2.so.0...done.
Loaded symbols for /usr/lib64/libSDL-1.2.so.0
Reading symbols from /lib64/libpthread.so.0...done.
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /usr/lib64/libSDL_mixer-1.2.so.0...done.
Loaded symbols for /usr/lib64/libSDL_mixer-1.2.so.0
Reading symbols from /usr/lib64/nvidia/libGL.so.1...done.
Loaded symbols for /usr/lib64/nvidia/libGL.so.1
Reading symbols from /usr/lib64/libGLU.so.1...done.
Loaded symbols for /usr/lib64/libGLU.so.1
Reading symbols from /lib64/libexpat.so.1...done.
Loaded symbols for /lib64/libexpat.so.1
Reading symbols from /usr/lib64/libtcl8.4.so...done.
Loaded symbols for /usr/lib64/libtcl8.4.so
Reading symbols from /usr/lib64/libstdc++.so.6...done.
Loaded symbols for /usr/lib64/libstdc++.so.6
Reading symbols from /lib64/libm.so.6...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libgcc_s.so.1...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libc.so.6...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/libdl.so.2...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/ld-linux-x86-64.so.2...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /usr/lib64/libmikmod.so.2...done.
Loaded symbols for /usr/lib64/libmikmod.so.2
Reading symbols from /usr/lib64/nvidia/libGLcore.so.1...done.
Loaded symbols for /usr/lib64/nvidia/libGLcore.so.1
Reading symbols from /usr/lib64/nvidia/tls/libnvidia-tls.so.1...done.
Loaded symbols for /usr/lib64/nvidia/tls/libnvidia-tls.so.1
Reading symbols from /usr/lib64/libXext.so.6...done.
Loaded symbols for /usr/lib64/libXext.so.6
Reading symbols from /usr/lib64/libX11.so.6...done.
Loaded symbols for /usr/lib64/libX11.so.6
Reading symbols from /usr/lib64/libXau.so.6...done.
Loaded symbols for /usr/lib64/libXau.so.6
Reading symbols from /usr/lib64/libxcb-xlib.so.0...done.
Loaded symbols for /usr/lib64/libxcb-xlib.so.0
Reading symbols from /usr/lib64/libxcb.so.1...done.
Loaded symbols for /usr/lib64/libxcb.so.1
Reading symbols from /usr/lib64/libXdmcp.so.6...done.
Loaded symbols for /usr/lib64/libXdmcp.so.6
Reading symbols from /lib64/librt.so.1...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /usr/lib64/libXrender.so.1...done.
Loaded symbols for /usr/lib64/libXrender.so.1
Reading symbols from /usr/lib64/libXcursor.so.1...done.
Loaded symbols for /usr/lib64/libXcursor.so.1
Reading symbols from /usr/lib64/libXfixes.so.3...done.
Loaded symbols for /usr/lib64/libXfixes.so.3
Core was generated by `8Kingdoms'.
Program terminated with signal 11, Segmentation fault.
#0  World::TStructHolder<World::LIVING_UNIT>::data (this=0x8)
    at world/struct_holder.h:99
99             if (_data == NULL) 
(gdb) bt
#0  World::TStructHolder<World::LIVING_UNIT>::data (this=0x8)
    at world/struct_holder.h:99
#1  0x000000000048a50d in gui::TGame::updateActionsPanel (this=0x28e6c40)
    at gui/contexts/Game.cpp:1109
#2  0x000000000048fc18 in gui::TGame::unitSelected (this=0x28e6c40, 
    unit=0x7f9bc89213b0) at gui/contexts/Game.cpp:2094
#3  0x0000000000491ba3 in gui::TGame::hexClicked (this=0x28e6c40, indx=847)
    at gui/contexts/Game.cpp:1886
#4  0x00000000004d2526 in gui::TguiMap::workInput (this=0x28e7550, 
    input=0x2727d04) at gui/model/guimap.cpp:1388
#5  0x000000000046aa30 in gui::TFrame::workInput (this=0x28e6c40, 
    input=0x2727d04) at gui/common/ActiveObjects.cpp:1799
#6  0x0000000000490d57 in gui::TGame::workInput (this=0x8, input=0x2d0b260)
    at gui/contexts/Game.cpp:513
#7  0x000000000046ea58 in gui::TScreen::processInput (this=0x7343c30)
    at gui/common/Screen.cpp:210
#8  0x000000000046ed2b in gui::TScreen::enterMainLoop (this=0x2727cb0)
    at gui/common/Screen.cpp:161
#9  0x000000000046179c in gui::TGUI::main (this=<value optimized out>)
    at gui/GUI.cpp:199
#10 0x0000000000407f69 in main (argc=<value optimized out>, 
    argv=<value optimized out>) at 8Kingdoms.cpp:515
#11 0x0000003c9741e074 in __libc_start_main () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install SDL.x86_64 SDL_mixer.x86_64
expat.x86_64 gcc.x86_64 glibc.x86_64 libX11.x86_64 libXau.x86_64
libXcursor.x86_64 libXdmcp.x86_64 libXext.x86_64 libXfixes.x86_64
libXrender.x86_64 libxcb.x86_64 mesa.x86_64 mikmod.x86_64 tcl.x86_64
---Type <return> to continue, or q <return> to quit---
#12 0x00000000004068c9 in _start ()
(gdb) 



Comment 5 Hans de Goede 2008-07-29 19:45:32 UTC
Hmm,

2 completely different backtraces what fun. As said 8Kingdoms is no longer under
active development I'm afraid, so there is no upstream to ask to look into this,
and at the moment I currently do not have the time for this I'm afraid.

So I'm going to close this as wontfix and I'll be orphaning 8KingDoms as, as
said, I don't have the time to go and hunt down all the bugs is has, and it
seems to be a dead end with regards to future developments.


Comment 6 Hans de Goede 2008-07-29 19:49:05 UTC
*** Bug 452432 has been marked as a duplicate of this bug. ***

Comment 7 Kevin Kofler 2008-07-29 21:24:44 UTC
* comment #3 is probably a double-free. Could also be a memory corruption 
though. There's a backtrace which might help figuring out what's wrong, but not 
necessarily. (A valgrind log would be very useful, though I don't know how 
well, if at all, valgrind works with OpenGL stuff and it might not find 
anything if the bug isn't reproducible.)
* comment #4 is obvious: gui::TGame::updateActionsPanel (this=0x28e6c40) at 
gui/contexts/Game.cpp:1109 calls World::TStructHolder<World::LIVING_UNIT>::data 
(this=0x8) with a NULL this pointer (well, almost NULL, so it must be NULL plus 
some offset, usually this means the offending class is a (non-pointer) member 
of a class or structure and the pointer to that class or structure is NULL). Of 
the 4 reported crashes, this one is probably the easiest to fix (with the 
information we have).
* crash A in bug 452432 is a stack overflow, probably from infinite recursion, 
but we don't know where so there's no way to tell
* crash B in bug 452432 is a buffer overflow, but we don't have a backtrace 
with debugging information, so there too it's hard to figure ou where it 
crashes.

Trevin Beattie, the reporter of bug 452432, says he can reproduce the crashes 
every time. Any chance you can obtain some usable backtraces? See 
https://fedoraproject.org/wiki/StackTraces . Of course, I can't guarantee a 
maintainer will be willing to debug this (given that Hans just gave up), but it 
would at least increase the chances, for example I might try to fix this. 
However, with no backtrace or only the glibc backtrace with no debugging 
information, it is almost impossible to fix the bug, and not everybody can 
reproduce it.

Comment 8 Michael Smith-Sardior 2008-07-30 15:13:46 UTC
Yesterday I followed the instructions, got the program to exit normally, found
all the missing debug modules and loaded them. Then I started a terminal window
and loaded the program with "gdb 8Kingdoms", then typed "run". I spent a long
time playing the game trying to get the crash to happen (Skirmish). Towards the
end of the game my whole system froze. Lost mouse and keyboard control and so I
had to reboot my computer with the dreaded 5 second power button. It seems that
sometimes the game leaves dead bodies on the playfield. When you click on a hex
with the debris the game crashes. I think what happened last night is I had 2
hexes with debris left on the field. I'll try again sometime today. 

Any ideas of how to get the report even when the computer dies?

Comment 9 Hans de Goede 2008-07-30 17:34:19 UTC
You could check if a new core.xxxxx is present after the reboot, that *might* be
the case, otherwise getting a backtrace will be close to impossible.


Comment 10 Michael Smith-Sardior 2008-07-30 23:32:50 UTC
yea... That's what I thought. Let's close it. I've tried all last night and good
part of today trying to get it to crash and leave my computer in tact. There are
no core.xxxx files. Every time it crashes now it is a hard crash... everything
locked. 

Wish I knew how to program. All I can do is find bugs. lol. If no one can come
up with any better suggestions I'll just take it off my system. Too bad too. It
is a lot of fun.