All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pete Zaitcev <zaitcev@redhat.com>
To: Project Hail List <hail-devel@vger.kernel.org>
Subject: CLD crash mystery
Date: Thu, 12 Nov 2009 12:02:27 -0700	[thread overview]
Message-ID: <20091112120227.14c7a704@redhat.com> (raw)

With the last fixes to the timer code, CLD does not crash often anymore,
but it still does, and it's still related to timers.

Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) where
#0  0x00000000 in ?? ()
#1  0x080511be in timers_run () at util.c:207
#2  0x0804edfa in main (argc=3, argv=0xbff95a14) at server.c:1040

Crash occurs when NULL callback is invoked here:

	tmp = exec_list;
	while (tmp) {
		timer = tmp->data;
		tmp = tmp->next;
		timer->fired = true;
		timer->cb(timer);	<===== crash
	}

This happens because the struct timer *timer is zero-filled, although
the GList does not seem to be corrupt in any way:

(gdb) display timer
5: timer = (struct timer *) 0x98e21c0
(gdb) display *timer
2: *timer = {fired = true, on_list = false, cb = 0, userdata = 0x0, 
  expires = 0, name = '\0' <repeats 31 times>}
(gdb) display exec_list
1: exec_list = (GList *) 0x9922750
(gdb) display * (GList *) 0x9922750
3: * (GList *) 0x9922750 = {data = 0x98e21c0, next = 0x0, prev = 0x0}
(gdb) 

The main list looks perfectly OK too:

(gdb) display timer_list
6: timer_list = (GList *) 0x99224d0
(gdb) display * (GList *) 0x99224d0
7: * (GList *) 0x99224d0 = {data = 0x98806f4, next = 0x9922780, prev = 0x0}
(gdb) display * (GList *) 0x9922780
8: * (GList *) 0x9922780 = {data = 0x990229c, next = 0x9922550, prev = 0x99224d0}
(gdb) display * (GList *) 0x9922550
9: * (GList *) 0x9922550 = {data = 0x8054bd8, next = 0x0, prev = 0x9922780}
(gdb) display * (struct timer *) 0x98806f4
10: * (struct timer *) 0x98806f4 = {fired = false, on_list = true, 
  cb = 0x8050620 <session_timeout>, userdata = 0x9880678, 
  expires = 1258047830, name = "session-timeout", '\0' <repeats 16 times>}
(gdb) display * (struct timer *) 0x990229c
11: * (struct timer *) 0x990229c = {fired = false, on_list = true, 
  cb = 0x8050620 <session_timeout>, userdata = 0x9902220, 
  expires = 1258047835, name = "session-timeout", '\0' <repeats 16 times>}
(gdb) display * (struct timer *) 0x8054bd8
12: * (struct timer *) 0x8054bd8 = {fired = false, on_list = true, 
  cb = 0x804d970 <cldb_checkpoint>, userdata = 0x0,
  expires = 1258047951, name = "db4-checkpoint", '\0' <repeats 17 times>}
(gdb) 
(gdb) display now
13: now = 1258047814

I just don't see what may trip this. A mystery!

-- Pete

                 reply	other threads:[~2009-11-12 19:02 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20091112120227.14c7a704@redhat.com \
    --to=zaitcev@redhat.com \
    --cc=hail-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.