Unless I call os::exit manually. Why? Probably because we need the stdlib's main function to return zero to libc.
Drew DeVault referenced this ticket in commit bbb19b4.
I noticed that _start is provided by libc, so I wonder how libc knows to invoke the hare initialization? I think it might be just jumping straight to main and skipping your initialization (and exit) code.