Index: src/os_unix.c ================================================================== --- src/os_unix.c +++ src/os_unix.c @@ -5238,13 +5238,13 @@ unixShmUnlock(pFile, p, UNIX_SHM_B); p->lockState = p->readLock = SQLITE_SHM_READ; } } }else if( p->lockState==SQLITE_SHM_WRITE ){ + rc = unixShmSharedLock(pFile, p, UNIX_SHM_A); unixShmUnlock(pFile, p, UNIX_SHM_C|UNIX_SHM_D); - p->lockState = p->readLock; - rc = SQLITE_OK; + p->lockState = SQLITE_SHM_READ; }else{ assert( p->lockState==SQLITE_SHM_RECOVER ); unixShmUnlock(pFile, p, UNIX_SHM_MUTEX); sqlite3_mutex_leave(pFile->mutexRecov); p->lockState = p->readLock;