mirror of https://github.com/golang/go.git
runtime: call fflush before exiting in C test
Very, very rarely TestVectoredHandlerDontCrashOnLibrary fails because the C subprocess exits with a 0 status code and no output. This appears to happen because C does not actually guarantee that stdout will be flushed on exit and somehow, very rarely, it is not flushed. Add explicit fflushes to fix this. This reduces the failure rate of TestVectoredHandlerDontCrashOnLibrary from 0.0013% to 0% in 250,000 iterations. Fixes #49959. Change-Id: I892cf49a165ac91134c5da37588a2ab11e1f3f8b Reviewed-on: https://go-review.googlesource.com/c/go/+/380494 Trust: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com>
This commit is contained in:
parent
0ef6dd7440
commit
19d819d49c
|
|
@ -41,17 +41,20 @@ int main()
|
|||
if (NULL == exceptionHandlerHandle)
|
||||
{
|
||||
printf("cannot add vectored exception handler\n");
|
||||
fflush(stdout);
|
||||
return 2;
|
||||
}
|
||||
void *continueHandlerHandle = AddVectoredContinueHandler(0, customContinueHandlder);
|
||||
if (NULL == continueHandlerHandle)
|
||||
{
|
||||
printf("cannot add vectored continue handler\n");
|
||||
fflush(stdout);
|
||||
return 2;
|
||||
}
|
||||
CallMeBack(throwFromC);
|
||||
RemoveVectoredContinueHandler(continueHandlerHandle);
|
||||
RemoveVectoredExceptionHandler(exceptionHandlerHandle);
|
||||
printf("exceptionCount: %d\ncontinueCount: %d\n", exceptionCount, continueCount);
|
||||
fflush(stdout);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue