Dear SQLite developers:
I used my fuzz-testing tool, connzer, to detect data race in SQLite. Here is a data race found by connzer. I wish you can help me check whether it is a real race, thanks!!
The following is the race report.
## Race report ##
**Version:** 3.30.1
**Race object:** `pShmNode->pShmMutex`
**Thread 1:**
**Access:** `pShmNode->pShmMutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST);`
**Line number:** `sqlite3.c, 37258`
**Call stack:**
1. `unixOpenSharedMemory()`
2. `unixShmMap()`
3. `sqlite3OsShmMap()`
4. `walIndexPageRealloc()`
5. `walIndexPage()`
6. `walIndexReadHdr()`
7. `walTryBeginRead()`
8. `sqlite3WalBeginReadTransaction()`
9. `pagerBeginReadTransaction()`
10. `sqlite3PagerSharedLock()`
11. `lockBtree()`
12. `sqlite3BtreeBeginTrans()`
13. `sqlite3VdbeExec()`
14. `sqlite3Step()`
15. `sqlite3_step()`
16. `sqlite3_exec()`
17. `sql_script_x()`
18. `walthread2_thread()`
19. `launch_thread_main()`
**Lock:** `unixEnterMutex()`
**Thread 2:**
**Access:** `sqlite3_mutex_enter(pShmNode->pShmMutex);`
**Line number:** `sqlite3.c; 37305`
**Call stack:**
0. `unixOpenSharedMemory()`
1. `unixShmMap()`
2. `sqlite3OsShmMap()`
3. `walIndexPageRealloc()`
4. `walIndexPage()`
5. `walIndexReadHdr()`
6. `walTryBeginRead()`
7. `sqlite3WalBeginReadTransaction()`
8. `pagerBeginReadTransaction()`
9. `sqlite3PagerSharedLock()`
10. `lockBtree()`
11. `sqlite3BtreeBeginTrans()`
12. `sqlite3BtreeSetVersion()`
13. `sqlite3VdbeExec()`
14. `sqlite3Step()`
15. `sqlite3_step()`
16. `sqlite3_exec()`
17. `sql_script_x()`
18. `walthread2_thread()`
19. `launch_thread_main()`
**Lock:** `sqlite3_mutex_enter(pShmNode->pShmMutex)`
**Impact:** This race may cause serious consequence: if the race access in thread 2 is executed before the race access in thread 1, `pShmNode->pShmMutex` in `unixOpenSharedMemory()` in thread 2 will be uninitialized, and `sqlite3_mutex_enter(pShmNode->pShmMutex)` will cause crash.
My fuzzer finds that these 2 accesses can be executed concurrently, and they are protected by different locks, so my fuzzer report this race.