On Thu, 17 Feb 2022 17:34:41 GMT, Chris Plummer <cjplum...@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
>
>> `classTrack_activate()` is called inside `debugLoop_run()`, so it looks like 
>> that jvmti callback is enabled at the time.
> 
> Yes. This is due to the debugger sending a JDWP EventRequest command for 
> CLASS_UNLOAD events. At that point class tracking is activated and the debug 
> agent enables OBJECT_FREE events.

@plummercj Thanks for the review.

@dholmes-ora Are you okay with current version? Thanks.

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

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

Reply via email to