shenandoah-dev Digest, Vol 100, Issue 40

Kirill A. Korinsky kirill at korins.ky
Fri Jan 19 21:38:04 UTC 2024


Hi Ramki,

On Fri, 19 Jan 2024 22:14:30 +0100,
Ramakrishna, Ramki wrote:
> 
> > Until I've figured out how to reproduce it, I have no idea how to trace it on
> > production environment without perofrmance degradation and it's clearly that
> > both -Xlog:safepoint=trace and -XX:+SafepointALot aren't an option here :(
> 
> Perhaps try `-XX:+SafepointTimeout` along with a suitably high value for the associated `-XX: SafepointTimeoutDelay=` value?
> 
> Here are their respective defaults:
> 
>   product(bool, SafepointTimeout, false,                                    \
>           "Time out and warn or fail after SafepointTimeoutDelay "          \
>           "milliseconds if failed to reach safepoint")                      \
>                                                                             \
> 
>   product(double, SafepointTimeoutDelay, 10000,                             \
>           "Delay in milliseconds for option SafepointTimeout; "             \
>           "supports sub-millisecond resolution with fractional values.")    \
>           range(0, max_jlongDouble LP64_ONLY(/MICROUNITS))                  \


I'm a bit lost here: how does it help in case of deadlock?

As far as I understand the vlaue should be high enough to not produce a lot of
logs, for example 500ms.

But, I don't understand how can it dump anything when the deadlock is had
happened, because all threads are blocked and simple wait.

From another hand I have better idea. Let call some function on that state via
GDB, print_safepoint_timeout() or something else?

-- 
wbr, Kirill


More information about the shenandoah-dev mailing list