Hector Martin on Nostr: So I've had this USB controller dying bug for months. The repro was "move data from ...
So I've had this USB controller dying bug for months. The repro was "move data from USB disks for days". The symptoms were IOMMU faults. I thought we had some horrible heisenbug in our platform code.
I finally found a reliable repro today so I started poking around.
In xhci-ring.c `/* FIXME stream case, several stopped rings */`
Gee, thanks, I love it when months-long anxiety over a bug ends up on a FIXME in the code. As far as I can tell, when USB streams are involved and stuff gets canceled, only one stream's TDs get canceled, leaving the others to still be processed by the HCD with DMA pointers now pointing to nowhere 🤦♂️
Published at
2024-05-22 11:00:12Event JSON
{
"id": "960b9578faf89446468f6bfebcf6a130b22485a76009ce5a32b52ebcc1164aeb",
"pubkey": "058a6d106c5e6719008ce4db3f64c846caf49925227a39533d12a846fbab21ee",
"created_at": 1716375612,
"kind": 1,
"tags": [
[
"proxy",
"https://social.treehouse.systems/@marcan/112484392167256317",
"web"
],
[
"proxy",
"https://social.treehouse.systems/users/marcan/statuses/112484392167256317",
"activitypub"
],
[
"L",
"pink.momostr"
],
[
"l",
"pink.momostr.activitypub:https://social.treehouse.systems/users/marcan/statuses/112484392167256317",
"pink.momostr"
]
],
"content": "So I've had this USB controller dying bug for months. The repro was \"move data from USB disks for days\". The symptoms were IOMMU faults. I thought we had some horrible heisenbug in our platform code.\n\nI finally found a reliable repro today so I started poking around.\n\nIn xhci-ring.c `/* FIXME stream case, several stopped rings */`\n\nGee, thanks, I love it when months-long anxiety over a bug ends up on a FIXME in the code. As far as I can tell, when USB streams are involved and stuff gets canceled, only one stream's TDs get canceled, leaving the others to still be processed by the HCD with DMA pointers now pointing to nowhere 🤦♂️",
"sig": "9e996ba872cd75ce9f5e2115e9e5188437f74cc009af509b71cd66ea43c441172e1e73c3f826354de69bc23adacfe19872d87eebe882dc48cdb8321b3f53ba80"
}