RFR: JDK-8232834: RunTest sometimes fails to produce valid exitcode.txt
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Wed Oct 23 07:42:50 UTC 2019
On 2019-10-22 23:07, Erik Joelsson wrote:
> When RunTest.gmk runs jtreg tests, it prints the exitcode of jtreg
> into a file named exitcode.txt. Soemtimes, this fails and the
> exitcode.txt file is left empty. This is causing trouble in automated
> testing where the surrounding framework is expecting to check the
> result in that file.
>
> I believe this is caused by a race in bash. We have seen similar races
> before and there is even a comment about it in the documentation for
> the ExecuteWithLog macro. If there is redirect of stdout in a command
> executed by ExecuteWithLog, that command must be surrounded by parens
> to run in a subshell. I first discovered this solution in JDK-8158629.
Yikes! It's not the first time, yes. Do you think it would make sense to
put in the extra parenthesis in the ExecuteWithLog itself? I guess the
main problem with this is that we incur an extra shell invocation for
each call, even if it's not needed. Normally this would not be even
noticeable, but on Windows it might..? Otoh, being race free is more
important, and leaving the responsibility for this to the caller of
ExecuteWithLog is just too easy to get wrong, as we have seen multiple
times.
>
> This patch puts parens around the jtreg and other test framework calls
> in RunTest.gmk.
>
> Webrev: http://cr.openjdk.java.net/~erikj/8232834/webrev.jdk14.01/
Looks good to me. Even if we decide to change ExecuteWithLog itself
later on, I think it makes sense to fix this here and now.
/Magnus
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8232834
>
> /Erik
>
More information about the build-dev
mailing list