All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bart Nagel <bart@tremby.net>
To: Michal Pecio <michal.pecio@gmail.com>
Cc: linux-usb@vger.kernel.org, mathias.nyman@intel.com
Subject: Re: Regression: webcam freezing since Linux 6.15
Date: Thu, 23 Jul 2026 15:45:25 -0700	[thread overview]
Message-ID: <amKUdIRBrsFiDTiV@spiral> (raw)
In-Reply-To: <amJ9jAtK8rNWDO7V@spiral>

At 2026-07-23 14:02:16 -0700, Bart Nagel wrote:
> At 2026-07-23 08:14:40 +0200, Michal Pecio wrote:
> > Maybe don't bother with newer kernels for now, but simply checkout
> > d0b619599e52 and also add this patch. Recompilation should be fast.
> > Then run it to failure and post the log. You may want to run
> > 'dmesg -W | tee logfile.txt' just in case, because the resulting flood
> > may overwrite initial messages in the kernel log buffer and I'm not
> > sure how much extra buffering journald maintains.
> 
> OK. Checked out that commit, applied the patch, and it's compiling.
> 
...
> 
> I'll report back with logs when the time comes.

And here I am.

I found that I can reproduce the freeze much, much faster if I run
`stress --cpu $(nproc)` at the same time. Not sure why I didn't think
of this earlier, given that I knew it happened quicker when running a
game.

This time it froze within seconds.

Here's an abridged version of the log, with some extra annotation
which I hope isn't entirely useless. It is of course possible that I
have not picked up on some important details. So the full log is at
https://termbin.com/ro416 to which I've added just one annotation to
show what was visible in the last-captured frame before the camera
froze.

Nothing is output until I start OBS, and then it begins like this:

    [  169.257158] usb 2-6.1: uvc_v4l2_open
    [  169.407072] usb 2-6.1: Trying format 0x56595559 (YUYV): 1920x1080
    [  169.407078] usb 2-6.1: Using default frame interval 16666.6 us (60.0 fps)
    [  169.407675] usb 2-6.1: Trying format 0x56595559 (YUYV): 1920x1080
    [  169.407678] usb 2-6.1: Using default frame interval 16666.6 us (60.0 fps)
    [  169.409320] usb 2-6.1: uvc_v4l2_mmap
    [  169.409496] usb 2-6.1: uvc_v4l2_mmap
    [  169.409661] usb 2-6.1: uvc_v4l2_mmap
    [  169.409825] usb 2-6.1: uvc_v4l2_mmap
    [  169.660301] usb 2-6.1: uvc_v4l2_poll
    [  169.744695] usb 2-6.1: uvc_v4l2_poll
    [  169.744787] usb 2-6.1: uvc_v4l2_poll
    [  169.760428] usb 2-6.1: Frame complete (EOF found)
    [  169.761246] usb 2-6.1: uvc_v4l2_poll
    [  169.763493] usb 2-6.1: uvc_v4l2_poll
    [  169.776344] usb 2-6.1: Frame complete (EOF found)
    [  169.780296] usb 2-6.1: uvc_v4l2_poll
    [  169.782560] usb 2-6.1: uvc_v4l2_poll
    [  169.812347] usb 2-6.1: Frame complete (EOF found)
    [  169.813304] usb 2-6.1: uvc_v4l2_poll
    [  169.813631] usb 2-6.1: uvc_v4l2_poll
    [  169.828357] usb 2-6.1: Frame complete (EOF found)
    [  169.828469] usb 2-6.1: uvc_v4l2_poll
    [  169.828825] usb 2-6.1: uvc_v4l2_poll

