On 23/11/24(Sat) 21:45, Kirill A. Korinsky wrote: > I had dig a bit future and setup a breakpoint at usbd_ref_decr. > > It was called from uvideo_vs_start_bulk_thread, but still it crahses:
Could you check if uvideo_vs_close() is called multiple times? > > Breakpoint at usbd_ref_decr: endbr64 > ddb{0}> bt > usbd_ref_decr(ffff800002177400) at usbd_ref_decr > uvideo_vs_start_bulk_thread(ffff80000021bf000) at > uvideo_vs_start_bulk_thread+0xc2 > end trace frame: 0x0, count: -1 > ddb{0}> c > uvm_fault(0xfffffffff027c89c8, 0x3f, 0, 2) -> e > kernel: page fault trap, code=2 > Stopped at usbd_close_pipe+0x91: movq %rcx,0x40(%rax) > TID PID UID PRFLAGS PFLAGS CPU COMMAND > 121458 83085 1000 0x100002 0 2 xconsole > 210971 28938 0 0x14000 0x200 3 reaper > *468258 76766 0 0x14000 0x200 0K usbtask > 512899 87028 0 0x14000 0x40000200 1 sensors > usbd_close_pipe(ffff800001e54000) at usbd_close_pipe+0x91 > uvideo_close(ffff80000021bf000) at uvideo_close+0x57 > videoclose(2c01,4,2000,ffff80003ab096e0) at videoclose+0x63 > spec_close(ffff80003ab8f6c8) at spec_close+0x2b2 > VOP_CLOSE(fffffdb23c0922c8,4,ffffffffffffff,ffff80003ab096e0) at > VOP_CLOSE+0x59 > vclean(fffffdb23c0922c8,0,ffff80003ab096e0) at vclean+0x147 > vgonel(fffffdb23c0922c8,ffff80003ab096e0) at vgonel+0x67 > vop_generic_revoke(ffff80003ab8f7f8) at vop_generic_revoke+0x1a2 > VOP_REVOKE(fffffdb23c0922c8,1) at VOP_REVOKE+0x3b > vdevgone(2c,1,1,4) at vdevgone+0xd5 > videodetach(ffff800001fe4400,1) at videodetach+0x67 > config_detach(ffff800001fe4400,1) at config_detach+0x166 > uvideo_detach(ffff80000021bf000,1) at uvideo_detach+0x4a > config_detach(ffff80000021bf000,1) at config_detach+0x166 > end trace frame: 0xffff80003ab8fa20, count: 0 > https://www.openbsd.org/ddb.html describes the minimum info required > in bug > reports. Insufficient info makes it difficult to find and fix bugs. > ddb{0}> > > and here the photo which I've captured with this stacktrace: > https://kirill.korins.ky/pub/openbsd-webcam-deattach-crash.jpg > > -- > wbr, Kirill >