RFR: 8281615: Deadlock caused by jdwp agent [v4]
Zhengyu Gu
zgu at openjdk.java.net
Thu Feb 17 13:45:05 UTC 2022
On Thu, 17 Feb 2022 02:25:15 GMT, David Holmes <dholmes at openjdk.org> wrote:
> The correctness here depends on exactly how these different functions can be called. I would have expected the allowed sequence to be: activate -> 1or more processUnloads -> reset
>
> but given processUnloads can somehow occur concurrently with activate, there is obviously more at play here. The main question for me is whether reset can be called more than once and whether it too can be called when processUnloads is still executing? If yes then there are still problems.
`classTrack_activate()` is called inside `debugLoop_run()`, so it looks like that jvmti callback is enabled at the time.
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libjdwp.so+0xf0ea] classTrack_activate+0x3a
C [libjdwp.so+0x166dd] installHandler+0xdd
C [libjdwp.so+0x618c] setCommand+0x17c
C [libjdwp.so+0x13cd9] debugLoop_run+0x299
C [libjdwp.so+0x275e4] attachThread+0x54
V [libjvm.so+0x12be611] JvmtiAgentThread::call_start_function()+0x181
V [libjvm.so+0x1a9e496] JavaThread::thread_main_inner()+0x5c6
V [libjvm.so+0x1aa7100] Thread::call_run()+0x100
V [libjvm.so+0x1666814] thread_native_entry(Thread*)+0x104
-------------
PR: https://git.openjdk.java.net/jdk/pull/7461
More information about the serviceability-dev
mailing list