v.3.13 Seg fault and GG::Font::BadFile exception

Problems and solutions for installing or running FreeOrion, including discussion of bugs if needed before posting a bug report on GitHub. For problems building from source, post in Compile.

Moderator: Oberlus

Post Reply
Message
Author
bobxxviii
Space Krill
Posts: 4
Joined: Sat Oct 17, 2009 2:53 am

v.3.13 Seg fault and GG::Font::BadFile exception

#1 Post by bobxxviii »

Hello all,

Thank you in advance for any help rendered/attempted :D .

I downloaded the statically linked tarball of v.3.13 from SourceForge (http://sourceforge.net/projects/freeori ... FreeOrion/) yesterday. I unpacked it into my home directory, and tried to run the wrapper script (~/freeorion/freeorion) from the command line. The results are as follows.

Code: Select all

Following into my basedir
CWD: /home/nathan/freeorion/application
python2.5 found. Using it.
Segmentation fault
After the python line a new window with a black background opens, and then closes again when the segmentation fault is reached.

I was curious so I also ran gdb --args ~/freeorion/application/freeorion to get a better look at the error. It ran fine up to:

Code: Select all

main() caught exception(GG::Font::BadFile): Face object created from "/home/nathan/freeorion/default/DejaVuSans.ttf" was invalid
This same error appears in the freeorion.log file (attached). I searched the forums and the standard response to this error seems to be to delete config.xml. I looked in the ~/.freeorion directory though and I don't have a file named config.xml (in fact, the only config.xml file anywhere in /home/ belongs to wormux). Nevertheless I deleted that entire directory (I had previously tried a statically linked binary from http://freeorion.psitronic.de/ but it had a similar error). This had no effect. The directory was, of course, recreated but it still only contains freeorion.log, ogre.log, and an empty save directory.

I've attached the log files from freeorion as well as my glxinfo. I use an ATI Radeon X700 video card with the proprietary drivers (fglrx gave me too much trouble) under Ubuntu 8.04 (I know, nominally unsupported but this particular error doesn't seem to be OS based, maybe I'm wrong. I'll upgrade to 9.10 when it comes out in two weeks). Note from glxinfo that I do have support for OpenGL 2.1.

Any ideas?

I look forward to trying out this game.
Attachments
glxinfo.txt
(9.78 KiB) Downloaded 71 times
ogre.log
(12.85 KiB) Downloaded 93 times
freeorion.log
(168 Bytes) Downloaded 87 times

User avatar
kroddn
Static Linker
Posts: 347
Joined: Thu Jun 28, 2007 10:28 am

Re: v.3.13 Seg fault and GG::Font::BadFile exception

#2 Post by kroddn »

Does /home/nathan/freeorion/default/DejaVuSans.ttf exist? As far as I can see you extracted FO in /home/nathan/freeorion, and this TTF file then should be in /home/nathan/freeorion/application/default/DejaVuSans.ttf - how did you install? Just extracted the archive or did you use the installer.

You should move or delete "/home/nathan/.freeorion" directory to be sure that no old configuration is misleading.


There are other issues according to ATI graphiccards, so maybe after that bug the game would crash anyway. Just give it a try.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: v.3.13 Seg fault and GG::Font::BadFile exception

#3 Post by Geoff the Medio »

You might also run "freeorion -g" to generate config.xml immediately after running the program (normally you need to start a game or open the options screen for this file to be created). You could then edit that file to change the settings-dir field to point to the actual location where the expexted files are... which should be "/home/nathan/freeorion/application/default/" as kroddn mentions, rather than "/home/nathan/freeorion/default/" to which it seems to have gotten set for some reason.

bobxxviii
Space Krill
Posts: 4
Joined: Sat Oct 17, 2009 2:53 am

Re: v.3.13 Seg fault and GG::Font::BadFile exception

#4 Post by bobxxviii »

Thanks for the quick help.
Does /home/nathan/freeorion/default/DejaVuSans.ttf exist?
I never noticed the missing /application/ in that line but I copy-pasted that right from gdb so that's definitely where the program was looking. That directory did not exist when I looked today - the file was where it was supposed to be, in /home/nathan/freeorion/application/default/. I tried two potential fixes, but both had the same result - a new error.

First I did as Geoff suggested and ran freeorion -g, and then edited the resulting config.xml so that settings-dir to point to the correct location. That sort of worked. The program still seg faults but gdb reports a different error now (more on that below).

