Test Runner Hang on Failed Bound Check

I am new to Odin (so far I like it very much by the way) and have a problem with the test runner not exiting when it fails on an out-of-bound check.

I have created a very simple case to demonstrate:

package main

// Out of bound error to demonstrate problem with test.
last :: proc(a: []int) -> int {
	return a[len(a)]
}

import "core:testing"
@(test)
test_last ::proc(t: ^testing.T) {
	a := [?]int{1, 2, 3}
	r := last(a[:])
	testing.expect_value(t, r, 3)
}

When I run the test odin test ., I get the following output but the test runner never exit. I have to ctrl-C twice to get back control.

I tried to go through the test runner command line options and searched quickly through this forum and the discord forum but couldn’t find an answer. Am I missing a test runner command line option, or a compiler directive? I have tried odin-macos-arm64-nightly+2025-10-05 and odin-macos-arm64-nightly+2025-11-04 with the same result.

Any help is appreciated.

Output from the test runner (not returning to the shell at the end.

➜  scratch odin test .
[INFO ] --- [2025-11-27 03:14:28] Starting test runner with 1 thread. Set with -define:ODIN_TEST_THREADS=n.
[INFO ] --- [2025-11-27 03:14:28] The random seed sent to every test is: 75933603369649. Set with -define:ODIN_TEST_RANDOM_SEED=n.                                                                          [INFO ] --- [2025-11-27 03:14:28] Memory tracking is enabled. Tests will log their memory usage if there's an issue.                                                                                        [INFO ] --- [2025-11-27 03:14:28] < Final Mem/ Total Mem> <  Peak Mem> (#Free/Alloc) :: [package.test_name]
main  [|                       ]    0/   1 :: test_last                                               1 thread                            0/   1 :: total
^C^C                                                                                                 
➜  scratch

This exits for me on linux kernel 6.17. Maybe this output will help though. It contains some useful information maybe…?

scratch  [|                       ]    0/   1 :: test_last
1 thread                               0/   1 :: total
/home/xuul/Documents/projects/odin/scratch/main.odin(144:11) Index 3 is out of range 0..<3
[INFO ] --- [2025-11-27 04:48:34] Starting test runner with 1 thread. Set with -define:ODIN_TEST_THREADS=n.
[INFO ] --- [2025-11-27 04:48:34] The random seed sent to every test is: 243364099195675. Set with -define:ODIN_TEST_RANDOM_SEED=n.
[INFO ] --- [2025-11-27 04:48:34] Memory tracking is enabled. Tests will log their memory usage if there's an issue.
[INFO ] --- [2025-11-27 04:48:34] < Final Mem/ Total Mem> <  Peak Mem> (#Free/Alloc) :: [package.test_name]
[FATAL] --- [2025-11-27 04:48:34] Caught signal to stop test #0 scratch.test_last for: Illegal_Instruction.
scratch  [|                       ]         1 :: [package done] (1 failed)

Finished 1 test in 535.3µs. The test failed.
- scratch.test_last    Signal caught: Illegal_Instruction

Signals were raised during this test run. Log messages are likely to have collided with each other.
To partly mitigate this, redirect STDERR to a file or use the -define:ODIN_TEST_FANCY=false option.

This last line looks helpful

To partly mitigate this, redirect STDERR to a file or use the -define:ODIN_TEST_FANCY=false option.

Thanks. I was wondering if it was a MacOs problem. I tried odin test . -define:ODIN_TEST_FANCY=false 2>stderr.out and it still hang (i also try each of the suggestion by itself to make sure, same problem).

Once I get a chance I will go look investigate the MacOs signals and what could be different from Linux.