-
Notifications
You must be signed in to change notification settings - Fork 854
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[core] Deadlock between device.tracker and device.snatchable_lock #5737
Comments
queue.submit threadAcquired tracker lock here: wgpu/wgpu-core/src/device/resource.rs Line 3625 in 9e0fd17
then tries to acquire wgpu/wgpu-core/src/resource.rs Line 886 in 9e0fd17
poll_all_devices threadTries to acquire wgpu/wgpu-core/src/device/life.rs Line 518 in 9e0fd17
wgpu/wgpu-core/src/device/global.rs Line 2206 in 9e0fd17
|
similar deadlock also happens if one thread is destroying buffer instead of texture in wgpu/wgpu-core/src/device/resource.rs Line 3615 in 9e0fd17
|
Thanks for filing this, and for the analysis. If you look at the analysis results posted in #5586, you'll see that there's no shortage of cycles in that lock acquisition ordering graph. There are lots of ways for wgpu to deadlock right now, unfortunately. We used to have static deadlock prevention until arcanization removed it, and things went downhill fast. I have some security-sensitive issues I need to get through first. I'm expecting to have them done by the first week in June, and then I can turn my attention back to deadlocks. I definitely encourage you or anyone else to tackle these issues themselves if you need them addressed sooner than that. |
Some similar deadlock happening in
device poll thread:
wgpu/wgpu-core/src/device/queue.rs Line 926 in be4eabc
that is acquired by poller thread: wgpu/wgpu-core/src/device/resource.rs Line 3628 in be4eabc
while poller thread tries to acquire wgpu/wgpu-core/src/resource.rs Line 886 in be4eabc
queue_write_texture thread acquired at wgpu/wgpu-core/src/device/queue.rs Line 838 in be4eabc
|
Description
More deadlocks between queue.submit and poll_all devices (both threads are running device.maintain).
queue.submit thread:
poll_all_devices thread:
Repro steps
Servo servo/servo@5ef507e when running
webgpu:api,validation,state,device_lost,destroy:createTexture,2d,uncompressed_format:*
Platform
wgpu-core d0a5e48
The text was updated successfully, but these errors were encountered: