RFR: 8281615: Deadlock caused by jdwp agent [v4]

Chris Plummer cjplummer at openjdk.java.net
Thu Feb 17 05:31:04 UTC 2022


On Thu, 17 Feb 2022 05:21:06 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:

>> Bah! But then a comment after that says it does exist again.
>> 
>> There seem to be issues understanding exactly what the concurrent call sequences can be with this code.
>
> I think you might be confusing `classTrack_activate()` with `classTrack_reset()`. I believe the former has a race but the latter does not.

...and even with the race, I still I think it is safe for a new `bagSize(deletedSignatures) == 0` check to be  added outside the lock. The only thing `classTrack_activate()` can do to `deletedSignatures` is set it when it is null. There is no risk of `deletedSignatures` being deleted and reallocated by another thread once you are in `classTrack_processUnloads()`. This is because it is called while holding the `handlerLock`, and as I explained elsewhere, by the time `classTrack_reset()` is called,  it's no longer possible to be in `classTrack_processUnloads()`.

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

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


More information about the serviceability-dev mailing list