Figure out why we get invalid free from cJSON in vulkan-loader #2

Closed
opened 2025-11-09 06:51:20 +00:00 by geemili · 1 comment
Owner

Specifically for a35593d1df

Important bit of log quoted here:

debug(allocation_callbacks): allocation(vulkan_version.ZigToVulkanAllocatorWrapper@7ffc9cd105e8, 256, 8, .instance)
debug(allocation_callbacks): allocation: stored data: 0x7ad335ea8000, 256B, 8
debug(allocation_callbacks): reallocation(vulkan_version.ZigToVulkanAllocatorWrapper@7ffc9cd105e8, u8@7ad335ea8000, 33, 8, .instance)
debug(allocation_callbacks): reallocation: old data: 0x7ad335ea8000, 256B, 8
debug(allocation_callbacks): reallocation: new data: 0x7ad3361c0ec0, 33B, 8
thread 10237 panic: Invalid free
/home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib/std/heap/debug_allocator.zig:907:49: 0x11b64ed in free (std.zig)
            if (bucket.canary != config.canary) @panic("Invalid free");
                                                ^
/home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib/std/mem/Allocator.zig:160:25: 0x11ce753 in rawFree (vulkan_version.zig)
    return a.vtable.free(a.ptr, memory, alignment, ret_addr);
                        ^
???:?:?: 0x7ad33613572a in print (../loader/cJSON.c)
???:?:?: 0x7ad336168fea in loader_cJSON_Print (../loader/loader_json.c)
???:?:?: 0x7ad336159d62 in loader_read_layer_json (../loader/loader.c)
???:?:?: 0x7ad33615ac35 in loader_add_layer_properties (../loader/loader.c)
???:?:?: 0x7ad33615c22f in loader_parse_instance_layers (../loader/loader.c)
???:?:?: 0x7ad33615c600 in loader_scan_for_layers (../loader/loader.c)
???:?:?: 0x7ad33616f431 in vkCreateInstance (../loader/trampoline.c)
/home/geemili/code/geemili/dynamic_linking_adventures/examples/vulkan_version.zig:47:29: 0x11a98df in main (vulkan_version.zig)
    switch (vkCreateInstance(&.{
                            ^
/home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib/std/start.zig:696:37: 0x11aa2b3 in callMain (std.zig)
            const result = root.main() catch |err| {
                                    ^
Unwind error at address `/proc/self/exe:0x11aa2b3` (unwind info invalid), remaining frames may be incorrect
/home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib/std/start.zig:237:5: 0x11909a1 in _start (std.zig)
    asm volatile (switch (native_arch) {
    ^
run:vulkan_version
└─ run exe vulkan_version failure
error: process terminated unexpectedly
failed command: ./.zig-cache/o/84a0f31a117b45b4106333575b8b7824/vulkan_version

Build Summary: 1/3 steps succeeded (1 failed)
run:vulkan_version transitive failure
└─ run exe vulkan_version failure

error: the following build command failed with exit code 1:
.zig-cache/o/6452d8c8659a44ae676259d23dc715b0/build /home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/zig /home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib /home/geemili/code/geemili/dynamic_linking_adventures .zig-cache /home/geemili/.cache/zig --seed 0x63131a13 -Ze51a6c18bb4ebbf6 run:vulkan_version
Specifically for a35593d1df Important bit of log quoted here: ``` debug(allocation_callbacks): allocation(vulkan_version.ZigToVulkanAllocatorWrapper@7ffc9cd105e8, 256, 8, .instance) debug(allocation_callbacks): allocation: stored data: 0x7ad335ea8000, 256B, 8 debug(allocation_callbacks): reallocation(vulkan_version.ZigToVulkanAllocatorWrapper@7ffc9cd105e8, u8@7ad335ea8000, 33, 8, .instance) debug(allocation_callbacks): reallocation: old data: 0x7ad335ea8000, 256B, 8 debug(allocation_callbacks): reallocation: new data: 0x7ad3361c0ec0, 33B, 8 thread 10237 panic: Invalid free /home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib/std/heap/debug_allocator.zig:907:49: 0x11b64ed in free (std.zig) if (bucket.canary != config.canary) @panic("Invalid free"); ^ /home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib/std/mem/Allocator.zig:160:25: 0x11ce753 in rawFree (vulkan_version.zig) return a.vtable.free(a.ptr, memory, alignment, ret_addr); ^ ???:?:?: 0x7ad33613572a in print (../loader/cJSON.c) ???:?:?: 0x7ad336168fea in loader_cJSON_Print (../loader/loader_json.c) ???:?:?: 0x7ad336159d62 in loader_read_layer_json (../loader/loader.c) ???:?:?: 0x7ad33615ac35 in loader_add_layer_properties (../loader/loader.c) ???:?:?: 0x7ad33615c22f in loader_parse_instance_layers (../loader/loader.c) ???:?:?: 0x7ad33615c600 in loader_scan_for_layers (../loader/loader.c) ???:?:?: 0x7ad33616f431 in vkCreateInstance (../loader/trampoline.c) /home/geemili/code/geemili/dynamic_linking_adventures/examples/vulkan_version.zig:47:29: 0x11a98df in main (vulkan_version.zig) switch (vkCreateInstance(&.{ ^ /home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib/std/start.zig:696:37: 0x11aa2b3 in callMain (std.zig) const result = root.main() catch |err| { ^ Unwind error at address `/proc/self/exe:0x11aa2b3` (unwind info invalid), remaining frames may be incorrect /home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib/std/start.zig:237:5: 0x11909a1 in _start (std.zig) asm volatile (switch (native_arch) { ^ run:vulkan_version └─ run exe vulkan_version failure error: process terminated unexpectedly failed command: ./.zig-cache/o/84a0f31a117b45b4106333575b8b7824/vulkan_version Build Summary: 1/3 steps succeeded (1 failed) run:vulkan_version transitive failure └─ run exe vulkan_version failure error: the following build command failed with exit code 1: .zig-cache/o/6452d8c8659a44ae676259d23dc715b0/build /home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/zig /home/geemili/.local/share/ziglang/0.16.0-dev.1220+95c76b1b4/lib /home/geemili/code/geemili/dynamic_linking_adventures .zig-cache /home/geemili/.cache/zig --seed 0x63131a13 -Ze51a6c18bb4ebbf6 run:vulkan_version ```
Author
Owner

It's because I was freeing with the wrong length: 8295012ed3

It's because I was freeing with the wrong length: 8295012ed37e441101554250d9aa18c3a28bfa4a
Sign in to join this conversation.
No labels
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
geemili/dynamic_linking_adventures#2
No description provided.