Pipe already is using lock on the inode. If you read from pipe when there was no data, pipe blocked indefinately since writes were blocked by Inode::m_lock.