Skip to content

@max crashes compiler for incompatible argument types #24060

@PanSashko

Description

@PanSashko
Contributor

Zig Version

0.15.0-dev.691+8dbd29cc4

Steps to Reproduce and Observed Behavior

Run zig test for the code

test {
    _ = @max(0, false);
}

Compiler crashes with SEGFAULT.

Expected Behavior

Compilation error.

Activity

added
bugObserved behavior contradicts documented or intended behavior
on Jun 2, 2025
alexrp

alexrp commented on Jun 2, 2025

@alexrp
SponsorMember
thread 85597 panic: reached unreachable code
Analyzing Analyzing 'test.zig'
      %2 = dbg_stmt(2, 5)
    > %3 = max(@zero, @bool_false) node_offset:2:9 to :2:23
      %4 = ensure_result_non_error(%3) node_offset:2:9 to :2:23
      %5 = restore_err_ret_index_unconditional(.none) node_offset:1:1 to :1:5
      %6 = ret_implicit(@void_value) token_offset:3:1 to :3:1
    For full context, use the command
      zig ast-check -t test.zig


/home/alexrp/Source/ziglang/zig/src/Sema.zig:25230:21: 0x340204b in analyzeMinMax__anon_585056 (zig)
            else => unreachable,
                    ^
/home/alexrp/Source/ziglang/zig/src/Sema.zig:25059:30: 0x2edf571 in zirMinMax__anon_490497 (zig)
    return sema.analyzeMinMax(block, src, air_tag, &.{ lhs, rhs }, &.{ lhs_src, rhs_src });
                             ^
/home/alexrp/Source/ziglang/zig/src/Sema.zig:1352:39: 0x29cbca6 in analyzeBodyInner (zig)
            .max => try sema.zirMinMax(block, inst, .max),
                                      ^
/home/alexrp/Source/ziglang/zig/src/Sema.zig:1044:26: 0x2e16dc1 in analyzeFnBody (zig)
    sema.analyzeBodyInner(block, body) catch |err| switch (err) {
                         ^
/home/alexrp/Source/ziglang/zig/src/Zcu/PerThread.zig:3017:23: 0x2978843 in analyzeFnBodyInner (zig)
    sema.analyzeFnBody(&inner_block, fn_info.body) catch |err| switch (err) {
                      ^
/home/alexrp/Source/ziglang/zig/src/Zcu/PerThread.zig:1696:40: 0x2582227 in analyzeFuncBody (zig)
    var air = try pt.analyzeFnBodyInner(func_index);
                                       ^
/home/alexrp/Source/ziglang/zig/src/Zcu/PerThread.zig:1616:66: 0x21ae592 in ensureFuncBodyUpToDate (zig)
    const ies_outdated, const new_failed = if (pt.analyzeFuncBody(func_index)) |result|
                                                                 ^
/home/alexrp/Source/ziglang/zig/src/Compilation.zig:4528:38: 0x1faf906 in processOneJob (zig)
            pt.ensureFuncBodyUpToDate(func) catch |err| switch (err) {
                                     ^
/home/alexrp/Source/ziglang/zig/src/Compilation.zig:4463:30: 0x1e3b4fd in performAllTheWorkInner (zig)
            try processOneJob(@intFromEnum(Zcu.PerThread.Id.main), comp, job);
                             ^
/home/alexrp/Source/ziglang/zig/src/Compilation.zig:4174:36: 0x1ce27fc in performAllTheWork (zig)
    try comp.performAllTheWorkInner(main_progress_node);
                                   ^
/home/alexrp/Source/ziglang/zig/src/Compilation.zig:2760:31: 0x1cdcfd1 in update (zig)
    try comp.performAllTheWork(main_progress_node);
                              ^
/home/alexrp/Source/ziglang/zig/src/main.zig:4552:20: 0x1d0fac7 in updateModule (zig)
    try comp.update(prog_node);
                   ^
/home/alexrp/Source/ziglang/zig/src/main.zig:3728:21: 0x1d7d19d in buildOutputType (zig)
        updateModule(comp, color, root_prog_node) catch |err| switch (err) {
                    ^
/home/alexrp/Source/ziglang/zig/src/main.zig:267:31: 0x1c5704e in mainArgs (zig)
        return buildOutputType(gpa, arena, args, .zig_test);
                              ^
/home/alexrp/Source/ziglang/zig/src/main.zig:199:20: 0x1c54fa3 in main (zig)
    return mainArgs(gpa, arena, args);
                   ^
/home/alexrp/Source/ziglang/zig/lib/std/start.zig:675:37: 0x1c54b51 in main (zig)
            const result = root.main() catch |err| {
                                    ^
../sysdeps/nptl/libc_start_call_main.h:58:16: 0x72933f02a337 in __libc_start_call_main (../sysdeps/x86/libc-start.c)
../csu/libc-start.c:360:3: 0x72933f02a3fa in __libc_start_main_impl (../sysdeps/x86/libc-start.c)
???:?:?: 0x1b29e24 in ??? (???)
???:?:?: 0x0 in ??? (???)
added
frontendTokenization, parsing, AstGen, Sema, and Liveness.
on Jun 2, 2025
added this to the 0.15.0 milestone on Jun 2, 2025
added
error messageThis issue points out an error message that is unhelpful and should be improved.
on Jun 2, 2025
added 2 commits that reference this issue on Jun 3, 2025
676526f
03b410c
added a commit that references this issue on Jul 30, 2025
6142c94
modified the milestones: urgent, 0.15.0 on Jul 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behaviorerror messageThis issue points out an error message that is unhelpful and should be improved.frontendTokenization, parsing, AstGen, Sema, and Liveness.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

      Development

      Participants

      @alexrp@mlugg@PanSashko

      Issue actions

        `@max` crashes compiler for incompatible argument types · Issue #24060 · ziglang/zig