On Wed, 4 Sep 2024 00:33:06 GMT, Yasumasa Suenaga <ysuen...@openjdk.org> 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

Reply via email to