linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: guido@kiener-muenchen.de
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Guido Kiener <Guido.Kiener@rohde-schwarz.com>,
	dpenkler@gmail.com, USB list <linux-usb@vger.kernel.org>,
	Thinh.Nguyen@synopsys.com, mathias.nyman@intel.com
Subject: Re: [syzbot] INFO: rcu detected stall in tx
Date: Fri, 21 May 2021 22:17:06 +0000	[thread overview]
Message-ID: <20210521221706.Horde.sFtE6C4lkS5sJzKfWl41tv7@webmail.kiener-muenchen.de> (raw)
In-Reply-To: <20210521012420.GC1224757@rowland.harvard.edu>


Zitat von Alan Stern <stern@rowland.harvard.edu>:

> On Thu, May 20, 2021 at 09:25:53PM +0000, Guido Kiener wrote:
>> I've tested to pull the cable and I can easy produce the -EPROTO  
>> (-71) error in the usbtmc.c driver.
>> The error also happens when I have no traffic and just switch off  
>> the USBTMC device (which I can do from home office).
>> When there is traffic, the IN/OUT pipe will also show some -EPROTO  
>> errors from the flying urbs.
>>
>> On my test PC the amount of error messages vary from 1 to ca. 10  
>> error message issued by the INT pipe (see below).
>> Nevertheless I do not see the endless loop, since the USB  
>> disconnect stops the loop.
>> (Tested with USB 2.0, older kernel 4.15, but latest modified  
>> usbtmc.c driver using ehci-pci)
>> So I can test fixes (of course with latest kernel) and also setup a  
>> machine with USB 3.0.
>>
>> 1. Example
>> [1616527.017863] usbtmc 1-1.4:1.0: usbtmc_write_bulk_cb - nonzero  
>> write bulk status received: -71
>> [1616527.032489] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.053998] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.076145] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.098143] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.120244] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.142244] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.164440] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.186517] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.208175] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.230272] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1616527.241982] usb 1-1.4: USB disconnect, device number 3
>>
>> 2. Example
>> [1622454.299131] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1622454.305815] usbtmc 1-1.4:1.0: usbtmc_write_bulk_cb - nonzero  
>> write bulk status received: -71
>> [1622454.309921] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -71
>> [1622454.319121] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1622454.341199] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1622454.363336] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1622454.385466] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1622454.407576] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1622454.422870] usb 1-1.4: USB disconnect, device number 7
>>
>> 3. Example
>> [1623429.713784] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -71
>> [1623429.714037] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.714279] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.714528] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.714778] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.715029] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.715278] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.715528] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.715777] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.716028] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.716277] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.718916] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.719168] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.722404] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.725666] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.725918] usbtmc 1-1.4:1.0: usbtmc_read_bulk_cb - nonzero  
>> read bulk status received: -2
>> [1623429.727837] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1623429.749949] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1623429.772094] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1623429.794184] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1623429.816297] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1623429.838479] usbtmc 1-1.4:1.0: unknown status received: -71
>> [1623429.838795] usb 1-1.4: USB disconnect, device number 8
>
> Try running this test on a system with only one CPU (and no
> hyperthreading).  I think that's the environment syzbot emulates.
>

I looked at the original console output again:
https://syzkaller.appspot.com/x/log.txt?x=1065c5fcd00000
I'm not very familiar yet in reading rcu files, but I would say:
1. I assume there are 2 CPUs running (C0,C1).
2. There are 5 USBTMC devices running concurrenlty which seems to be  
disconnected together at once.
You will find all disconnect messages "usb x-1: USB disconnect, device  
number y" at the end within 5 seconds (418.4-423.7 sec).
3. Each USBTMC device issues every 20 msec the typical INT pipe  
message "X-1:0.0: unknown status received: -71" when the connection is  
disconnected.
All USBTMC device messages are alternating. Round robin works.

Does someone have an idea for the following questions:
1. Why does it take about 96 seconds from the beginning of the first  
INT pipe message (322.1) until the first disconnect message (418.4)?
2. What is blocking the "disconnect" event for such a long time?
3. Is it possible to provoke this behavior when I disconnect the cable  
in slow motion?
4. Is the self-detected stall just caused by another driver and the  
USBTMC driver is innocent, but only chatty?

Next Thursday I can check recommendations again.

-Guido





  reply	other threads:[~2021-05-21 22:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-20 21:25 [syzbot] INFO: rcu detected stall in tx Guido Kiener
2021-05-21  1:24 ` Alan Stern
2021-05-21 22:17   ` guido [this message]
2021-05-22  2:13     ` Alan Stern
     [not found] <000000000000a9b79905c04e25a0@google.com>
2021-04-19  7:27 ` Dmitry Vyukov
2021-06-28  6:38   ` Zhang, Qiang
2021-06-28 14:17     ` Alan Stern
2021-06-27 20:20 ` syzbot
2021-09-04  7:55 ` syzbot
  -- strict thread matches above, loose matches on Subject: below --
2021-05-19 16:14 Re: Re: Re: Re: " Guido Kiener
2021-05-19 17:35 ` Alan Stern
2021-05-19 19:38   ` Thinh Nguyen
2021-05-20  2:01     ` Alan Stern
2021-05-20 20:30       ` Thinh Nguyen
2021-05-24 15:18         ` Mathias Nyman
2021-05-24 18:55           ` Alan Stern
2021-05-24 19:23             ` Thinh Nguyen
2021-05-24 22:16               ` Mathias Nyman
2021-05-24 22:48                 ` Thinh Nguyen

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=20210521221706.Horde.sFtE6C4lkS5sJzKfWl41tv7@webmail.kiener-muenchen.de \
    --to=guido@kiener-muenchen.de \
    --cc=Guido.Kiener@rohde-schwarz.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=dpenkler@gmail.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=stern@rowland.harvard.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).