Commit 1dcaea8
vulkan/malloc: fix data race on vk_malloc.age
TSAN reports a data race between vk_malloc_garbage_collect and
vk_malloc_slice, the former increments vk_malloc.age while holding the
vk_malloc.lock while the latter reads it after dropping the lock.
Fix this by setting slab->age inside pool_get_page when returning
already allocated slab. slab_alloc already sets it for new slabs.
TSAN trace:
WARNING: ThreadSanitizer: data race (pid=847921)
Write of size 8 at 0x725400013878 by thread T15 (mutexes: write M0, write M1):
\#0 vk_malloc_garbage_collect /mnt/f/workspace/libplacebo/build/../src/vulkan/malloc.c:608:12
\#1 vk_gpu_flush /mnt/f/workspace/libplacebo/build/../src/vulkan/gpu.c:756:5
\#2 pl_gpu_flush /mnt/f/workspace/libplacebo/build/../src/gpu.c:1267:9
Previous read of size 8 at 0x725400013878 by main thread (mutexes: write M2, write M3):
\#0 vk_malloc_slice /mnt/f/workspace/libplacebo/build/../src/vulkan/malloc.c:1063:25
\#1 vk_buf_create /mnt/f/workspace/libplacebo/build/../src/vulkan/gpu_buf.c:221:10
\#2 pl_buf_create /mnt/f/workspace/libplacebo/build/../src/gpu.c:609:181 parent eb719e4 commit 1dcaea8
1 file changed
+1
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
742 | 742 | | |
743 | 743 | | |
744 | 744 | | |
| 745 | + | |
745 | 746 | | |
746 | 747 | | |
747 | 748 | | |
| |||
1060 | 1061 | | |
1061 | 1062 | | |
1062 | 1063 | | |
1063 | | - | |
1064 | 1064 | | |
1065 | 1065 | | |
1066 | 1066 | | |
| |||
0 commit comments