openbase / bco.dal

Domotic Abstraction Layer
Other
1 stars 2 forks source link

AbstractAggregatedBaseUnitController Deadlock #140

Closed DivineThreepwood closed 5 years ago

DivineThreepwood commented 5 years ago
found one Java-level deadlock:
=============================
"pool-1-thread-2410":
  waiting to lock monitor 0x0000000002293a28 (object 0x00000000c48ebc90, a org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController$1),
  which is held by "pool-1-thread-99"
"pool-1-thread-99":
  waiting for ownable synchronizer 0x00000000c48d71b8, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
  which is held by "pool-1-thread-2"
"pool-1-thread-2":
  waiting to lock monitor 0x0000000002f76108 (object 0x00000000c48d9100, a org.openbase.jul.schedule.SyncObject),
  which is held by "pool-1-thread-182"
"pool-1-thread-182":
  waiting for ownable synchronizer 0x00000000c48d71b8, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
  which is held by "pool-1-thread-2"

Java stack information for the threads listed above:
===================================================
"pool-1-thread-2410":
        at org.openbase.jul.schedule.RecurrenceEventFilter.trigger(RecurrenceEventFilter.java:104)
        - waiting to lock <0x00000000c48ebc90> (a org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController$1)
        at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController$2.notifyServiceUpdate(AbstractAggregatedBaseUnitController.java:89)
        at org.openbase.bco.dal.remote.layer.service.ServiceRemoteManager.lambda$new$0(ServiceRemoteManager.java:95)
        at org.openbase.bco.dal.remote.layer.service.ServiceRemoteManager$$Lambda$114/1971900415.update(Unknown Source)
        at org.openbase.jul.pattern.AbstractObservable.lambda$notifyObservers$0(AbstractObservable.java:276)
        at org.openbase.jul.pattern.AbstractObservable$$Lambda$97/52307912.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
"pool-1-thread-99":
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000c48d71b8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
        at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:943)
        at org.openbase.jul.extension.protobuf.BuilderSyncSetup.lockWrite(BuilderSyncSetup.java:146)
        at org.openbase.jul.extension.protobuf.ClosableDataBuilder.(ClosableDataBuilder.java:42)
        at org.openbase.jul.extension.protobuf.ClosableDataBuilder.(ClosableDataBuilder.java:37)
        at org.openbase.jul.extension.rsb.com.AbstractControllerServer.getDataBuilder(AbstractControllerServer.java:577)
        at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController.updateUnitData(AbstractAggregatedBaseUnitController.java:131)
        at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController.access$000(AbstractAggregatedBaseUnitController.java:58)
        at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController$1.relay(AbstractAggregatedBaseUnitController.java:76)
        at org.openbase.jul.schedule.RecurrenceEventFilter.relay(RecurrenceEventFilter.java:231)
        at org.openbase.jul.schedule.RecurrenceEventFilter.callRelay(RecurrenceEventFilter.java:216)
        at org.openbase.jul.schedule.RecurrenceEventFilter.trigger(RecurrenceEventFilter.java:153)
        - locked <0x00000000c48ebc90> (a org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController$1)
        at org.openbase.jul.schedule.RecurrenceEventFilter.trigger(RecurrenceEventFilter.java:104)
        - locked <0x00000000c48ebc90> (a org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController$1)
        at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController$2.notifyServiceUpdate(AbstractAggregatedBaseUnitController.java:89)
        at org.openbase.bco.dal.remote.layer.service.ServiceRemoteManager.lambda$new$0(ServiceRemoteManager.java:95)
        at org.openbase.bco.dal.remote.layer.service.ServiceRemoteManager$$Lambda$114/1971900415.update(Unknown Source)
        at org.openbase.jul.pattern.AbstractObservable.lambda$notifyObservers$0(AbstractObservable.java:276)
        at org.openbase.jul.pattern.AbstractObservable$$Lambda$97/52307912.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
