-
Notifications
You must be signed in to change notification settings - Fork 721
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JVMTI MethodExitTest test fails with JVMTI_ERROR_OPAQUE_FRAME error #17490
Comments
Note that RI's continuation class doesn't have the |
OpenJ9's |
After adding code to skip methods with JvmtiMountTransition annotation, the JVMTI_ERROR_OPAQUE_FRAME error is gone but the test would still fail most of the time due to MethodExit event reported between the first and the second brake point hit (it's check here). Between the two brake point hits, the producer thread may yield so the MethodExit event seems completely normal to me. Also, modifying the agent code can easily mess up the result. For example, enabling MethodEnter event causes the RI to fail but MethodEnter event shouldn't affect the test result at all. |
@thallium Please create a PR for the work associated with the JvmtiMountTransition annotation.
@thallium To verify if our understanding and assumptions of the test are correct, please share your findings with the loom-dev mailing list: https://mail.openjdk.org/mailman/listinfo/loom-dev. You will have to subscribe before posting a message. We will address this issue once we receive feedback from the loom-dev mailing list. |
…nnotation Since it's only related to JVMTI, a walk state flag is added to enable the behaviour when doing JVMTI-related stack walk. Related: eclipse-openj9#17490 Signed-off-by: Gengchen Tuo <gengchen.tuo@ibm.com>
Java methods tagged with the JvmtiMountTransition annotation are involved in transitioning between carrier to virtual threads, and vice-versa. These methods are not part of the thread's scope. So, they are skipped during introspection by the following JVMTI functions: - ForceEarlyReturn - NotifyFramePop - Local Variable (GetOrSetLocal) This PR allows us to match the RI in jvmti/vthread/MethodExitTest. Related eclipse-openj9#17490 Closes eclipse-openj9#17758 Co-authored-by: Gengchen Tuo <gengchen.tuo@ibm.com> Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
eclipse-openj9/openj9#17125 fixes framepop02.java#id1, and it was embedded in eclipse-openj9/openj9#17514 and merged. Now, the MethodExitTest failure is being tracked through eclipse-openj9/openj9#17490. Closes eclipse-openj9/openj9#16346 Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
eclipse-openj9/openj9#17125 fixes framepop02.java#id1, and it was embedded in eclipse-openj9/openj9#17514 and merged. Now, the MethodExitTest failure is being tracked through eclipse-openj9/openj9#17490. Closes eclipse-openj9/openj9#16346 Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
ConclusionThe test explicitly checks that no Test Source CodeProblem
In Between But, the
Stack traces
|
Discussion from the loom-dev mailing list: The initial intent of the test was to run two carrier threads with |
MethodExitTest is being permanently disabled. See eclipse-openj9/openj9#17490 for more details on why MethodExitTest is being permanently disabled. But it didn't correctly point to adoptium#1297. It pointed to an OpenJ9 issue. This PR also corrects the link to adoptium#1297 for MovingCompWindow and ToggleNotifyJvmtiTest. Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
MethodExitTest is being permanently disabled. See eclipse-openj9/openj9#17490 for more details on why MethodExitTest is being permanently disabled. MovingCompWindow and ToggleNotifyJvmtiTest were permanently disabled in issue. This PR also corrects the link to adoptium#1297 for MovingCompWindow and ToggleNotifyJvmtiTest. Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
MethodExitTest is being permanently disabled. See eclipse-openj9/openj9#17490 for more details on why MethodExitTest is being permanently disabled. MovingCompWindow and ToggleNotifyJvmtiTest were permanently disabled in adoptium#4737. But it didn't correctly point to adoptium#1297. It pointed to an OpenJ9 issue. This PR also corrects the link to adoptium#1297 for MovingCompWindow and ToggleNotifyJvmtiTest. Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
MethodExitTest is being permanently disabled. See eclipse-openj9/openj9#17490 for more details on why MethodExitTest is being permanently disabled. MovingCompWindow and ToggleNotifyJvmtiTest were permanently disabled in adoptium#4737. But it didn't correctly point to adoptium#1297. It pointed to an OpenJ9 issue. This PR also corrects the link to adoptium#1297 for MovingCompWindow and ToggleNotifyJvmtiTest. Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
Opened adoptium/aqa-tests#4777 to permanently disable MethodExitTest. |
MethodExitTest is being permanently disabled. See eclipse-openj9/openj9#17490 for more details on why MethodExitTest is being permanently disabled. MovingCompWindow and ToggleNotifyJvmtiTest were permanently disabled in #4737. But it didn't correctly point to #1297. It pointed to an OpenJ9 issue. This PR also corrects the link to #1297 for MovingCompWindow and ToggleNotifyJvmtiTest. Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
Closing: adoptium/aqa-tests#4777 has been merged and it permanently disables MethodExitTest. |
Issue
The test failed due to the NotifyFramePop of the breakpoint-1 function. After looking into the stack trace, it was discovered that the enterImpl()Z(enterContinuationImpl) method was being attempted to be popped by the NotifyFramePop, which results in the JVMTI_ERROR_OPAQUE_FRAME problem.
There are other NotifyFramePop calls in the test, which fail with the same error but at different methods:
RI behavior: The same functions in the RI are skipped or hidden during the NotifyFramePop. We can follow the same behavior as RI to fix the test. Any of the below approach can be used to fix the issue.
This means that the RI is ignoring/skipping/hidding methods that are involved to transition the context from a carrier thread to a virtual thread, and vice-versa. The context switch (internal) workings are being hidden from a Java user.
Context switch (internal) workings will also include the following methods:
There are three solutions:
Test Code
Test CMD
Test Output
The text was updated successfully, but these errors were encountered: