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
> 


Reply via email to