gpu-dawn: undefined behavior caught by UBSan in dawn/native/CacheKey.h #239

Closed
opened 2022-04-19 04:44:08 +00:00 by emidoots · 1 comment
emidoots commented 2022-04-19 04:44:08 +00:00 (Migrated from github.com)

Similar to #221 - but in a different file (reported in Matrix):

Illegal instruction at address 0xa2c5f8
libs/dawn/src/dawn/native/CacheKey.h:56:52: 0xa2c5f8 in Record<wgpu::LoadOp, wgpu::StoreOp, bool, unsigned int> (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp)
libs/dawn/src/dawn/native/CacheKey.h:57:20: 0xa2c4da in Record<wgpu::LoadOp, wgpu::StoreOp, wgpu::LoadOp, wgpu::StoreOp, bool, unsigned int> (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp)
libs/dawn/src/dawn/native/CacheKey.h:57:20: 0xa2b4b0 in Record<bool, wgpu::TextureFormat, wgpu::LoadOp, wgpu::StoreOp, wgpu::LoadOp, wgpu::StoreOp, bool, unsigned int> (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp)
libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp:236:14: 0xa2a263 in Serialize (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp)
libs/dawn/src/dawn/native/CacheKey.h:51:13: 0xacaaa4 in Initialize (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/RenderPipelineVk.cpp)
libs/dawn/src/dawn/native/Device.cpp:1531:9: 0x5bff23 in CreateRenderPipeline (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/Device.cpp)
libs/dawn/src/dawn/native/Device.cpp:1105:27: 0x5bfc63 in APICreateRenderPipeline (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/Device.cpp)
libs/dawn/out/Debug/gen/src/dawn/native/ProcTable.cpp:579:36: 0x58086b in ??? (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/out/Debug/gen/src/dawn/native/ProcTable.cpp)
libs/dawn/out/Debug/gen/src/dawn/dawn_proc.c:248:12: 0x57c389 in ??? (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/out/Debug/gen/src/dawn/dawn_proc.c)
/var/home/z/Projects/game/mach/gpu/src/NativeInstance.zig:685:71: 0x4af964 in .gpu.NativeInstance.device_vtable.createRenderPipeline (game)
            return wrapRenderPipeline(c.wgpuDeviceCreateRenderPipeline(@ptrCast(c.WGPUDevice, ptr), &desc));
                                                                      ^
/var/home/z/Projects/game/mach/gpu/src/Device.zig:225:46: 0x4b53e5 in main (game)
    return device.vtable.createRenderPipeline(device.ptr, descriptor);
                                             ^
/var/home/z/.local/zig/zig-linux-x86_64-0.10.0-dev.1741+d2681d253/lib/std/start.zig:574:37: 0x4c6507 in std.start.callMain (game)
            const result = root.main() catch |err| {
                                    ^
/var/home/z/.local/zig/zig-linux-x86_64-0.10.0-dev.1741+d2681d253/lib/std/start.zig:508:12: 0x4b9c17 in std.start.callMainWithArgs (game)
    return @call(.{ .modifier = .always_inline }, callMain, .{});
           ^
/var/home/z/.local/zig/zig-linux-x86_64-0.10.0-dev.1741+d2681d253/lib/std/start.zig:473:12: 0x4b99c2 in std.start.main (game)
    return @call(.{ .modifier = .always_inline }, callMainWithArgs, .{ @intCast(usize, c_argc), c_argv, envp });
           ^

I will investigate+fix+send CL upstream.

Similar to #221 - but in a different file (reported in Matrix): ``` Illegal instruction at address 0xa2c5f8 libs/dawn/src/dawn/native/CacheKey.h:56:52: 0xa2c5f8 in Record<wgpu::LoadOp, wgpu::StoreOp, bool, unsigned int> (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp) libs/dawn/src/dawn/native/CacheKey.h:57:20: 0xa2c4da in Record<wgpu::LoadOp, wgpu::StoreOp, wgpu::LoadOp, wgpu::StoreOp, bool, unsigned int> (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp) libs/dawn/src/dawn/native/CacheKey.h:57:20: 0xa2b4b0 in Record<bool, wgpu::TextureFormat, wgpu::LoadOp, wgpu::StoreOp, wgpu::LoadOp, wgpu::StoreOp, bool, unsigned int> (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp) libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp:236:14: 0xa2a263 in Serialize (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/CacheKeyVk.cpp) libs/dawn/src/dawn/native/CacheKey.h:51:13: 0xacaaa4 in Initialize (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/RenderPipelineVk.cpp) libs/dawn/src/dawn/native/Device.cpp:1531:9: 0x5bff23 in CreateRenderPipeline (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/Device.cpp) libs/dawn/src/dawn/native/Device.cpp:1105:27: 0x5bfc63 in APICreateRenderPipeline (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/Device.cpp) libs/dawn/out/Debug/gen/src/dawn/native/ProcTable.cpp:579:36: 0x58086b in ??? (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/out/Debug/gen/src/dawn/native/ProcTable.cpp) libs/dawn/out/Debug/gen/src/dawn/dawn_proc.c:248:12: 0x57c389 in ??? (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/out/Debug/gen/src/dawn/dawn_proc.c) /var/home/z/Projects/game/mach/gpu/src/NativeInstance.zig:685:71: 0x4af964 in .gpu.NativeInstance.device_vtable.createRenderPipeline (game) return wrapRenderPipeline(c.wgpuDeviceCreateRenderPipeline(@ptrCast(c.WGPUDevice, ptr), &desc)); ^ /var/home/z/Projects/game/mach/gpu/src/Device.zig:225:46: 0x4b53e5 in main (game) return device.vtable.createRenderPipeline(device.ptr, descriptor); ^ /var/home/z/.local/zig/zig-linux-x86_64-0.10.0-dev.1741+d2681d253/lib/std/start.zig:574:37: 0x4c6507 in std.start.callMain (game) const result = root.main() catch |err| { ^ /var/home/z/.local/zig/zig-linux-x86_64-0.10.0-dev.1741+d2681d253/lib/std/start.zig:508:12: 0x4b9c17 in std.start.callMainWithArgs (game) return @call(.{ .modifier = .always_inline }, callMain, .{}); ^ /var/home/z/.local/zig/zig-linux-x86_64-0.10.0-dev.1741+d2681d253/lib/std/start.zig:473:12: 0x4b99c2 in std.start.main (game) return @call(.{ .modifier = .always_inline }, callMainWithArgs, .{ @intCast(usize, c_argc), c_argv, envp }); ^ ``` I will investigate+fix+send CL upstream.
emidoots commented 2022-04-22 06:59:37 +00:00 (Migrated from github.com)

Fixed in:

Fixed in: * `generated-2022-04-21` * next automatic binary release of `mach` * upstream: https://dawn-review.googlesource.com/c/dawn/+/87670
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
hexops/mach#239
No description provided.