LinuxDebuggerLocal has worker thread (LinuxDebuggerLocalWorkerThread) to call 
ptrace(2) because it have to call from same thread.

LinuxDebuggerLocalWorkerThread does not have queue, so it depends on 
synchronized statement as following:

https://github.com/openjdk/jdk/blob/66d9961cbd83dbfca20b0af3c20693438d4aff3f/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java#L156-L192

If `execute()` is called in same time, `task` would be broken.
Fortunately all of caller of `execute()` are guarded with `synchronized` now. 
But task worker should be more robustness.

I used `Executors::newSingleThreadExecutor`, so we don't need to take care task 
queue.

I tested this change with serviceability/sa jtreg tests on Linux x64.

-------------

Commit messages:
 - 8264639: SA: Worker thread for ptrace on Linux should be more robustness

Changes: https://git.openjdk.java.net/jdk/pull/3321/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3321&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8264639
  Stats: 172 lines in 1 file changed: 17 ins; 108 del; 47 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3321.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3321/head:pull/3321

PR: https://git.openjdk.java.net/jdk/pull/3321

Reply via email to