Skip to content

Commit

Permalink
windows: don't return, exit via exit(0) instead
Browse files Browse the repository at this point in the history
This fixes a bug where output would not actually be written to stdout
before exiting the process, leading to a flaky Windows CI. Exiting using
`exit(0)` appears to fix this.

For some background, see: #4589
  • Loading branch information
aykevl committed Nov 19, 2024
1 parent 0087d4c commit 2d26b6c
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/runtime/runtime_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,16 @@ func mainCRTStartup() int {
stackTop = getCurrentStackPointer()
runMain()

// For libc compatibility.
// Exit via exit(0) instead of returning. This matches
// mingw-w64-crt/crt/crtexe.c, which exits using exit(0) instead of
// returning the return value.
// Exiting this way (instead of returning) also fixes an issue where not all
// output would be sent to stdout before exit.
// See: https://github.com/tinygo-org/tinygo/pull/4589
libc_exit(0)

// Unreachable, since we've already exited. But we need to return something
// here to make this valid Go code.
return 0
}

Expand Down

0 comments on commit 2d26b6c

Please sign in to comment.