[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).

rrs (Randall Stewart) phabric-noreply at FreeBSD.org
Tue Feb 17 17:36:51 UTC 2015


rrs added a comment.

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.

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


More information about the freebsd-net mailing list