"pool-1-thread-2":
        at org.openbase.jul.extension.rsb.com.AbstractConfigurableController.getConfig(AbstractConfigurableController.java:187)
        - waiting to lock <0x00000000c48d9100> (a org.openbase.jul.schedule.SyncObject)
        at org.openbase.jul.extension.rsb.com.AbstractConfigurableController.getConfig(AbstractConfigurableController.java:45)
        at org.openbase.bco.dal.lib.layer.unit.Unit.getSupportedServiceTypes(Unit.java:170)
        at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController.updateUnitData(AbstractAggregatedBaseUnitController.java:132)
        at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController.activate(AbstractAggregatedBaseUnitController.java:120)
        at org.openbase.bco.dal.control.layer.unit.location.LocationControllerImpl.activate(LocationControllerImpl.java:150)
        at org.openbase.jul.storage.registry.ActivatableEntryRegistrySynchronizer.register(ActivatableEntryRegistrySynchronizer.java:61)
        at org.openbase.jul.storage.registry.RegistrySynchronizer.register(RegistrySynchronizer.java:96)
        at org.openbase.jul.storage.registry.RegistrySynchronizer.register(RegistrySynchronizer.java:44)
        at org.openbase.jul.storage.registry.AbstractSynchronizer.registerInternal(AbstractSynchronizer.java:273)
        at org.openbase.jul.storage.registry.AbstractSynchronizer.internalSync(AbstractSynchronizer.java:185)
        - locked <0x00000000c344a9b8> (a org.openbase.jul.schedule.SyncObject)
        at org.openbase.jul.storage.registry.AbstractSynchronizer.activate(AbstractSynchronizer.java:116)
        at org.openbase.jul.storage.registry.ActivatableEntryRegistrySynchronizer.activate(ActivatableEntryRegistrySynchronizer.java:90)
        at org.openbase.bco.dal.control.layer.unit.location.LocationManagerImpl.activate(LocationManagerImpl.java:98)
        at org.openbase.jul.pattern.launch.AbstractLauncher.launch(AbstractLauncher.java:193)
        - locked <0x00000000c3178d78> (a org.openbase.jul.schedule.SyncObject)
        at org.openbase.jul.pattern.launch.AbstractLauncher.lambda$main$0(AbstractLauncher.java:336)
        at org.openbase.jul.pattern.launch.AbstractLauncher$$Lambda$18/1793436274.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
"pool-1-thread-182":
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000c48d71b8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
        at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:943)
        at org.openbase.jul.extension.rsb.com.AbstractControllerServer.setDataField(AbstractControllerServer.java:716)
        at org.openbase.jul.extension.rsb.com.AbstractConfigurableController.applyConfigUpdate(AbstractConfigurableController.java:101)
        - locked <0x00000000c48d9100> (a org.openbase.jul.schedule.SyncObject)
        at org.openbase.bco.dal.control.layer.unit.AbstractUnitController.applyConfigUpdate(AbstractUnitController.java:429)
        at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController.applyConfigUpdate(AbstractAggregatedBaseUnitController.java:101)
        - locked <0x00000000c48d7328> (a org.openbase.bco.dal.control.layer.unit.location.LocationControllerImpl)
        at org.openbase.bco.dal.control.layer.unit.AbstractUnitController$1.update(AbstractUnitController.java:191)
        at org.openbase.bco.dal.control.layer.unit.AbstractUnitController$1.update(AbstractUnitController.java:185)
        at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:257)
        - locked <0x00000000c32eac08> (a org.openbase.jul.pattern.AbstractObservable$2)
        at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:189)
        at org.openbase.jul.extension.rsb.com.AbstractRemoteClient.applyDataUpdate(AbstractRemoteClient.java:1486)
        at org.openbase.jul.extension.rsb.com.AbstractRemoteClient.applyEventUpdate(AbstractRemoteClient.java:1098)
        - locked <0x00000000c32eac60> (a org.openbase.jul.schedule.SyncObject)
        at org.openbase.jul.extension.rsb.com.AbstractRemoteClient.access$1000(AbstractRemoteClient.java:72)
        at org.openbase.jul.extension.rsb.com.AbstractRemoteClient$SyncTaskCallable.call(AbstractRemoteClient.java:1819)
        at org.openbase.jul.extension.rsb.com.AbstractRemoteClient$SyncTaskCallable.call(AbstractRemoteClient.java:1683)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

Found 1 deadlock.

Heap
 PSYoungGen      total 97792K, used 62607K [0x00000000eba00000, 0x00000000fe200000, 0x0000000100000000)
  eden space 95744K, 63% used [0x00000000eba00000,0x00000000ef593c80,0x00000000f1780000)
  from space 2048K, 78% used [0x00000000fe000000,0x00000000fe190010,0x00000000fe200000)
  to   space 2560K, 0% used [0x00000000fdd00000,0x00000000fdd00000,0x00000000fdf80000)
 ParOldGen       total 91136K, used 49352K [0x00000000c2e00000, 0x00000000c8700000, 0x00000000eba00000)
  object space 91136K, 54% used [0x00000000c2e00000,0x00000000c5e322e0,0x00000000c8700000)
 Metaspace       used 50034K, capacity 54562K, committed 54744K, reserved 1097728K
  class space    used 5536K, capacity 6256K, committed 6360K, reserved 1048576K
DivineThreepwood commented 5 years ago

Close because deadlock already described by openbase/bco.dal#142.