Skip to content

Commit 9bb65cd

Browse files
metamuffincwfitzgerald
authored andcommitted
Fix deadlock between snatchable_lock and trackers in Queue::write_texture (gfx-rs#7004)
* Fix deadlock between snatchable_lock and trackers in Queue::write_texture * Fix another deadlock in write_texture between pending_writes and snatchable_lock. # Conflicts: # CHANGELOG.md
1 parent f6a4834 commit 9bb65cd

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ Bottom level categories:
4040

4141
## Unreleased
4242

43+
### v24.0.2 (2025-02-??)
44+
45+
#### Bug Fixes
46+
- Fix a possible deadlock within `Queue::write_texture`. By @metamuffin in [#7004](https://github.com/gfx-rs/wgpu/pull/7004)
47+
4348
### v24.0.1 (2025-01-22)
4449

4550
#### Bug Fixes

wgpu-core/src/device/queue.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,8 @@ impl Queue {
697697
.map_err(TransferError::from)?;
698698
}
699699

700+
let snatch_guard = self.device.snatchable_lock.read();
701+
700702
let mut pending_writes = self.pending_writes.lock();
701703
let encoder = pending_writes.activate();
702704

@@ -732,7 +734,7 @@ impl Queue {
732734
&mut trackers.textures,
733735
&self.device.alignments,
734736
self.device.zero_buffer.as_ref(),
735-
&self.device.snatchable_lock.read(),
737+
&snatch_guard,
736738
)
737739
.map_err(QueueWriteError::from)?;
738740
}
@@ -742,8 +744,6 @@ impl Queue {
742744
}
743745
}
744746

745-
let snatch_guard = self.device.snatchable_lock.read();
746-
747747
let dst_raw = dst.try_raw(&snatch_guard)?;
748748

749749
let (block_width, block_height) = dst.desc.format.block_dimensions();

0 commit comments

Comments
 (0)