[Home] [Downloads] [Search] [Help/forum]

Gammon Forum

See www.mushclient.com/spam for dealing with forum spam. Please read the MUSHclient FAQ!

[Folder]  Entire forum
-> [Folder]  Programming
. -> [Folder]  General
. . -> [Subject]  Gdb didn't catch segfault?
Home  |  Users  |  Search  |  FAQ
Username:
Register forum user name
Password:
Forgotten password?

Gdb didn't catch segfault?

It is now over 60 days since the last post. This thread is closed.     [Refresh] Refresh page


Pages: 1 2  3  

Posted by Zeno   USA  (2,871 posts)  [Biography] bio
Date Sun 26 Mar 2006 05:19 AM (UTC)
Message
So my Project CR seems to crash like once every 3 days. So I attached gdb to it and let it run. 3 days later, it crashes.
(gdb) c
Continuing.
Segmentation fault

(Between continue and segfault was 3 days)

Er. Why didn't it go into a backtrace? It also didn't dump a core.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
[Go to top] top

Posted by Nick Gammon   Australia  (21,322 posts)  [Biography] bio   Forum Administrator
Date Reply #1 on Sun 26 Mar 2006 05:27 AM (UTC)
Message
Did you compile with debugging enabled? See my post about gdb for details. Also ensure you remove the stuff inside SMAUG that catches segmentation faults (see the same post).

Before waiting 3 days, simulate a crash (make a command dereference nil or something) and check that you are catching it.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Zeno   USA  (2,871 posts)  [Biography] bio
Date Reply #2 on Sun 26 Mar 2006 05:33 AM (UTC)
Message
Simulating a crash produces a core, I've tested that. This isn't Smaug by the way. Yes, my Makefile has -g3 in it.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #3 on Sun 26 Mar 2006 09:01 AM (UTC)
Message
Could the segfault be in a thread or attached process, perhaps? It's possible that if it's not your process that's dying, gdb won't catch it properly. That being said, if it crashes enough to kill the program, it should crash enough to make gdb catch it...

Are you using threads/attached processes in the first place? You're using MySQL, right? Maybe it's an issue with that...

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Zeno   USA  (2,871 posts)  [Biography] bio
Date Reply #4 on Sun 26 Mar 2006 04:05 PM (UTC)
Message
This is the only process for it, but I do think it uses threads... Not that I have any idea what they are. Not using MySQL.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
[Go to top] top

Posted by Samson   USA  (683 posts)  [Biography] bio
Date Reply #5 on Mon 27 Mar 2006 12:35 PM (UTC)
Message
If you are running from inside gdb, then it won't generate a backtrace upon a segfault, you need to tell it to do that afterward. You would still be within a live run of the game at that point.

Of course if the crash was bad enough to kill the debugger too, that's going to be difficult to track down unless you know how to make it happen.

SmaugMuds.org: http://www.smaugmuds.org - The Smaug MUDs Community Center

"The past was erased, the erasure was forgotten, the lie became truth." -- George Orwell, 1984
[Go to top] top

Posted by Zeno   USA  (2,871 posts)  [Biography] bio
Date Reply #6 on Mon 27 Mar 2006 02:17 PM (UTC)
Message
I should have been more specific. The debugger was no longer running, and I was back into bash.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
[Go to top] top

Posted by Nick Cash   USA  (626 posts)  [Biography] bio
Date Reply #7 on Mon 27 Mar 2006 03:26 PM (UTC)
Message
Try adding some simple log statements (or print statements and redirect the output) to the latest code additions. Print out the values of things. Chances are you have a corrupt pointer somewhere.

~Nick Cash
http://www.nick-cash.com
[Go to top] top

