RFR (XS) 8232534: Shenandoah: guard against reentrant ShenandoahHeapLock locking

Roman Kennke rkennke at redhat.com
Thu Oct 17 18:13:53 UTC 2019


Yep, good and useful.

Roman


> RFE:
>   https://bugs.openjdk.java.net/browse/JDK-8232534
> 
> This one was very useful for debugging:
> 
> diff -r 55fe0d93bdd3 src/hotspot/share/gc/shenandoah/shenandoahLock.hpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahLock.hpp        Tue Oct 15 22:22:23 2019 -0400
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahLock.hpp        Thu Oct 17 18:59:27 2019 +0200
> @@ -39,10 +39,13 @@
> 
>  public:
>    ShenandoahLock() : _state(unlocked), _owner(NULL) {};
> 
>    void lock() {
> +#ifdef ASSERT
> +    assert(_owner != Thread::current(), "reentrant locking attempt, would deadlock");
> +#endif
>      Thread::SpinAcquire(&_state, "Shenandoah Heap Lock");
>  #ifdef ASSERT
>      assert(_state == locked, "must be locked");
>      assert(_owner == NULL, "must not be owned");
>      _owner = Thread::current();
> 
> Testing: hotspot_gc_shenandoah; multiple assert failures due to bugs in development
> 




More information about the hotspot-gc-dev mailing list