On Mon, 6 Nov 2023 06:16:20 GMT, Alan Bateman <[email protected]> wrote:
>> My question exactly. I'm not even sure why wrong phase is allowed here.
>
> Is the issue here that agent thread started by Debuggee.checkStatus is racing
> with the test? The producer/consumer thread do 1000 put/take ops and it looks
> like it can complete and VM commence shutdown while the agent thread is
> observing, do I read this correctly?
Thank you for the comments.
Alex, you are right.
I've misread this code at line 201:
199 err = jvmti->SuspendThread(vthread);
200 if (err == JVMTI_ERROR_THREAD_NOT_ALIVE) {
201 continue;
202 }
203 check_jvmti_status(jni, err, "Error in SuspendThread");
204 // LOG("Agent: suspended vt: %s ct: %s\n", vname, cname);
205
206 check_vthread_consistency_suspended(jvmti, jni, vthread);
The function `check_vthread_consistency_suspended()` is not called when if the
`SuspendThread` returned `JVMTI_ERROR_THREAD_NOT_ALIVE` error code.
It does not look as a test bug then.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16488#discussion_r1383912422