Desura is a community driven digital distribution service for gamers, putting the best games, mods and downloadable content from developers at gamers fingertips, ready to buy and play. Welcome to the official Desura BLOG.

Report RSS Debugging Linux Issues

When running into issues with the linux client and you want to go that extra step to help out

Posted by on - Basic QA/Testing

Almost all linux distros come with an inbuilt debugging tool called gdb which can be used when programs are misbehaving and help the developers to work out whats causing the issue. Follow these steps to generate more information about the issues your having.


1. The first step is to run desura via the terminal. This allows collection of extra output produced by desura and the games it launches.

  • Open terminal (normally located in the System Tool menu or Accessory Menu)
  • Change into the desura install directory using the cd command for example: cd ~/desura
  • Run desura: ./desura

2. If the output of step 1 didnt help you with the issue the next stage is to attach gdb

  • Follow stage one but before you login:
  • In a new terminal tab/window execute this command: ps -a
  • Use this command to launch gdb with the pid of the second Desura process: sudo gdb attach [pid]
  • When gdb starts and shows its prompt type in continue to get desura to resume working

This should allow you to run Desura and continue your activity.


3.a. If Desura crashes:

  • After completing stage two run Desura till it crashes
  • In the gdb window it should pause on the thread that caused the crash and execute the following commands:
    backtrace 10
    info threads
  • Copy paste output to a new forum thread

3.b. If Desura hangs or becomes unresponsive:

  • After completing stage two run Desura till it exhibits the wrong behaviour
  • Switch back to the gdb window and hit ctrl c and execute the following commands:
    info threads
    thread apply all backtrace 15
  • Copy paste output to a new forum thread

4. Advanced: Creating a gdb core dump

  • If more information is required by the Desura developers you can create a core dump
  • Follow step 3.a or 3.b
  • In the gdb window type in: generate-core-file
  • Compress and email the file to dev@indiedb.com
Post comment Comments
gmh_michael
gmh_michael

very well written tutorial. will be sharing.

Reply Good karma Bad karma+3 votes
Urfoex
Urfoex

"In a new terminal tab/window execute this command: ps -a"
With "pgrep -f desura" there will only be the pids of desura.

"Use this command to launch gdb with the pid of the second Desura process: sudo gdb attach [pid]"
Why using it as root? It should work as normal user.
Biggest problem I see is that desura is a release-build without debugging symbols. So most stuff will be something like:
"0x0000000000000000 in ?? ()"

For the hole stuff a script could be written:
# (! no guaranty if that works !)

#!/bin/sh
# get newest pid of running desura
pidNewest=pgrep -fn desura
# get oldest pid of running desura
pidOldest=pgrep -fo desura

# create gdb cmd-arguments
dbgcmds="backtrace 10 info threads quit"
dbgcmdsmore="info threads thread apply all backtrace 15 quit"
dbgcmdscoredump="generate-core-file quit"

# put arguments in files
echo $dbgcmds > dbg.1
echo $dbgcmdsmore > dbg.2
echo $dbgcmdscoredump > dbg.3

# attach gdb, run arguments, save as log-file
gdb attach pidNewest -batch -x dbg.1 > newest.dbg1.log
gdb attach pidNewest -batch -x dbg.2 > newest.dbg2.log
gdb attach pidNewest -batch -x dbg.3 > newest.dbg3.log
gdb attach pidOldest -batch -x dbg.1 > oldest.dbg1.log
gdb attach pidOldest -batch -x dbg.2 > oldest.dbg2.log
gdb attach pidOldest -batch -x dbg.3 > oldest.dbg3.log

# remove argument-files
rm dbg.1
rm dbg.2
rm dbg.3

Reply Good karma Bad karma+3 votes
hero1900
hero1900

what this suppose to mean "Follow stage one but before you login:"
i tried that and i got that the program is not running i attach to the second process id and i was checking th box for automatic log in but then i disable it and rerun the whole process and i didnt log in and also same result the program is not being run, so any help?

Reply Good karma Bad karma+2 votes
hero1900
hero1900

okey i got it need to put the process id without the [ ]

Reply Good karma Bad karma+2 votes
top4ek
top4ek

sent a stacktrace with coredump a almost month ago and nothig.

Reply Good karma Bad karma+2 votes
liamdawe
liamdawe

It seems lodle is off on holidays at the moment, there was a post about it, work should resume in January :(

Reply Good karma Bad karma+2 votes
jorlin
jorlin

If desura would have a good and accesible log system, most of the times the finnicky backtrace/ gdb stuff would not be neccessary. Decent Linux programs log errors to stdout. I have had numerous crashes of the desura client when running it from a virtual terminal screen, without a single error message on stdout...
If desura would improve on that, error reporting would become more accessible for the average Joe.
Not all people running linux are tech. savvy. I support many people remotely that run a linux distro strictly as user. Some of them are gamers.

Reply Good karma Bad karma+4 votes
malkien
malkien

may I second that?
I have the x64 client consistently crash on game update.
what I do with other applications in this case is run them from a shell, or follow the tail of a log file if there is one, to see what they report.
why not doing the same with desura?

Reply Good karma Bad karma+2 votes
irekpias
irekpias

I have Fedora 16 x86_64 - try run desura, i have pop-up window - type my login, password and desura quits to the terminal back. I can't start it any way. What deps should my system have, to run desura whitout a glitch ?

Reply Good karma Bad karma+2 votes
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: