On Sun, 24 Nov 2024 16:55:55 +0100,
Martin Pieuchot <m...@grenadille.net> wrote:
> 
> On 24/11/24(Sun) 16:51, Kirill A. Korinsky wrote:
> > On Sun, 24 Nov 2024 15:34:30 +0100,
> > Martin Pieuchot <m...@grenadille.net> wrote:
> > > 
> > > 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?
> > >
> > 
> > I had setup two breakpoints: uvideo_close and uvideo_vs_close because here
> > no uvideo_vs_close in stacktrace and probably it is inlined.
> > 
> > uvideo_close was called twice: the first time after I kill ffplay, and the
> > second time when I deattach webcam.
> 
> That might be the bug.  Could you get us the trace for both threads?
> 
> 

After pkill -KILL ffplay

        Breakpoint at    uvideo_close:    endbr64
        ddb(2)> bt
        uvideo_close(ffff800001a8e000) at uvideo_close
        videoclose(2c01,3,2000,ffff80004bf20f90) at videoclose+0x63
        spec_close(ffff80004bc692a8) at spec_close+0x107
        VOP_CLOSE(fffff4b3df83e518,3,ffff80004b0e588,ffff80004bf20f90) at 
VOP_CLOSE+0x59
        vn_closefile(fffff4b3bbb4eae0,ffff80004bf20f90) at vn_closefile+0xaf
        fdrop(fffff4b3bbb4eae0,ffff80004bf20f90) at fdrop+0xa5
        closef(fffff4b3bbb4eae0,ffff80004bf20f90) at closef+0xaf
        fdfree(ffff80004bf20f90) at fdfree+0xa6
        exit1(ffff80004bf20f90,0,0,3) at exit1+0x29b
        single_thread_check_locked(ffff80004bf20f90,0) at 
single_thread_check_locked+0x197
        userret(ffff80004bf20f90) at userret+0x1c5
        syscall(ffff80004bc69520) at syscall+0x4f0
        Xsyscall() at Xsyscall+0x120
        end of kernel
        end trace frame: 0x7c391574b790, count: -12
        ddb(2)>

as a picture: 
https://kirill.korins.ky/pub/openbsd-webcam-deattach-crash-break-at-pkill.jpg

And here after I deattach webcam:

        Breakpoint at    uvideo_close:    endbr64
        ddb(0)> bt
        uvideo_close(ffff800001a8e000) at uvideo_close
        videoclose(2c01,4,2000,ffff80003ab89968) at videoclose+0x63
        spec_close(ffff80003ab8edf8) at spec_close+0x2b2
        VOP_CLOSE(fffff483df83e518,4,ffffffffffffffff,ffff80003ab89968) at 
VOP_CLOSE+0x59
        vclean(fffff483df83e518,8,ffff80003ab89968) at vclean+0x147
        vgonel(fffff483df83e518,ffff80003ab89968) at vgonel+0x67
        vop_generic_revoke(ffff80003ab8ef28) at vop_generic_revoke+0x1a2
        VOP_REVOKE(fffff483df83e518,1) at VOP_REVOKE+0x3b
        vdevgone(2c,1,1,4) at vdevgone+0xd5
        videodetach(ffff800001b3f000,1) at videodetach+0x57
        config_detach(ffff800001b3f000,1) at config_detach+0x165
        uvideo_detach(ffff800001a8e000,1) at uvideo_detach+0x4a
        config_detach(ffff800001a8e000,1) at config_detach+0x166
        usbd_detach(ffff800001bcb00,ffff800000303f80) at usbd_detach+0x5a
        uhub_port_connect(ffff800000303f80,1,2a0) at uhub_port_connect+0x82
        uhub_explore(ffff800000320300) at uhub_explore+0xb8
        usb_explore(ffff800000320000) at usb_explore+0x13c
        usb_task_thread(ffff80003ab89968) at usb_task_thread+0x110
        end trace frame: 0x0, count: -17
        ddb(0)> c
        uvm_fault(0xfffffffd83dd957718, 0x3f, 0, 2) -> e
        kernel: page fault trap, code=2
        Stopped at    usbd_close_pipe+0x91:    movq    %rcx,8x40(%rax)
             TID    PID    UID  PRFLAGS  PRFLAGS  CPU  COMMAND
          140383  76998   1000   0x100002      0    2  xconsole
          117812  39140      0   0x14000   0x200    0  reaper
          315707  49625      0   0x14000   0x200    1  softnet0
        usbd_close_pipe(ffff800001b1b000) at usbd_close_pipe+0x91
        uvideo_close(ffff800001a8e000) at uvideo_close+0x57
        videoclose(2c01,3,2000,ffff80004bf20f90) at videoclose+0x63
        spec_close(ffff80004bc692a8) at spec_close+0x107
        VOP_CLOSE(fffff483df83e518,3,ffff483e090e688,ffff80004bf20f90) at 
VOP_CLOSE+0x59
        vn_closefile(fffff483bbb4eae0,ffff80004bf20f90) at vn_closefile+0xaf
        fdrop(fffff483bbb4eae0,ffff80004bf20f90) at fdrop+0xa5
        closef(fffff483bbb4eae0,ffff80004bf20f90) at closef+0xaf
        fdfree(ffff80004bf20f90) at fdfree+0xa6
        exit1(ffff80004bf20f90,0,0,3) at exit1+0x29b
        single_thread_check_locked(ffff80004bf20f90,0) at 
single_thread_check_locked+0x197
        userret(ffff80004bf20f90) at userret+0x1c5
        syscall(ffff80004bc69520) at syscall+0x4f0
        Xsyscall() at Xsyscall+0x120
        end of kernel
        end trace frame: 0x7c391574b790, count: 1
        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(3)>

again, here a picture: 
https://kirill.korins.ky/pub/openbsd-webcam-deattach-crash-break-at-deattach.jpg

-- 
wbr, Kirill

Reply via email to