RFR: 8330303: Crash: assert(_target_jt == nullptr || _target_jt->vthread() == target_h()) failed [v4]

Serguei Spitsyn sspitsyn at openjdk.org
Wed Apr 24 09:59:54 UTC 2024


> This is a simple fix of three similar asserts.
> The `_target_jt->jvmti_vthread()` has to be used instead of `_target_jt->vthread()`. 
> The `_target_jt->vthread()` can be outdated in some specific contexts as shown in the `hs_err` stack trace.
> 
> I've seen similar issue and already fixed it in this fragment of code:
> 
> class GetCurrentLocationClosure : public JvmtiUnitedHandshakeClosure {
>   . . .
>   void do_vthread(Handle target_h) {
>     assert(_target_jt == nullptr || !_target_jt->is_exiting(), "sanity check");
>     // use jvmti_vthread() as vthread() can be outdated
>     assert(_target_jt == nullptr || _target_jt->jvmti_vthread() == target_h(), "sanity check");
>     . . .
> 
> The issue above was fixed by replacing `_target_jt->vthread()` with `_target_jt->jvmti_vthread()`.
> 
> There are three places which need to be fixed the same way:
>  - `GetSingleStackTraceClosure::do_vthread(Handle target_h)`
>  - `SetForceEarlyReturn::do_vthread(Handle target_h)`
>  - `UpdateForPopTopFrameClosure::do_vthread(Handle target_h)`
> 
> Testing:
>  - Run mach5 tiers 1-6

Serguei Spitsyn has updated the pull request incrementally with one additional commit since the last revision:

  review: fixed typo in same comment in several spots

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/18806/files
  - new: https://git.openjdk.org/jdk/pull/18806/files/c5ad80d0..643c3046

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=18806&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=18806&range=02-03

  Stats: 4 lines in 3 files changed: 0 ins; 0 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/18806.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/18806/head:pull/18806

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


More information about the serviceability-dev mailing list