-
Notifications
You must be signed in to change notification settings - Fork 25
Open
Description
orb/orbmain/src/main/java/com/sun/corba/ee/impl/oa/poa/POAImpl.java
Lines 1000 to 1002 in 713fe92
| } finally { | |
| if (readLocked) { readUnlock() ; } // Issue 14917: was unlock() | |
| } |
Should read
} finally {
if (readLocked) { readUnlock() ; **readLocked = false ;** } // Issue 14917: was unlock()
}By not setting readLocked to false the cleanUpLocks call will throw the exception. Throughout the find_POA method every time a lock is released the corresponding flag is updated, except this one case.
cleanUpLocks( child, readLocked, writeLocked, childReadLocked ) ;
Example exception:
java.lang.IllegalMonitorStateException: attempt to unlock read lock, not locked by current thread
at java.base/java.util.concurrent.locks.ReentrantReadWriteLock$Sync.unmatchedUnlockException(ReentrantReadWriteLock.java:448)
at java.base/java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:432)
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1146)
at java.base/java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:897)
at com.sun.corba.ee.impl.oa.poa.POAImpl.readUnlock(POAImpl.java:388)
at com.sun.corba.ee.impl.oa.poa.POAImpl.**cleanUpLocks**(POAImpl.java:1089)
at com.sun.corba.ee.impl.oa.poa.POAImpl.**find_POA**(POAImpl.java:1010)
Metadata
Metadata
Assignees
Labels
No labels