Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Feb 2015 17:58:59 +0000
From:      "hiren (hiren panchasara)" <phabric-noreply@FreeBSD.org>
To:        freebsd-net@freebsd.org
Subject:   [Differential] [Commented On] D1711: Changes to the callout code to restore active semantics and also add a test-framework and test to validate thecallout code (and potentially for use by other tests).
Message-ID:  <3cda038b82b597dca5eb5409987900c6@localhost.localdomain>
In-Reply-To: <differential-rev-PHID-DREV-vhk6ww63dvpj6egspuyt-req@FreeBSD.org>
References:  <differential-rev-PHID-DREV-vhk6ww63dvpj6egspuyt-req@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
hiren added a comment.

>>! In D1711#91, @rrs wrote:
> Hiren:
> 
> Thats helpful.. as I said this is strange. The callout you posted shows its associated with CPU 0, (c_cpu == 0), and yet
> the mtx on that (which is what we are spinning on) is free (its owned == 4). So why would we have crashed
> holding the spin lock too long? Unless just as we decided to panic the owner released it. Hmm there is
> code in there to check that though.. td = mtx_owner() if (td == NULL) return...
> 
> The c_flags = 22 which is PENDING/ACTIVE and Return unlocked. That means it is *supposed* to be on the
> callout wheel someplace. The linked list used is then the LLIST.. i.e. {le_next = 0x0, le_prev = 0xfffffe0000804db8}
> 
> Now if le_next is 0, its the end of the list.
> 
> Can you look back a the previous.. i.e. walk it back
> 
> print *(struct callout *)0xfffffe0000804db8
> 
> That should print a valid callout as well.. and we should be able to walk back to
> the top of the wheel..  by keeping on moving back.

Hrm, are there only 2 entries here?


  (kgdb) print *(struct callout *)0xfffffe0000804db8
  $4 = {c_links = {le = {le_next = 0xfffff8000d81dc98, le_prev = 0x0}, sle = {sle_next = 0xfffff8000d81dc98}, tqe = {tqe_next = 0xfffff8000d81dc98, 
        tqe_prev = 0x0}}, c_time = 0, c_precision = 0, c_arg = 0x0, c_func = 0, c_lock = 0x0, c_flags = 0, c_cpu = 0}


le_next is back to 0xfffff8000d81dc98.

Anything else I should look at?

REVISION DETAIL
  https://reviews.freebsd.org/D1711

To: rrs, gnn, rwatson, lstewart, jhb, kostikbel, sbruno, imp, adrian, hselasky
Cc: julian, hiren, jhb, kostikbel, emaste, delphij, neel, erj, freebsd-net



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3cda038b82b597dca5eb5409987900c6>