Why are my error traces not working in ReleaseSafe

I’m having trouble getting error traces to work in my release builds:

$ zig build release
$ zig-out/release/gatorcat-0.5.3-x86_64-linux-musl run --ifname ehq
warning: clock(boot) resolution: 1 ns
warning: Scheduler: NORMAL
error(gatorcat): failed to open raw socket: .PERM
error: NonRecoverable
???:?:?: 0x1433a93 in ??? (/proc/self/exe)
???:?:?: 0x137027e in ??? (/proc/self/exe)
???:?:?: 0x137691b in ??? (/proc/self/exe)
???:?:?: 0x12f2f63 in ??? (/proc/self/exe)

I’ve turned on error traces on my module:

pub fn cliModule(
    b: *std.Build,
    target: std.Build.ResolvedTarget,
    optimize: std.builtin.OptimizeMode,
    gatorcat_module: *std.Build.Module,
    argparser_module: *std.Build.Module,
) *std.Build.Module {
    const zbor_module = b.dependency("zbor", .{
        .target = target,
        .optimize = optimize,
    }).module("zbor");
    const zenoh_module = b.dependency("zenoh", .{
        .target = target,
        .optimize = optimize,
    }).module("zenoh");
    const cli_module = b.createModule(.{
        .optimize = optimize,
        .target = target,
        .error_tracing = true,
        .root_source_file = b.path("src/cli/main.zig"),
    });
    cli_module.addImport("gatorcat", gatorcat_module);
    cli_module.addImport("argparser", argparser_module);
    cli_module.addImport("zenoh", zenoh_module);
    cli_module.addImport("zbor", zbor_module);
    cli_module.addAnonymousImport("build_zig_zon", .{ .root_source_file = b.path("build.zig.zon") });

    return cli_module;
}

pub fn buildCli(
    b: *std.Build,
    step: *std.Build.Step,
    target: std.Build.ResolvedTarget,
    optimize: std.builtin.OptimizeMode,
    gatorcat_module: *std.Build.Module,
    argparser_module: *std.Build.Module,
    dest_dir: std.Build.Step.InstallArtifact.Options.Dir,
    exe_name: []const u8,
) *std.Build.Step.InstallArtifact {
    const cli_module = cliModule(
        b,
        target,
        optimize,
        gatorcat_module,
        argparser_module,
    );
    const cli_exe = b.addExecutable(.{ .name = exe_name, .root_module = cli_module });
    const cli_install = b.addInstallArtifact(cli_exe, .{ .dest_dir = dest_dir });
    step.dependOn(&cli_install.step);
    return cli_install;
}

pub fn buildRelease(
    b: *std.Build,
    step_release: *std.Build.Step,
) void {
    const targets = [_]std.Target.Query{
        .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl },
        .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl },
        .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu },
    };

    for (targets) |target| {
        const options: struct {
            target: std.Build.ResolvedTarget,
            optimize: std.builtin.OptimizeMode,
        } = .{
            .target = b.resolveTargetQuery(target),
            .optimize = .ReleaseSafe,
        };
        const gatorcat_module = b.createModule(.{
            .root_source_file = b.path("src/module/root.zig"),
            .target = options.target,
            .optimize = options.optimize,
            .error_tracing = true,
        });
        const argparser_module = b.createModule(.{
            .root_source_file = b.path("src/argparser/root.zig"),
            .target = options.target,
            .optimize = options.optimize,
            .error_tracing = true,
        });
        // depend on the npcap sdk if we are building for windows
        switch (options.target.result.os.tag) {
            .windows => {
                if (b.lazyDependency("npcap", .{
                    .target = options.target,
                    .optimize = options.optimize,
                })) |npcap| {
                    gatorcat_module.addImport("npcap", npcap.module("npcap"));
                }
            },
            else => {},
        }
        const triple = target.zigTriple(b.allocator) catch @panic("oom");

        _ = buildCli(
            b,
            step_release,
            options.target,
            options.optimize,
            gatorcat_module,
            argparser_module,
            .{ .override = .{ .custom = "release" } },
            std.fmt.allocPrint(b.allocator, "gatorcat-{s}-{s}", .{ gatorcat_version, triple }) catch @panic("oom"),
        );
    }
}

what am I missing here?
https://codeberg.org/jeffective/gatorcat/src/branch/main/build.zig

I am guessing that .strip = false; might help, since the image is missing symbols and debug info.