I then deleted config.xml and tried copying the ~/freeorion/application/default/ directory to ~/freeorion/default. This had the same effect as editing the config.xml.
how did you install? Just extracted the archive or did you use the installer
Originally I just extracted the archive. After I saw your question though I went back, untarred the archive to another location (so I was working with a fresh set of files) and ran the installer script. The installer reported no errors. I deleted ~/.freeorion and then tried to run the installed program, but I got the exact same new error.

As a side note, when I run gdb on the program now it says there are no debugging symbols. I thought they were there yesterday and I was certainly getting more output from gdb, about threads starting and whatnot. Now it just crashes straightaway.

Anyway, the new error:

When I run the program (the installed or the extracted version) I get the same output as before on the command line. Running gdb on the application directly reports:

Code: Select all

/home/nathan/freeorion/application/freeorion: error while loading shared libraries: libCgGL.so: cannot open shared object file: No such file or directory
though of course the path varies based on where I run it from. I checked and libCgGL.so exists and is in ~/freeorion/application/lib/ where it should be. I thought it might be another bad path issue like before, so I copied (leaving the original in place) ~./freeorion/application/lib/ to ~/freeorion/lib/, but that didn't help. The log files produced by this error are different than before so I've attached them again.

I searched forums for this library problem but although people have had bad library problems before, I couldn't find anything on this one.

The lack of debugging symbols might be producing bad output though :? .
Attachments
ogre.log
(13.68 KiB) Downloaded 81 times
freeorion.log
(447 Bytes) Downloaded 89 times

bobxxviii
Space Krill
Posts: 4
Joined: Sat Oct 17, 2009 2:53 am

Re: v.3.13 Seg fault and GG::Font::BadFile exception

#5 Post by bobxxviii »

Progress of a sort. I realized that the reason I was getting less output than before in gdb was that today I didn't have LD_LIBRARY_PATH set. After setting it properly (/home/nathan/freeorion/application/lib/ to use the simply unpacked version) the GG::Font::BadFile came back... until I edited a freshly generated config.xml file to have a correct settings-dir path.

Now it runs straight to the seg fault in gdb (same output before as on the console). The backtrace in gdb is not particularly informative:

Code: Select all

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb73446d0 (LWP 7528)]
0x000010d1 in ?? ()
(gdb) bt
#0  0x000010d1 in ?? ()
#1  0x0845283f in ?? ()
#2  0x08ab9e3a in ?? ()
#3  0x08bd11bc in ?? ()
#4  0x08cda931 in ?? ()
#5  0x08cdb157 in ?? ()
#6  0x08cdaaee in ?? ()
#7  0x08cd456e in ?? ()
#8  0x08cf1568 in ?? ()
#9  0x08cf1698 in ?? ()
#10 0x08bd1ac5 in ?? ()
#11 0x08bd1b61 in ?? ()
#12 0x08ab866a in ?? ()
#13 0x0846b058 in ?? ()
#14 0xb7483450 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
#15 0x08099fc1 in ?? ()
The freeorion.log and ogre.log files are unchanged from before. You can see them in the previous post.

I just tried the same stunt with the installed (from the installation script) freeorion and got a complete lockup on that virtual terminal. I had to switch to another virtual terminal to kill the offending process. It happened to me once before with the unpacked freeorion also, but then I ran it again a couple of times and didn't lock up the terminal so I thought I had done something to screw it up. I can't report hearing the first chords of music like the previous poster with the lockup problem however.

Unless there is something you'd like me to try for your debugging benefit (which I'm happy to do if there is something you'd be interested in seeing the results of) I think I'm going wait for Ubuntu 9.10 to come out on the 29th, install that, and then try again. The ATI graphics drivers have supposedly improved recently and then I'll have access to the necessary packages to try to compile freeorion from source if necessary.

Thanks, and good luck.

User avatar
kroddn
Static Linker
Posts: 347
Joined: Thu Jun 28, 2007 10:28 am

Re: v.3.13 Seg fault and GG::Font::BadFile exception

#6 Post by kroddn »

The crash you now experience seems to be the ATI crash I was talking about.

All your reportings before are strange to me. Which version of freeorion did you download and install? The 0.3.13 from Sourceforge, or a nightly build from my homepage?

