RFR: 8229899: java.io.File.isInvalid() is racy

Arthur Eubanks aeubanks at google.com
Mon Aug 19 23:14:23 UTC 2019

Bug: https://bugs.openjdk.java.net/browse/JDK-8229899
Webrev: http://cr.openjdk.java.net/~aeubanks/8229899/webrev.00/

    final boolean isInvalid() {
        if (status == null) {
            status = (this.path.indexOf('\u0000') < 0) ? PathStatus.CHECKED
        return status == PathStatus.INVALID;
If the reads to "status" are reordered and another thread writes to
"status", the return value can be wrong.
Reading "status" to a local variable fixes the issue.

More information about the core-libs-dev mailing list