RFR: 8296089: Remove debug agent code for special handling of Thread.resume()

Chris Plummer cjplummer at openjdk.org
Fri Nov 4 04:36:26 UTC 2022


On Mon, 31 Oct 2022 19:08:14 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:

> The debug agent sets a breakpoint in Thread.resume() so it can prevent the debugger from suspending threads while in the resume call:
> 
>              /*
>               * Track the resuming thread by marking it as being within
>               * a resume and by setting up for notification on
>               * a frame pop or exception. We won't allow the debugger
>               * to suspend threads while any thread is within a
>               * call to resume. This (along with the block below)
>               * ensures that when the debugger
>               * suspends a thread it will remain suspended.
>               */
>              trackAppResume(resumer);
> 
> Now that Thread.resume() is unsupported and just throws UnsupportedOperationException, all debug agent code related to this support can be removed. It's at least a couple of hundred lines of code, and with a fair amount of confusing synchronization. It will be nice to see it go. 
> 
> Also, there is a little bit of code to deal with the app calling Thread.suspend(). I'm a bit unsure of it's removal, because I'm not certain if we also need to consider another JVMTI agent doing a suspend. However, we don't seem to defend against another JVMTI agent resuming a thread, so maybe the debug agent is just not expected to work if another JVMTI agent interferes.  I would appreciate some insight on this possibility. I've called out this code in the inlined review comments.

Ping! I'm still looking for two reviews. thanks.

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

PR: https://git.openjdk.org/jdk/pull/10922


More information about the serviceability-dev mailing list