RFR(S) 8222500: runtime/8176717/TestInheritFD.java failed with java.nio.file.NoSuchFileException: /tmp/communication7071713601211876892.txt
Harold Seigel
harold.seigel at oracle.com
Fri May 3 13:12:42 UTC 2019
Thanks David!
I looked at the hotspot tests that call createTempFile(). They all
either call deleteOnExit() or use some other means to delete the temp file.
Harold
On 5/2/2019 11:12 PM, David Holmes wrote:
> Hi Harold,
>
> On 3/05/2019 12:00 am, Harold Seigel wrote:
>> Hi David,
>>
>> I don't see how it is possible for any of the test's VM's to delete
>> the temp file because there is no code in the test to delete a file.
>> Files created by calling java.io.File.createTempFile() are not
>> automatically deleted by the JVM unless java.io.File.deleteOnExit()
>> is called. This test does not make any calls to deleteOnExit() nor
>> to any other file deletion API's.
>
> Sorry I misunderstood what you meant when you said
>
> "And, secondly, that the temporary files will get cleaned up. "
>
> I thought you meant that the change to Utils.createTempFile was taking
> care of that (by setting deleteOnExit). But you just meant jtreg would
> take care of it.
>
> Aside: we have many dozens of tests in OpenJDK that use
> File.createTempFile, including a few other hotspot tests. We should do
> a general cleanup to fix this.
>
> Thanks,
> David
> -----
>
>> Without this proposed fix, the test's temp files are not deleted at
>> all. You can see this by running the test locally on Linux and then
>> looking at /tmp. You will see that the temp files are still in /tmp
>> even after the test successfully completed..
>>
>> Note that this test has only failed twice with NoSuchFileException in
>> the last five months, both times on Linux. So, this is not a Windows
>> issue.
>>
>> Thanks, Harold
>>
>> On 5/1/2019 10:51 PM, David Holmes wrote:
>>> Hi Harold,
>>>
>>> On 2/05/2019 4:25 am, Harold Seigel wrote:
>>>> Hi,
>>>>
>>>> Please review this fix for JDK-8222500. The fix changes the test
>>>> to use jdk.test.lib.Utils.createTempFile(), instead of
>>>> java.io.File.createTempFile(). This means that the temporary files
>>>> will no longer be created in /tmp/, where they can potentially be
>>>> changed or deleted by other processes. And, secondly, that the
>>>> temporary files will get cleaned up.
>>>
>>> I can't clearly see how the temporary file is used by each VM nor
>>> how the VM lifecycles are coordinated. Is it possible that the
>>> initial VM could terminate and attempt to delete the file while it
>>> is still in use by one of the other VMs? If so that sounds like we
>>> will have problems on Windows.
>>>
>>> Thanks,
>>> David
>>>
>>>> Open Webrev:
>>>> http://cr.openjdk.java.net/~hseigel/bug_8222500/webrev/index.html
>>>>
>>>> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-8222500
>>>>
>>>> The modified test was run successfully on Linux-X64, Mac, and Windows.
>>>>
>>>> Thanks, Harold
>>>>
More information about the hotspot-runtime-dev
mailing list