RFR 8240902: JDI shared memory connector can use already closed Handles

Daniel D. Daugherty daniel.daugherty at oracle.com
Wed Mar 18 21:37:30 UTC 2020


Patricio,

This is a separate follow up about the jshell tests. Since I have been
tracking these as part of my GK work and filed a number of those bugs,
I figured I would help analyze them...

JDK-8209848 test/langtools/jdk/jshell tests failed with Accept timed out
https://bugs.openjdk.java.net/browse/JDK-8209848

     This bug has been linked to sightings on Linux-X64, SPARC and Win-X64.
     While this fix should reduce the number of sightings on Win-X64, it
     won't help for Linux-X64 or SPARC.

https://mach5.us.oracle.com/mdash/bugHistory?search=bugId%3AJDK-8209848

JDK-8184445 JShell tests: fail intermittently if tests are run in high 
concurrent mode.
https://bugs.openjdk.java.net/browse/JDK-8184445

     The tests you mention below are also mentioned in this bug.

     This bug has been linked to sightings on Linux-X64, OSX, SPARC and
     Win-X64. While this fix should reduce the number of sightings on
     Win-X64, it won't help for Linux-X64, OSX, or SPARC.

https://mach5.us.oracle.com/mdash/bugHistory?search=bugId%3AJDK-8184445

JDK-8173079 JShell test: jdk/jshell/UserJdiUserRemoteTest.java fails 
intermittently
https://bugs.openjdk.java.net/browse/JDK-8173079

     I have high hopes that this bug (on Win*) will be addressed by
     this fix (8240902) because this test uses JDI...

     Most of the sightings for this bug are for Win-X64 and few SPARC.
     The bug also mentions Linux sightings, but I don't see any current
     links for Linux:

https://mach5.us.oracle.com/mdash/bugHistory?search=bugId%3AJDK-8173079

     So this fix should help with Win* sightings, but not Linux or SPARC.

JDK-8190912 jdk/jshell/JdiHangingListenExecutionControlTest.java failed with
             timeout waiting for connection
https://bugs.openjdk.java.net/browse/JDK-8190912

     I have high hopes that this bug (on Win*) will be addressed by
     this fix (8240902) because this test uses JDI...

     Most of the sightings for this bug are for Win-X64; there is one
     Linux and one OSX.

https://mach5.us.oracle.com/mdash/bugHistory?search=bugId%3AJDK-8190912

     So this fix should help with Win* sightings, but not Linux or OSX.

JDK-8207166 langtools/jdk/jshell/JdiHangingLaunchExecutionControlTest.java
https://bugs.openjdk.java.net/browse/JDK-8207166

     I have high hopes that this bug will be addressed by this fix
     (8240902) because this test uses JDI...

     The one linked sighting with platform info is for Win-X64.

https://mach5.us.oracle.com/mdash/bugHistory?search=bugId%3AJDK-8207166

JDK-8235780 jdk/jshell/FailOverExecutionControlDyingLaunchTest.java 
fails during setup
https://bugs.openjdk.java.net/browse/JDK-8235780

     I have high hopes that this bug (on Win*) will be addressed by
     this fix (8240902) because this test uses JDI...

     This bug has been linked to sightings on Linux-X64 and Win-X64.
     While this fix should reduce the number of sightings on Win-X64,
     it won't help for Linux-X64.

https://mach5.us.oracle.com/mdash/bugHistory?search=bugId%3AJDK-8235780

JDK-8239930 jdk/jshell/UserJdiUserRemoteTest.java fails due to agentvm 
mode timeout
https://bugs.openjdk.java.net/browse/JDK-8239930

     I have high hopes that this bug will be addressed by this fix
     (8240902) because this test uses JDI...

     Both sightings linked to this bug are for Win-X64:

https://mach5.us.oracle.com/mdash/bugHistory?search=bugId%3AJDK-8239930

JDK-8240531 jshell/FailOverExecutionControlDyingLaunchTest.java fails 
due to agentvm mode timeout
https://bugs.openjdk.java.net/browse/JDK-8240531

     I have high hopes that this bug will be addressed by this fix
     (8240902) because this test uses JDI...

     The three sightings linked to this bug are for Win-X64:

https://mach5.us.oracle.com/mdash/bugHistory?search=bugId%3AJDK-8240531


Okay... that's it for the jshell bugs that I track that have been
spotted on Win-X64 (and usually other platforms too).

Dan


On 3/17/20 4:14 PM, Patricio Chilano wrote:
> Hi all, ...
>
> Please review the following patch:
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8240902
> Webrev: http://cr.openjdk.java.net/~pchilanomate/8240902/v1/webrev/
>
> Calling closeConnection() on an already created/opened connection 
> includes calls to CloseHandle() on objects that can still be used by 
> other threads. This can lead to either undefined behavior or, as 
> detailed in the bug comments, changes of state of unrelated objects. 
> This issue was found while debugging the reason behind some jshell 
> test failures seen after pushing 8230594. Not as important, but there 
> are also calls to closeStream() from createStream()/openStream() when 
> failing to create/open a stream that will return after executing 
> "CHECK_ERROR(enterMutex(stream, NULL));" without closing the intended 
> resources. Then, calling closeConnection() could assert if the reason 
> of the previous failure was that the stream's mutex failed to be 
> created/opened. These patch aims to address these issues too.
>
> Tested in mach5 with the current baseline, tiers1-3 and several runs 
> of open/test/langtools/:tier1 which includes the jshell tests where 
> this connector is used. I also applied patch 
> http://cr.openjdk.java.net/~pchilanomate/8240902/triggerbug/webrev 
> mentioned in the comments of the bug, on top of the baseline and run 
> the langtool tests with and without this fix. Without the fix running 
> around 30 repetitions already shows failures in tests 
> jdk/jshell/FailOverExecutionControlTest.java and 
> jdk/jshell/FailOverExecutionControlHangingLaunchTest.java. With the 
> fix I run several hundred runs and saw no failures. Let me know if 
> there is any additional testing I should do.
>
> As a side note, I see there are a couple of open issues related with 
> jshell failures (8209848) which could be related to this bug and 
> therefore might be fixed by this patch.
>
> Thanks,
> Patricio
>



More information about the serviceability-dev mailing list