On Wed, 4 Sep 2024 00:33:06 GMT, Yasumasa Suenaga <[email protected]> wrote:
>> test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackUpcall.java line 57:
>>
>>> 55:
>>> 56: private static void runJstackInLoop(LingeredApp app) throws
>>> Exception {
>>> 57: for (int i = 0; i < MAX_ITERATIONS; i++) {
>>
>> What is the reason for doing 20 iterations. Is it because you are waiting
>> for THREAD_NAME to enter the sleep() call? If so, we've addressed this in
>> the past for the general case of wanting to do a "stable"stack trace by
>> using the LingeredApp's SteadyStateThread. LingeredApp.startApp() will not
>> return until this thread has become stable (blocked). Maybe you can do
>> something similar with THREAD_NAME.
>
> TBH this testcase is based on TestJhsdbJstackMixed.java , so I'm not stick
> this code. I will fix to use SteadyStateThread.
Ok. I think TestJhsdbJstackMixed has a loop because it's trying to get a stack
trace at a point when the thread is executing at a PC that used result in an SA
exception (which is now fixed).
SteadyStateThread might be a bit tricky to integrate into this test since the
test has no control over what the thread does. Possibly with a new LIngeredApp
subclass you could control SteadyStateThread to call your FFM code.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20789#discussion_r1743127430