Hi, I'm running my RELENG_7 kernel with WITNESS and there's always a LOR when pf(4) is enabled: lock order reversal: 1st 0xc09ca828 ifnet (ifnet) @ /usr/src/sys/net/if.c:849 2nd 0xc45d604c pf task mtx (pf task mtx) @ /usr/src/sys/modules/pf/../../contrib/pf/net/pf_if.c:916 KDB: stack backtrace: db_trace_self_wrapper(c08df797,fb671764,c0630e8e,c08e1c96,c45d604c,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08e1c96,c45d604c,c45d3b1c,c45d3b1c,c45d379e,...) at kdb_backtrace+0x29 witness_checkorder(c45d604c,9,c45d379e,394,c08e9058,...) at witness_checkorder+0x6de _mtx_lock_flags(c45d604c,0,c45d379e,394,fb6717dc,...) at _mtx_lock_flags+0xbc pfi_attach_group_event(0,c4450000,c08e9058,374,c44a920c,...) at pfi_attach_group_event+0x4e if_addgroup(c441c000,c08f70d6,4,0,0,...) at if_addgroup+0x2c7 if_clone_createif(0,0,c08e9563,87,0,...) at if_clone_createif+0x81 if_clone_create(fb671943,4,0,44,180,...) at if_clone_create+0x8c tunclone(0,c461e400,fb671943,4,fb67195c,...) at tunclone+0x17a devfs_lookup(fb6719d0,fb6719d0,fb671b7c,c418de04,2,...) at devfs_lookup+0x50e VOP_LOOKUP_APV(c0928f40,fb6719d0,c412f230,c08e77ef,2a9,...) at VOP_LOOKUP_APV+0xa5 lookup(fb671b7c,c08e77ef,c6,bf,c461e92c,...) at lookup+0x58e namei(fb671b7c,c412f230,fb671a74,246,c0983774,...) at namei+0x34b vn_open_cred(fb671b7c,fb671c78,ce8,c461e400,c4460558,...) at vn_open_cred+0x2c9 vn_open(fb671b7c,fb671c78,ce8,c4460558,c05e807d,...) at vn_open+0x33 kern_open(c412f230,80a0f18,0,3,808ecfa,...) at kern_open+0xe7 open(c412f230,fb671cfc,c,c08e28c3,c092c0b8,...) at open+0x30 syscall(fb671d38) at syscall+0x2b3 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (5, FreeBSD ELF32, open), eip = 0x2835a65b, esp = 0xbfbfeafc, ebp = 0xbfbfeb38 --- And there are these LORs when I shut down my external firewire attached disk: fwohci0: BUS reset fwohci0: node_id=0xc800ffc1, gen=2, CYCLEMASTER mode firewire0: 2 nodes, maxhop <= 1, cable IRM = 1 (me) firewire0: bus manager 1 (me) uma_zalloc_arg: zone "16" with the following non-sleepable locks held: exclusive sleep mutex sbp r = 0 (0xc402f7ac) locked @ /usr/src/sys/dev/firewire/sbp.c:2203 KDB: stack backtrace: db_trace_self_wrapper(c08df797,f93a931c,c0630007,c08dfb5a,f93a9330,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08dfb5a,f93a9330,4,1,0,...) at kdb_backtrace+0x29 witness_warn(5,0,c0901ae5,c08c59ce,86,...) at witness_warn+0x1d7 uma_zalloc_arg(c1472960,0,2,2,f93a93e0,...) at uma_zalloc_arg+0x34 malloc(b,c09308c0,2,c05be59a,c08d7a2c,...) at malloc+0xd2 notify(c4150a00,4,c08d7856,34f,c05be4ea,...) at notify+0x49 destroy_devl(f93a9410,c046a6ce,c4150a00,0,c3f18370,...) at destroy_devl+0x236 destroy_dev(c4150a00,0,c3f18370,c3f69000,f93a9690,...) at destroy_dev+0x10 passcleanup(c3f69000,c08b50c7,0,0,0,...) at passcleanup+0x2e camperiphfree(c3f69000,0,f93a96b0,c04568dd,c3f69000,...) at camperiphfree+0xbb cam_periph_invalidate(c3f69000,c0983774,f93a96e4,c046a5ea,c3f69000,...) at cam_periph_invalidate+0x3e cam_periph_async(c3f69000,100,c418a260,0,f93a96e0,...) at cam_periph_async+0x2d passasync(c3f69000,100,c418a260,0,c42f8c00,...) at passasync+0xca xpt_async_bcast(0,4,c08b53c5,11a5,c404d280,...) at xpt_async_bcast+0x32 xpt_async(100,c418a260,0,89b,0,...) at xpt_async+0x194 sbp_cam_detach_sdev(c402f45c,0,c402f418,0,f93a982c,...) at sbp_cam_detach_sdev+0xa4 sbp_cam_detach_target(c14729a8,c14729a8,c08250c6,c7373b40,10,...) at sbp_cam_detach_target+0x5b sbp_post_explore(c402f400,f93a9ce8,f93a9ce4,675,0,...) at sbp_post_explore+0xa2 fw_bus_probe_thread(c404f000,f93a9d38,c08d8d0f,31c,c402b570,...) at fw_bus_probe_thread+0x69b fork_exit(c0513500,c404f000,f93a9d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf93a9d70, ebp = 0 --- (da0:sbp0:0:0:0): lost device (da0:sbp0:0:0:0): removing device entry cam_periph_alloc: attempt to re-allocate valid device pass1 rejected passasync: Unable to attach new device due to status 0x6: CCB request was invalid cam_periph_alloc: attempt to re-allocate valid device da1 rejected daasync: Unable to attach to new device due to status 0x6 fwohci0: BUS reset fwohci0: node_id=0xc800ffc0, gen=3, CYCLEMASTER mode firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) firewire0: bus manager 0 (me) uma_zalloc_arg: zone "16" with the following non-sleepable locks held: exclusive sleep mutex sbp r = 0 (0xc402f7ac) locked @ /usr/src/sys/dev/firewire/sbp.c:2203 KDB: stack backtrace: db_trace_self_wrapper(c08df797,f93a931c,c0630007,c08dfb5a,f93a9330,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08dfb5a,f93a9330,4,1,0,...) at kdb_backtrace+0x29 witness_warn(5,0,c0901ae5,c08c59ce,86,...) at witness_warn+0x1d7 uma_zalloc_arg(c1472960,0,2,2,f93a93e0,...) at uma_zalloc_arg+0x34 malloc(b,c09308c0,2,c05be59a,c08d7a2c,...) at malloc+0xd2 notify(c4150d00,4,c08d7856,34f,c05be4ea,...) at notify+0x49 destroy_devl(f93a9410,c046a6ce,c4150d00,0,c3f18370,...) at destroy_devl+0x236 destroy_dev(c4150d00,0,c3f18370,c42c6700,f93a9690,...) at destroy_dev+0x10 passcleanup(c42c6700,c08b50c7,c09eff00,4,c08db41b,...) at passcleanup+0x2e camperiphfree(c42c6700,0,f93a96b0,c04568dd,c42c6700,...) at camperiphfree+0xbb cam_periph_invalidate(c42c6700,c0983774,f93a96e4,c046a5ea,c42c6700,...) at cam_periph_invalidate+0x3e cam_periph_async(c42c6700,100,c418a250,0,f93a96e0,...) at cam_periph_async+0x2d passasync(c42c6700,100,c418a250,0,c42f8a00,...) at passasync+0xca xpt_async_bcast(0,4,c08b53c5,11a5,c404d280,...) at xpt_async_bcast+0x32 xpt_async(100,c418a250,0,89b,0,...) at xpt_async+0x194 sbp_cam_detach_sdev(c402f4c8,0,c402f484,1,f93a982c,...) at sbp_cam_detach_sdev+0xa4 sbp_cam_detach_target(c14729a8,c14729a8,c08250c6,c44263f0,10,...) at sbp_cam_detach_target+0x5b sbp_post_explore(c402f400,f93a9ce8,f93a9ce4,675,0,...) at sbp_post_explore+0xa2 fw_bus_probe_thread(c404f000,f93a9d38,c08d8d0f,31c,c402b570,...) at fw_bus_probe_thread+0x69b fork_exit(c0513500,c404f000,f93a9d38) at fork_exit+0xb8 fork_trampoline() at fork_trampoline+0x8 --- trap 0, eip = 0, esp = 0xf93a9d70, ebp = 0 --- (da1:sbp0:0:1:0): lost device (da1:sbp0:0:1:0): removing device entry I reckon these problems should appear in -STABLE ... Cheers, Ulrich Spoerlein -- It is better to remain silent and be thought a fool, than to speak, and remove all doubt.
On Thu, Nov 20, 2008 at 4:11 PM, Ulrich Spoerlein <uspoerlein@gmail.com>wrote:> Hi, > > I'm running my RELENG_7 kernel with WITNESS and there's always a LOR > when pf(4) is enabled: > > lock order reversal: > 1st 0xc09ca828 ifnet (ifnet) @ /usr/src/sys/net/if.c:849 > 2nd 0xc45d604c pf task mtx (pf task mtx) @ > /usr/src/sys/modules/pf/../../contrib/pf/net/pf_if.c:916 > KDB: stack backtrace: > db_trace_self_wrapper(c08df797,fb671764,c0630e8e,c08e1c96,c45d604c,...) at > db_trace_self_wrapper+0x26 > kdb_backtrace(c08e1c96,c45d604c,c45d3b1c,c45d3b1c,c45d379e,...) at > kdb_backtrace+0x29 > witness_checkorder(c45d604c,9,c45d379e,394,c08e9058,...) at > witness_checkorder+0x6de > _mtx_lock_flags(c45d604c,0,c45d379e,394,fb6717dc,...) at > _mtx_lock_flags+0xbc > pfi_attach_group_event(0,c4450000,c08e9058,374,c44a920c,...) at > pfi_attach_group_event+0x4e > if_addgroup(c441c000,c08f70d6,4,0,0,...) at if_addgroup+0x2c7 > if_clone_createif(0,0,c08e9563,87,0,...) at if_clone_createif+0x81 > if_clone_create(fb671943,4,0,44,180,...) at if_clone_create+0x8c > tunclone(0,c461e400,fb671943,4,fb67195c,...) at tunclone+0x17a > devfs_lookup(fb6719d0,fb6719d0,fb671b7c,c418de04,2,...) at > devfs_lookup+0x50e > VOP_LOOKUP_APV(c0928f40,fb6719d0,c412f230,c08e77ef,2a9,...) at > VOP_LOOKUP_APV+0xa5 > lookup(fb671b7c,c08e77ef,c6,bf,c461e92c,...) at lookup+0x58e > namei(fb671b7c,c412f230,fb671a74,246,c0983774,...) at namei+0x34b > vn_open_cred(fb671b7c,fb671c78,ce8,c461e400,c4460558,...) at > vn_open_cred+0x2c9 > vn_open(fb671b7c,fb671c78,ce8,c4460558,c05e807d,...) at vn_open+0x33 > kern_open(c412f230,80a0f18,0,3,808ecfa,...) at kern_open+0xe7 > open(c412f230,fb671cfc,c,c08e28c3,c092c0b8,...) at open+0x30 > syscall(fb671d38) at syscall+0x2b3 > Xint0x80_syscall() at Xint0x80_syscall+0x20 > --- syscall (5, FreeBSD ELF32, open), eip = 0x2835a65b, esp = 0xbfbfeafc, > ebp = 0xbfbfeb38 --- > > >Are you using user or group rules in your pf.conf? IIRC there is still a known LOR in the socket layer with rules using the user or group filters. -Proto
> > And there are these LORs when I shut down my external firewire attached > disk: > > fwohci0: BUS reset > fwohci0: node_id=0xc800ffc1, gen=2, CYCLEMASTER mode > firewire0: 2 nodes, maxhop <= 1, cable IRM = 1 (me) > firewire0: bus manager 1 (me) > uma_zalloc_arg: zone "16" with the following non-sleepable locks held: > exclusive sleep mutex sbp r = 0 (0xc402f7ac) locked @ /usr/src/sys/dev/firewire/sbp.c:2203 > KDB: stack backtrace: > db_trace_self_wrapper(c08df797,f93a931c,c0630007,c08dfb5a,f93a9330,...) at db_trace_self_wrapper+0x26 > kdb_backtrace(c08dfb5a,f93a9330,4,1,0,...) at kdb_backtrace+0x29 > witness_warn(5,0,c0901ae5,c08c59ce,86,...) at witness_warn+0x1d7 > uma_zalloc_arg(c1472960,0,2,2,f93a93e0,...) at uma_zalloc_arg+0x34 > malloc(b,c09308c0,2,c05be59a,c08d7a2c,...) at malloc+0xd2 > notify(c4150a00,4,c08d7856,34f,c05be4ea,...) at notify+0x49 > destroy_devl(f93a9410,c046a6ce,c4150a00,0,c3f18370,...) at destroy_devl+0x236 > destroy_dev(c4150a00,0,c3f18370,c3f69000,f93a9690,...) at destroy_dev+0x10 > passcleanup(c3f69000,c08b50c7,0,0,0,...) at passcleanup+0x2e > camperiphfree(c3f69000,0,f93a96b0,c04568dd,c3f69000,...) at camperiphfree+0xbb > cam_periph_invalidate(c3f69000,c0983774,f93a96e4,c046a5ea,c3f69000,...) at cam_periph_invalidate+0x3e > cam_periph_async(c3f69000,100,c418a260,0,f93a96e0,...) at cam_periph_async+0x2d > passasync(c3f69000,100,c418a260,0,c42f8c00,...) at passasync+0xca > xpt_async_bcast(0,4,c08b53c5,11a5,c404d280,...) at xpt_async_bcast+0x32 > xpt_async(100,c418a260,0,89b,0,...) at xpt_async+0x194 > sbp_cam_detach_sdev(c402f45c,0,c402f418,0,f93a982c,...) at sbp_cam_detach_sdev+0xa4 > sbp_cam_detach_target(c14729a8,c14729a8,c08250c6,c7373b40,10,...) at sbp_cam_detach_target+0x5b > sbp_post_explore(c402f400,f93a9ce8,f93a9ce4,675,0,...) at sbp_post_explore+0xa2 > fw_bus_probe_thread(c404f000,f93a9d38,c08d8d0f,31c,c402b570,...) at fw_bus_probe_thread+0x69b > fork_exit(c0513500,c404f000,f93a9d38) at fork_exit+0xb8 > fork_trampoline() at fork_trampoline+0x8 > --- trap 0, eip = 0, esp = 0xf93a9d70, ebp = 0 --- > (da0:sbp0:0:0:0): lost device > (da0:sbp0:0:0:0): removing device entry > cam_periph_alloc: attempt to re-allocate valid device pass1 rejected > passasync: Unable to attach new device due to status 0x6: CCB request was invalid > cam_periph_alloc: attempt to re-allocate valid device da1 rejected > daasync: Unable to attach to new device due to status 0x6 > fwohci0: BUS reset > fwohci0: node_id=0xc800ffc0, gen=3, CYCLEMASTER mode > firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) > firewire0: bus manager 0 (me) > uma_zalloc_arg: zone "16" with the following non-sleepable locks held: > exclusive sleep mutex sbp r = 0 (0xc402f7ac) locked @ /usr/src/sys/dev/firewire/sbp.c:2203 > KDB: stack backtrace: > db_trace_self_wrapper(c08df797,f93a931c,c0630007,c08dfb5a,f93a9330,...) at db_trace_self_wrapper+0x26 > kdb_backtrace(c08dfb5a,f93a9330,4,1,0,...) at kdb_backtrace+0x29 > witness_warn(5,0,c0901ae5,c08c59ce,86,...) at witness_warn+0x1d7 > uma_zalloc_arg(c1472960,0,2,2,f93a93e0,...) at uma_zalloc_arg+0x34 > malloc(b,c09308c0,2,c05be59a,c08d7a2c,...) at malloc+0xd2 > notify(c4150d00,4,c08d7856,34f,c05be4ea,...) at notify+0x49 > destroy_devl(f93a9410,c046a6ce,c4150d00,0,c3f18370,...) at destroy_devl+0x236 > destroy_dev(c4150d00,0,c3f18370,c42c6700,f93a9690,...) at destroy_dev+0x10 > passcleanup(c42c6700,c08b50c7,c09eff00,4,c08db41b,...) at passcleanup+0x2e > camperiphfree(c42c6700,0,f93a96b0,c04568dd,c42c6700,...) at camperiphfree+0xbb > cam_periph_invalidate(c42c6700,c0983774,f93a96e4,c046a5ea,c42c6700,...) at cam_periph_invalidate+0x3e > cam_periph_async(c42c6700,100,c418a250,0,f93a96e0,...) at cam_periph_async+0x2d > passasync(c42c6700,100,c418a250,0,c42f8a00,...) at passasync+0xca > xpt_async_bcast(0,4,c08b53c5,11a5,c404d280,...) at xpt_async_bcast+0x32 > xpt_async(100,c418a250,0,89b,0,...) at xpt_async+0x194 > sbp_cam_detach_sdev(c402f4c8,0,c402f484,1,f93a982c,...) at sbp_cam_detach_sdev+0xa4 > sbp_cam_detach_target(c14729a8,c14729a8,c08250c6,c44263f0,10,...) at sbp_cam_detach_target+0x5b > sbp_post_explore(c402f400,f93a9ce8,f93a9ce4,675,0,...) at sbp_post_explore+0xa2 > fw_bus_probe_thread(c404f000,f93a9d38,c08d8d0f,31c,c402b570,...) at fw_bus_probe_thread+0x69b > fork_exit(c0513500,c404f000,f93a9d38) at fork_exit+0xb8 > fork_trampoline() at fork_trampoline+0x8 > --- trap 0, eip = 0, esp = 0xf93a9d70, ebp = 0 --- > (da1:sbp0:0:1:0): lost device > (da1:sbp0:0:1:0): removing device entry > > I reckon these problems should appear in -STABLE ... > > Cheers, > Ulrich Spoerlein >You are able to make this happen simply by powering off your Firewire Hard Drive? What about pulling the cable out? -- Sean Bruno MiraLink Corporation 6015 NE 80th Ave, Ste 100 Portland, OR 97218 Cell 503-358-6832 Phone 503-621-5143 Fax 503-621-5199 MSN: sbruno@miralink.com Google: seanwbruno@gmail.com