That pattern of "poll" and "frame complete" continues until:

    [  174.692343] usb 2-6.1: Frame complete (EOF found)
    [  174.692469] usb 2-6.1: uvc_v4l2_poll
    [  174.692814] usb 2-6.1: uvc_v4l2_poll
    [  174.709692] xhci_hcd 0000:00:14.0: Transfer error for slot 6 ep 2 on endpoint
    [  174.709815] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709818] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709820] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709822] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709823] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709825] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709827] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709828] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709830] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709832] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709833] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709835] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709837] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709838] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709840] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709842] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709843] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709845] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709846] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709848] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709850] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709851] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709853] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709855] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709856] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709858] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709860] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709861] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.709863] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  174.710069] xhci_hcd 0000:00:14.0: Found td. Clear skip flag for slot 6 ep 2.
    [  174.710086] usb 2-6.1: USB isochronous frame lost (-71)
    [  174.710088] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710089] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710091] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710092] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710093] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710095] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710096] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710097] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710099] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710100] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710101] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710103] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710104] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710105] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710107] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710108] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.710109] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712405] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712409] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712410] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712411] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712413] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712414] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712415] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712417] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712418] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712420] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712421] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.712422] usb 2-6.1: USB isochronous frame lost (-18)
    [  174.716415] usb 2-6.1: Frame complete (EOF found)
    [  174.728415] usb 2-6.1: uvc_v4l2_poll
    [  174.728438] usb 2-6.1: uvc_v4l2_poll

But at this point I think OBS is still in the process of starting up,
and the picture is still fine.

It then settles, though there are still some shorter bursts of "miss
service interval" and "clear skip flag" and "isochronous frame lost"
here and there.

The last captured frame has nothing interesting visible, just more
"frame complete" and "uvc_v4l2_poll".

After the freeze there are a few more "frame complete" messages, then

    [  180.701300] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 10a63e920, set skip flag
    [  180.701315] xhci_hcd 0000:00:14.0: All TDs skipped for slot 6 ep 2. Clear skip flag.
    [  180.701326] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701328] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701330] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701331] usb 2-6.1: USB isochronous frame lost (-18)

And that frame lost message is repeated many many times. In the
middle:

    [  180.701418] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701419] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701420] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701423] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  180.701424] xhci_hcd 0000:00:14.0: Miss service interval error for slot 6 ep 2 ep_trb_dma 0, set skip flag
    [  180.701428] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701429] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701429] usb 2-6.1: USB isochronous frame lost (-18)

And then:

    [  180.701552] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701553] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701684] xhci_hcd 0000:00:14.0: All TDs skipped for slot 6 ep 2. Clear skip flag.
    [  180.701688] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701690] usb 2-6.1: USB isochronous frame lost (-18)

And:

    [  180.701794] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701795] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701797] xhci_hcd 0000:00:14.0: Overrun event on slot 6 ep 2
    [  180.701801] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701803] usb 2-6.1: USB isochronous frame lost (-18)

Finally, the "frame lost" messages come to an end:

    [  180.701916] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701917] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701919] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701920] xhci_hcd 0000:00:14.0: Overrun event on slot 6 ep 2
    [  180.701924] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701925] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701927] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701928] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.701929] usb 2-6.1: USB isochronous frame lost (-18)
    [  180.702046] xhci_hcd 0000:00:14.0: Overrun event on slot 6 ep 2
    [  180.780616] usb 2-6.1: uvc_v4l2_poll
    [  180.780690] usb 2-6.1: uvc_v4l2_poll

And then it's just a lot of poll messages.

I hope this is useful.

I found that nixos-unstable is still on 6.x but that I am able to
quite easily move to the cachyos kernel which is labelled
7.1.4-cachyos. Before compiling d0b619599e52 with your patch and
capturing the log above I did test on 7.1.4-cachyos and it did freeze
there too. The log in that case looks very similar, except that there
are additionally a *ton* of "xhci_hcd 0000:00:14.0: Spurious event dma
0x0000000492b26580, comp_code 13 after 13" messages, with different
dma numbers on each. I don't know if this is a clue.

Thanks again.

  reply	other threads:[~2026-07-23 22:45 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-21 22:10 Regression: webcam freezing since Linux 6.15 Bart Nagel
2026-07-22 22:22 ` Michal Pecio
2026-07-22 23:23   ` Bart Nagel
2026-07-23  6:14     ` Michal Pecio
2026-07-23  6:19       ` Michal Pecio
2026-07-23 21:02       ` Bart Nagel
2026-07-23 22:45         ` Bart Nagel [this message]
2026-07-22 23:30   ` Bart Nagel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=amKUdIRBrsFiDTiV@spiral \
    --to=bart@tremby.net \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=michal.pecio@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.