locking issue between igmp and route code in current?

2015-03-27 Thread Lars
Hi,
I noticed the following checkins to route.c in current, and was wondering if 
they have barring on the deadlock documented below:

Revision 274589 http://svnweb.freebsd.org/base?view=revisionrevision=274589 
- (view 
http://svnweb.freebsd.org/base/head/sys/net/route.c?revision=274589view=markup)
 (download 
http://svnweb.freebsd.org/base/head/sys/net/route.c?revision=274589view=co) 
(annotate 
http://svnweb.freebsd.org/base/head/sys/net/route.c?annotate=274589) - 
[select for diffs] 
http://svnweb.freebsd.org/base/head/sys/net/route.c?view=logr1=274589log_pagestart=0
 
Modified Sun Nov 16 18:15:23 2014 UTC (4 months, 1 week ago) by melifaro 
File length: 46990 byte(s) 
Diff to previous 274585 
http://svnweb.freebsd.org/base/head/sys/net/route.c?r1=274585r2=274589
Revert r274585 http://svnweb.freebsd.org/base?view=revisionrevision=274585: 
rte lock is properly destroyed in uma dtor callback.

Pointed by: glebius

 Revision 274585 
http://svnweb.freebsd.org/base?view=revisionrevision=274585 - (view 
http://svnweb.freebsd.org/base/head/sys/net/route.c?revision=274585view=markup)
 (download 
http://svnweb.freebsd.org/base/head/sys/net/route.c?revision=274585view=co) 
(annotate 
http://svnweb.freebsd.org/base/head/sys/net/route.c?annotate=274585) - 
[select for diffs] 
http://svnweb.freebsd.org/base/head/sys/net/route.c?view=logr1=274585log_pagestart=0
 
Modified Sun Nov 16 14:56:31 2014 UTC (4 months, 1 week ago) by melifaro 
File length: 47013 byte(s) 
Diff to previous 274187 
http://svnweb.freebsd.org/base/head/sys/net/route.c?r1=274187r2=274585
Make witness happy: destroy rte lock before free.

MFC after:  2 weeks

lock order reversal:
 1st 0xf80003d62190 if_addr_lock (if_addr_lock) @ 
/u/lars/sandbox/builds/curre
nt_10032015/sys/netinet/igmp.c:1714
 2nd 0xf800090d7be0 radix node head (radix node head) @ 
/u/lars/sandbox/builds/current_10032015/sys/net/route.c:415
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfe0043faf3f0
witness_checkorder() at witness_checkorder+0xbe7/frame 0xfe0043faf480
__rw_rlock() at __rw_rlock+0x5a/frame 0xfe0043faf520
rtalloc1_fib() at rtalloc1_fib+0x60/frame 0xfe0043faf5d0
rtalloc_ign_fib() at rtalloc_ign_fib+0x98/frame 0xfe0043faf610
flowtable_lookup_common() at flowtable_lookup_common+0x1e6/frame 
0xfe0043faf6f0
flowtable_lookup() at flowtable_lookup+0x10f/frame 0xfe0043faf750
ip_output() at ip_output+0x87/frame 0xfe0043faf840
igmp_intr() at igmp_intr+0x2ed/frame 0xfe0043faf8c0
netisr_dispatch_src() at netisr_dispatch_src+0x61/frame 0xfe0043faf930
igmp_v1v2_queue_report() at igmp_v1v2_queue_report+0x14b/frame 
0xfe0043faf980
igmp_fasttimo() at igmp_fasttimo+0x381/frame 0xfe0043fafa30
pffasttimo() at pffasttimo+0x54/frame 0xfe0043fafa60
softclock_call_cc() at softclock_call_cc+0x165/frame 0xfe0043fafb20
softclock() at softclock+0x3d/frame 0xfe0043fafb40
intr_event_execute_handlers() at intr_event_execute_handlers+0xb1/frame 
0xfe0043fafb70
ithread_loop() at ithread_loop+0x9c/frame 0xfe0043fafbb0
fork_exit() at fork_exit+0x71/frame 0xfe0043fafbf0
fork_trampoline() at fork_trampoline+0xe/frame 0xfe0043fafbf0


This was on a current build as of March 10 - svn 279869

Lars
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


locking issue between igmp and route code in current?

2015-03-27 Thread Lars
Hi,
I noticed the following checkins to route.c in current, and was wondering if 
they have barring on the deadlock documented below:

Revision 274589 http://svnweb.freebsd.org/base?view=revisionrevision=274589 
- (view 
http://svnweb.freebsd.org/base/head/sys/net/route.c?revision=274589view=markup)
 (download 
http://svnweb.freebsd.org/base/head/sys/net/route.c?revision=274589view=co) 
(annotate 
http://svnweb.freebsd.org/base/head/sys/net/route.c?annotate=274589) - 
[select for diffs] 
http://svnweb.freebsd.org/base/head/sys/net/route.c?view=logr1=274589log_pagestart=0
 
Modified Sun Nov 16 18:15:23 2014 UTC (4 months, 1 week ago) by melifaro 
File length: 46990 byte(s) 
Diff to previous 274585 
http://svnweb.freebsd.org/base/head/sys/net/route.c?r1=274585r2=274589
Revert r274585 http://svnweb.freebsd.org/base?view=revisionrevision=274585: 
rte lock is properly destroyed in uma dtor callback.

Pointed by: glebius

 Revision 274585 
http://svnweb.freebsd.org/base?view=revisionrevision=274585 - (view 
http://svnweb.freebsd.org/base/head/sys/net/route.c?revision=274585view=markup)
 (download 
http://svnweb.freebsd.org/base/head/sys/net/route.c?revision=274585view=co) 
(annotate 
http://svnweb.freebsd.org/base/head/sys/net/route.c?annotate=274585) - 
[select for diffs] 
http://svnweb.freebsd.org/base/head/sys/net/route.c?view=logr1=274585log_pagestart=0
 
Modified Sun Nov 16 14:56:31 2014 UTC (4 months, 1 week ago) by melifaro 
File length: 47013 byte(s) 
Diff to previous 274187 
http://svnweb.freebsd.org/base/head/sys/net/route.c?r1=274187r2=274585
Make witness happy: destroy rte lock before free.

MFC after:  2 weeks

lock order reversal:
 1st 0xf80003d62190 if_addr_lock (if_addr_lock) @ 
/u/lars/sandbox/builds/curre
nt_10032015/sys/netinet/igmp.c:1714
 2nd 0xf800090d7be0 radix node head (radix node head) @ 
/u/lars/sandbox/builds/current_10032015/sys/net/route.c:415
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfe0043faf3f0
witness_checkorder() at witness_checkorder+0xbe7/frame 0xfe0043faf480
__rw_rlock() at __rw_rlock+0x5a/frame 0xfe0043faf520
rtalloc1_fib() at rtalloc1_fib+0x60/frame 0xfe0043faf5d0
rtalloc_ign_fib() at rtalloc_ign_fib+0x98/frame 0xfe0043faf610
flowtable_lookup_common() at flowtable_lookup_common+0x1e6/frame 
0xfe0043faf6f0
flowtable_lookup() at flowtable_lookup+0x10f/frame 0xfe0043faf750
ip_output() at ip_output+0x87/frame 0xfe0043faf840
igmp_intr() at igmp_intr+0x2ed/frame 0xfe0043faf8c0
netisr_dispatch_src() at netisr_dispatch_src+0x61/frame 0xfe0043faf930
igmp_v1v2_queue_report() at igmp_v1v2_queue_report+0x14b/frame 
0xfe0043faf980
igmp_fasttimo() at igmp_fasttimo+0x381/frame 0xfe0043fafa30
pffasttimo() at pffasttimo+0x54/frame 0xfe0043fafa60
softclock_call_cc() at softclock_call_cc+0x165/frame 0xfe0043fafb20
softclock() at softclock+0x3d/frame 0xfe0043fafb40
intr_event_execute_handlers() at intr_event_execute_handlers+0xb1/frame 
0xfe0043fafb70
ithread_loop() at ithread_loop+0x9c/frame 0xfe0043fafbb0
fork_exit() at fork_exit+0x71/frame 0xfe0043fafbf0
fork_trampoline() at fork_trampoline+0xe/frame 0xfe0043fafbf0


This was on a current build as of March 10 - svn 279869

Lars
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


locking issue between igmp and route code in current?

2015-03-27 Thread Lars
Hi,
I realized that I hadn’t copied the other half of the locking issue mentioned 
earlier..

Lars

Mon Mar 23 12:42:15 CDT 2015
lock order reversal:
 1st 0xf80003d62190 if_addr_lock (if_addr_lock) @ 
/u/lars/sandbox/builds/current_10032015/sys/netinet/igmp.c:1714
 2nd 0x80e387b0 ifnet_rw (ifnet_rw) @ 
/u/lars/sandbox/builds/current_10032015/sys/net/if.c:243
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfe0043faf6f0
witness_checkorder() at witness_checkorder+0xbe7/frame 0xfe0043faf780
__rw_rlock() at __rw_rlock+0x5a/frame 0xfe0043faf820
ifnet_byindex() at ifnet_byindex+0x22/frame 0xfe0043faf840
igmp_intr() at igmp_intr+0x1d/frame 0xfe0043faf8c0
netisr_dispatch_src() at netisr_dispatch_src+0x61/frame 0xfe0043faf930
igmp_v1v2_queue_report() at igmp_v1v2_queue_report+0x14b/frame 
0xfe0043faf980
igmp_fasttimo() at igmp_fasttimo+0x381/frame 0xfe0043fafa30
pffasttimo() at pffasttimo+0x54/frame 0xfe0043fafa60
softclock_call_cc() at softclock_call_cc+0x165/frame 0xfe0043fafb20
softclock() at softclock+0x3d/frame 0xfe0043fafb40
intr_event_execute_handlers() at intr_event_execute_handlers+0xb1/frame 
0xfe0043fafb70
ithread_loop() at ithread_loop+0x9c/frame 0xfe0043fafbb0
fork_exit() at fork_exit+0x71/frame 0xfe0043fafbf0
fork_trampoline() at fork_trampoline+0xe/frame 0xfe0043fafbf0
--- trap 0, rip = 0, rsp = 0xfe0043fafcb0, rbp = 0 ---
lock order reversal:
 1st 0xf80003d62190 if_addr_lock (if_addr_lock) @ 
/u/lars/sandbox/builds/current_10032015/sys/netinet/igmp.c:1714
 2nd 0xf800090d7be0 radix node head (radix node head) @ 
/u/lars/sandbox/builds/current_10032015/sys/net/route.c:415
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfe0043faf3f0
witness_checkorder() at witness_checkorder+0xbe7/frame 0xfe0043faf480
__rw_rlock() at __rw_rlock+0x5a/frame 0xfe0043faf520
rtalloc1_fib() at rtalloc1_fib+0x60/frame 0xfe0043faf5d0
rtalloc_ign_fib() at rtalloc_ign_fib+0x98/frame 0xfe0043faf610
flowtable_lookup_common() at flowtable_lookup_common+0x1e6/frame 
0xfe0043faf6f0
flowtable_lookup() at flowtable_lookup+0x10f/frame 0xfe0043faf750
ip_output() at ip_output+0x87/frame 0xfe0043faf840
igmp_intr() at igmp_intr+0x2ed/frame 0xfe0043faf8c0
netisr_dispatch_src() at netisr_dispatch_src+0x61/frame 0xfe0043faf930
igmp_v1v2_queue_report() at igmp_v1v2_queue_report+0x14b/frame 
0xfe0043faf980
igmp_fasttimo() at igmp_fasttimo+0x381/frame 0xfe0043fafa30
pffasttimo() at pffasttimo+0x54/frame 0xfe0043fafa60
softclock_call_cc() at softclock_call_cc+0x165/frame 0xfe0043fafb20
softclock() at softclock+0x3d/frame 0xfe0043fafb40
intr_event_execute_handlers() at intr_event_execute_handlers+0xb1/frame 
0xfe0043fafb70
ithread_loop() at ithread_loop+0x9c/frame 0xfe0043fafbb0
fork_exit() at fork_exit+0x71/frame 0xfe0043fafbf0
fork_trampoline() at fork_trampoline+0xe/frame 0xfe0043fafbf0
--- trap 0, rip = 0, rsp = 0xfe0043fafcb0, rbp = 0 ---
panic: deadlkres: possible deadlock detected for 0xf8018245d000, blocked 
for 1802208 ticks

cpuid = 16
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfe00cac40a80
vpanic() at vpanic+0x187/frame 0xfe00cac40b00
panic() at panic+0x43/frame 0xfe00cac40b60
deadlkres() at deadlkres+0x2fc/frame 0xfe00cac40bb0
fork_exit() at fork_exit+0x71/frame 0xfe00cac40bf0
fork_trampoline() at fork_trampoline+0xe/frame 0xfe00cac40bf0
--- trap 0, rip = 0, rsp = 0xfe00cac40cb0, rbp = 0 ---
KDB: enter: panic

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org