If you run freeorion by calling the freeorion script in the extracted directory, this sets LD_LIBRARY_PATH and also calls the binary with the right parameter for the "default" directory. So I cannot understand why the font was searched at a wrong position.

Maybe many errors come together here.

Can you "clean" your installation? That means, remove ~/.freeorion and your current installation directory, and then just extract the freeorion tar and run the freeorion script, do NOT run the binary "application/freeorion" directly.

bobxxviii
Space Krill
Posts: 4
Joined: Sat Oct 17, 2009 2:53 am

Re: v.3.13 Seg fault and GG::Font::BadFile exception

#7 Post by bobxxviii »

Which version of freeorion did you download and install? The 0.3.13 from Sourceforge, or a nightly build from my homepage?
I originally used your nightly build but when it seg faulted I went to the 0.3.13 from SourceForge and have used that one (SourceForge) for all of these tests.
Can you "clean" your installation?
I have tried this, but I got the same errors. In fact, each time before I try something new I completely remove the ~./freeorion directory and I have unpacked a fresh version of the program and tried running it but nothing different happened.

I know what you mean about the wrapper script setting LD_LIBRARY_PATH. I read through the script to see if there was anything obvious in it that I could modify before seeking help here, so I am surprised also that manually setting the path should be necessary. Following the execution of the script in my head it appears that what it sets the settings-dir and LD_LIBRARY_PATH to should be correct.

However, at this point the library path seems to not be hanging up the program - it's seg faulting somewhere and in my (limited) programming experience seg faults hide very well.
do NOT run the binary "application/freeorion" directly
For each test that I have posted here I have attempted to launch the program through the wrapper script first. However, I don't know how to start freeorion in gdb via the wrapper script, so for my gdb outputs only I have been running the binary file directly. That may be why it is necessary for me to set the settings-dir variable and LD_LIBRARY_PATH by hand though - otherwise running the wrapper script and running the application in gdb produce different outputs. Now that I have manually set those variables I believe that I am accurately producing the same error in gdb and in the wrapper script launched program.

I agree that at this point, from my research on the forum, I have now run into the ATI error. I'm hoping that when I can upgrade to 9.10 (I could upgrade to 9.04 now, but what's the point when 9.10 comes out in just two weeks) that the ATI situation will have improved (though not too hopeful; the main thing I've learned from ATI over the last few years is that I should have purchased an Nvidia).

I'd try to compile the latest sources from svn with debugging symbols turned on to give you folks more helpful reports, but as I am running a version of Ubuntu with older libraries I don't think I want to tackle that just yet. In the event that things still don't work after the reinstall, then I'll go down that road.

Thanks again for your help.

User avatar
kroddn
Static Linker
Posts: 347
Joined: Thu Jun 28, 2007 10:28 am

Re: v.3.13 Seg fault and GG::Font::BadFile exception

#8 Post by kroddn »

bobxxviii wrote:That may be why it is necessary for me to set the settings-dir variable and LD_LIBRARY_PATH by hand though - otherwise running the wrapper script and running the application in gdb produce different outputs. Now that I have manually set those variables I believe that I am accurately producing the same error in gdb and in the wrapper script launched program.
You can edit or copy the wrapper-script and add a "gdb" at the end where the binary is called. Or you can edit edit the lines

Code: Select all

else
    STRACE=
fi
and replace that with

Code: Select all

else
    STRACE=gdb
fi
That should work.

In future releases I will add support for a command line parameter --gdb.
bobxxviii wrote: I agree that at this point, from my research on the forum, I have now run into the ATI error. I'm hoping that when I can upgrade to 9.10 (I could upgrade to 9.04 now, but what's the point when 9.10 comes out in just two weeks) that the ATI situation will have improved (though not too hopeful; the main thing I've learned from ATI over the last few years is that I should have purchased an Nvidia).
I have 9.10 on my notebook, but it doesn't work there.

User avatar
kroddn
Static Linker
Posts: 347
Joined: Thu Jun 28, 2007 10:28 am

Re: v.3.13 Seg fault and GG::Font::BadFile exception

#9 Post by kroddn »

New feature:

I released the debugging symbols on:
http://freeorion.psitronic.de/download/nightly/

In the future, I will relase them with each binary release.

Extract the files freeorion.dbg, freeoriond.dbg and freeorionca.dbg into the application directory, where the binaries are. If that dbg files are found there, gdb will automatically load them.

Post Reply