RFR: 8072701: resume001 failed due to ERROR: timeout for waiting for a BreakpintEvent

David Holmes dholmes at openjdk.org
Thu Jul 11 01:59:56 UTC 2024


On Wed, 10 Jul 2024 23:09:05 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:

>> Adding a `sleep()` between two statements does not scale when the test in
>> question is under different loads or run with different options. All it will do
>> is make a hang more rare (and frustrating to analyze).
>> 
>> We do use short sleeps when we are in a while-loop checking on a condition
>> of some sort that indicates that the "thing" for which we are waiting to happen
>> has happened.
>
> I believe we've done quite a few short sleeps like this in the past. Scaling is not really an issue. It should only require at most a few ms, even with -Xcomp, so we wait 1000ms and then never have to think about the timing again. This test is ugly. Sometimes you have to fight ugly with ugly.

> mainThead is suspended and is holding a println related lock, and thread2 is stuck on the 2nd log call in runt2 awaiting the same lock.

The classic example of why suspension is fraught with peril - the target must be guaranteed not to be holding any resource needed by the suspender. I think removing the logging may be the best bet here - with comments in the code to ensure someone does not add it back. Or else use a more primitive (native?) mechanism to do the logging, not  System.out.println().

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20088#discussion_r1673290543


More information about the serviceability-dev mailing list