Date: Tue, 17 Feb 2015 18:07:18 +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: <605e6b6bb917b389bcc33d39c04388a3@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#92, @rrs wrote: > Hiren: > > There also should have been a printf before the panic string > printf( "spin lock %p (%s) held by %p (tid %d) too long\n", > m, m->lock_object.lo_name, td, td->td_tid); > > Can we see what that lovely printf has displayed? Ah, my bad for not providing that earlier here: spin lock 0xffffffff81364180 (callout) held by 0xfffff8000dc0e920 (tid 100111) too long panic: spin lock held too long Now, (kgdb) print *(struct callout *)0xffffffff81364180 $8 = {c_links = {le = {le_next = 0xffffffff80d03d28, le_prev = 0xb0000}, sle = {sle_next = 0xffffffff80d03d28}, tqe = {tqe_next = 0xffffffff80d03d28, tqe_prev = 0xb0000}}, c_time = 0, c_precision = 4, c_arg = 0x0, c_func = 0, c_lock = 0x0, c_flags = 0, c_cpu = 0} if I print it's le_next, that node's le_prev is not pointing to 0xffffffff81364180 (kgdb) print *(struct callout *)0xffffffff80d03d28 $9 = {c_links = {le = {le_next = 0x74756f6c6c6163, le_prev = 0x6f207265626d754e}, sle = {sle_next = 0x74756f6c6c6163}, tqe = {tqe_next = 0x74756f6c6c6163, tqe_prev = 0x6f207265626d754e}}, c_time = 7307497714779234406, c_precision = 7809632219779637363, c_arg = 0x61206c656568776c, c_func = 0x20657a697320646e, c_lock = 0x6f656d697420666f, c_flags = 690517109, c_cpu = 1701998624} Also, trying to print le_next or le_prev is not working: (kgdb) print *(struct callout *)0x6f207265626d754e Cannot access memory at address 0x6f207265626d754e (kgdb) print *(struct callout *)0x74756f6c6c6163 Cannot access memory at address 0x74756f6c6c6163 Is something wrong here or I am failing to understand this. (The latter has a higher probability) > > In theory the lo_name should be "callout" and the %p should point to &cc_cpu[0].cc_lock > > Can we validate that these align correctly too? How do I validate it? 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?605e6b6bb917b389bcc33d39c04388a3>