(1) FIFOReadWriteLock - * Interference: line 84 (readers incremented without holding onto a lock) * Deadly embrace: acquireRead (lines 52-55) acquires lock of this followed by entryLock whilst acquireWrite (lines 64-72) acquires entryLock followed by this (2) Mutex - * Interference: line 29 (in_use changed without holding onto a lock) * Encapsulation of shared variables: line 21 (in_use is protected and not private and therefore can be modified outside this class) * Wait not in loop: line 27 * Wait condition incorrect: line 52 (it should be if (!in_use) and then in_use can be set to true) (3) ReaderWriterSync - * Lock reassignment: line 52 (readLock=writeLock;) * Deadly embrace: safeReleaseRead (lines 29-36) acquires readLock and then writeLock, whilst safeReleaseWrite (lines64-72) acquires writeLock and then readLock (4) Piper - * Wait not in loop: line 47 * notify instead of notifyAll: line 55