Posted by Zeno   USA  (2,871 posts)  [Biography] bio
Date Reply #8 on Mon 27 Mar 2006 05:22 PM (UTC)
Message
I haven't added code to it in... months. Another note is that nothing happens on the MUD for those 3 days.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #9 on Mon 27 Mar 2006 07:56 PM (UTC)
Message
If this started happening since the Arthmoor upgrades, I'd make sure that you recompiled [i]every single object file[/i] that you have to make sure that everything is linking against the proper libraries etc. It's possible that if you have old libraries, something ever so slightly incompatible exists in some obscure location.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Zeno   USA  (2,871 posts)  [Biography] bio
Date Reply #10 on Mon 27 Mar 2006 07:57 PM (UTC)
Message
Nah, Project CR isn't on Arthmoor. It's on my own machine.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #11 on Mon 27 Mar 2006 08:06 PM (UTC)
Message
Well, the same thing applies if you upgraded kernel, C runtime libraries, g++, anything... You never know. (Even if you're running under e.g. Cygwin)

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Zeno   USA  (2,871 posts)  [Biography] bio
Date Reply #12 on Tue 28 Mar 2006 01:20 AM (UTC)
Message
I haven't upgraded anything. Could you explain (or link to) details about threads? I'm pretty sure there was a mention of threads when I originally ran the exec with gdb which I've never seen.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #13 on Tue 28 Mar 2006 01:45 AM (UTC)
Message
My understanding is that gdb doesn't behave very well with threads. I had several class projects that we had to debug the old-school, old-fashioned way by hand because gdb couldn't work with the threads. Apparently, if one thread crashes it doesn't always bring you to the thread that crashed, but it'll interrupt the "main thread", or something odd like that.

It's possible that it's just the version of gdb we were using, but I've heard from several people in several places that gdb doesn't behave too well. Unfortunately I don't have any articles or manuals lying around that would explain it.

It's just very strange that it doesn't seem to do anything at all. You say that when you run it without gdb, it doesn't crash?

Maybe what you could do is add log entries to all kinds of places all over the code, like when the update function is run etc. That might at least help track down what part of the code is dying -- that is getting closer to the old-fashioned way of debugging things. :-)

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Zeno   USA  (2,871 posts)  [Biography] bio
Date Reply #14 on Tue 28 Mar 2006 01:49 AM (UTC)

Amended on Tue 28 Mar 2006 02:01 AM (UTC) by Zeno

Message
Nah, it'll crash after ~3 days with or without gdb attached.

This is what I meant by seeing threads:

(gdb) run
Starting program: /home/zeno/chub/src/chub
[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 26181)]


Now if I do Ctrl+C:

Program received signal SIGINT, Interrupt.
[Switching to Thread 16384 (LWP 26181)]
0x401723c2 in select () from /lib/libc.so.6


(gdb) bt
#0  0x401723c2 in select () from /lib/libc.so.6
#1  0x00000006 in ?? ()
#2  0x00000000 in ?? ()
#3  0xbffff710 in ?? ()
#4  0x0804953c in game_loop (control=0) at socket.c:227
#5  0x08049294 in main (argc=1, argv=0xbffff794) at socket.c:79


Continue:

(gdb) c
Continuing.
[New Thread 32769 (LWP 26183)]
[New Thread 16386 (LWP 26184)]
[Thread 16386 (LWP 26184) exited]

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
[Go to top] top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


19,771 views.

This is page 1, subject is 3 pages long: 1 2  3  [Next page]

It is now over 60 days since the last post. This thread is closed.     [Refresh] Refresh page

Go to topic:           Search the forum


[Go to top] top

Quick links: MUSHclient. MUSHclient help. Forum shortcuts. Posting templates. Lua modules. Lua documentation.

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.

[Home]


Written by Nick Gammon - 5K   profile for Nick Gammon on Stack Exchange, a network of free, community-driven Q&A sites   Marriage equality

Comments to: Gammon Software support
[RH click to get RSS URL] Forum RSS feed ( https://gammon.com.au/rss/forum.xml )

[Best viewed with any browser - 2K]    [Hosted at FutureQuest]