Open sim642 opened 1 year ago
The vectorization and intrinsics only seem to be used by the vendored xxHash library that provides alternative intrisincs-free implementations that we could analyze instead.
On tag 1.6.21
:
./autogen.sh
./configure
bear -- make
Commented out the following code on lines 2583-2595
in xxhash.h
as there actually is an option XXH_VECTOR
to not use SSE2
which uses the implementation that has __vector_size__
but this block overrides this option if uncommented:
#if defined(__GNUC__)
# if defined(__AVX2__)
# include <immintrin.h>
# elif defined(__SSE2__)
# include <emmintrin.h>
# elif defined(__ARM_NEON__) || defined(__ARM_NEON)
# define inline __inline__ /* circumvent a clang bug */
# include <arm_neon.h>
# undef inline
# endif
# elif defined(_MSC_VER)
# include <intrin.h>
#endif
With option --set pre.cppflags[+] "-DXXH_VECTOR=0"
Goblint is able to parse and analyze.
goblint compile_commands.json --conf goblint.json
analyzed for 2h13min, produced an output file of 1.39GB with 775 race warnings 🙃. First time I tried with the large-programs.json
conf and then it ran for 1h17min but I didn't think to output to a file so I don't know how many warnings that conf produced.
Also, the race warnings are awfully long due to the locksets, e.g.:
[Warning][Race] Memory location (struct __anonstruct_item_hdr_376883561).page_version (race with conf. 100):
write with [] (conf. 100) (exp: & hdr->page_version) (storage.c:550:17-550:52)
read with [] (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], lru_locks[def_exc:251], lru_locks[def_exc:252], lru_locks[def_exc:253], lru_locks[def_exc:254], maintenance_lock, lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], lru_locks[def_exc:251], lru_locks[def_exc:252], lru_locks[def_exc:253], lru_locks[def_exc:254], lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], lru_locks[def_exc:251], lru_locks[def_exc:252], lru_locks[def_exc:253], maintenance_lock, lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], lru_locks[def_exc:251], lru_locks[def_exc:252], lru_locks[def_exc:253], lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], lru_locks[def_exc:251], lru_locks[def_exc:252], maintenance_lock, lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], lru_locks[def_exc:251], lru_locks[def_exc:252], lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], lru_locks[def_exc:251], maintenance_lock, lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], lru_locks[def_exc:251], lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
read with lock:{lru_locks[def_exc:1], lru_locks[def_exc:2], lru_locks[def_exc:3], lru_locks[def_exc:4], lru_locks[def_exc:5], lru_locks[def_exc:6], lru_locks[def_exc:7], lru_locks[def_exc:8], lru_locks[def_exc:9], lru_locks[def_exc:10], lru_locks[def_exc:11], lru_locks[def_exc:12], lru_locks[def_exc:13], lru_locks[def_exc:14], lru_locks[def_exc:15], lru_locks[def_exc:16], lru_locks[def_exc:17], lru_locks[def_exc:18], lru_locks[def_exc:19], lru_locks[def_exc:20], lru_locks[def_exc:21], lru_locks[def_exc:22], lru_locks[def_exc:23], lru_locks[def_exc:24], lru_locks[def_exc:25], lru_locks[def_exc:26], lru_locks[def_exc:27], lru_locks[def_exc:28], lru_locks[def_exc:29], lru_locks[def_exc:30], lru_locks[def_exc:31], lru_locks[def_exc:32], lru_locks[def_exc:33], lru_locks[def_exc:34], lru_locks[def_exc:35], lru_locks[def_exc:36], lru_locks[def_exc:37], lru_locks[def_exc:38], lru_locks[def_exc:39], lru_locks[def_exc:40], lru_locks[def_exc:41], lru_locks[def_exc:42], lru_locks[def_exc:43], lru_locks[def_exc:44], lru_locks[def_exc:45], lru_locks[def_exc:46], lru_locks[def_exc:47], lru_locks[def_exc:48], lru_locks[def_exc:49], lru_locks[def_exc:50], lru_locks[def_exc:51], lru_locks[def_exc:52], lru_locks[def_exc:53], lru_locks[def_exc:54], lru_locks[def_exc:55], lru_locks[def_exc:56], lru_locks[def_exc:57], lru_locks[def_exc:58], lru_locks[def_exc:59], lru_locks[def_exc:60], lru_locks[def_exc:61], lru_locks[def_exc:62], lru_locks[def_exc:63], lru_locks[def_exc:64], lru_locks[def_exc:65], lru_locks[def_exc:66], lru_locks[def_exc:67], lru_locks[def_exc:68], lru_locks[def_exc:69], lru_locks[def_exc:70], lru_locks[def_exc:71], lru_locks[def_exc:72], lru_locks[def_exc:73], lru_locks[def_exc:74], lru_locks[def_exc:75], lru_locks[def_exc:76], lru_locks[def_exc:77], lru_locks[def_exc:78], lru_locks[def_exc:79], lru_locks[def_exc:80], lru_locks[def_exc:81], lru_locks[def_exc:82], lru_locks[def_exc:83], lru_locks[def_exc:84], lru_locks[def_exc:85], lru_locks[def_exc:86], lru_locks[def_exc:87], lru_locks[def_exc:88], lru_locks[def_exc:89], lru_locks[def_exc:90], lru_locks[def_exc:91], lru_locks[def_exc:92], lru_locks[def_exc:93], lru_locks[def_exc:94], lru_locks[def_exc:95], lru_locks[def_exc:96], lru_locks[def_exc:97], lru_locks[def_exc:98], lru_locks[def_exc:99], lru_locks[def_exc:100], lru_locks[def_exc:101], lru_locks[def_exc:102], lru_locks[def_exc:103], lru_locks[def_exc:104], lru_locks[def_exc:105], lru_locks[def_exc:106], lru_locks[def_exc:107], lru_locks[def_exc:108], lru_locks[def_exc:109], lru_locks[def_exc:110], lru_locks[def_exc:111], lru_locks[def_exc:112], lru_locks[def_exc:113], lru_locks[def_exc:114], lru_locks[def_exc:115], lru_locks[def_exc:116], lru_locks[def_exc:117], lru_locks[def_exc:118], lru_locks[def_exc:119], lru_locks[def_exc:120], lru_locks[def_exc:121], lru_locks[def_exc:122], lru_locks[def_exc:123], lru_locks[def_exc:124], lru_locks[def_exc:125], lru_locks[def_exc:126], lru_locks[def_exc:127], lru_locks[def_exc:128], lru_locks[def_exc:129], lru_locks[def_exc:130], lru_locks[def_exc:131], lru_locks[def_exc:132], lru_locks[def_exc:133], lru_locks[def_exc:134], lru_locks[def_exc:135], lru_locks[def_exc:136], lru_locks[def_exc:137], lru_locks[def_exc:138], lru_locks[def_exc:139], lru_locks[def_exc:140], lru_locks[def_exc:141], lru_locks[def_exc:142], lru_locks[def_exc:143], lru_locks[def_exc:144], lru_locks[def_exc:145], lru_locks[def_exc:146], lru_locks[def_exc:147], lru_locks[def_exc:148], lru_locks[def_exc:149], lru_locks[def_exc:150], lru_locks[def_exc:151], lru_locks[def_exc:152], lru_locks[def_exc:153], lru_locks[def_exc:154], lru_locks[def_exc:155], lru_locks[def_exc:156], lru_locks[def_exc:157], lru_locks[def_exc:158], lru_locks[def_exc:159], lru_locks[def_exc:160], lru_locks[def_exc:161], lru_locks[def_exc:162], lru_locks[def_exc:163], lru_locks[def_exc:164], lru_locks[def_exc:165], lru_locks[def_exc:166], lru_locks[def_exc:167], lru_locks[def_exc:168], lru_locks[def_exc:169], lru_locks[def_exc:170], lru_locks[def_exc:171], lru_locks[def_exc:172], lru_locks[def_exc:173], lru_locks[def_exc:174], lru_locks[def_exc:175], lru_locks[def_exc:176], lru_locks[def_exc:177], lru_locks[def_exc:178], lru_locks[def_exc:179], lru_locks[def_exc:180], lru_locks[def_exc:181], lru_locks[def_exc:182], lru_locks[def_exc:183], lru_locks[def_exc:184], lru_locks[def_exc:185], lru_locks[def_exc:186], lru_locks[def_exc:187], lru_locks[def_exc:188], lru_locks[def_exc:189], lru_locks[def_exc:190], lru_locks[def_exc:191], lru_locks[def_exc:192], lru_locks[def_exc:193], lru_locks[def_exc:194], lru_locks[def_exc:195], lru_locks[def_exc:196], lru_locks[def_exc:197], lru_locks[def_exc:198], lru_locks[def_exc:199], lru_locks[def_exc:200], lru_locks[def_exc:201], lru_locks[def_exc:202], lru_locks[def_exc:203], lru_locks[def_exc:204], lru_locks[def_exc:205], lru_locks[def_exc:206], lru_locks[def_exc:207], lru_locks[def_exc:208], lru_locks[def_exc:209], lru_locks[def_exc:210], lru_locks[def_exc:211], lru_locks[def_exc:212], lru_locks[def_exc:213], lru_locks[def_exc:214], lru_locks[def_exc:215], lru_locks[def_exc:216], lru_locks[def_exc:217], lru_locks[def_exc:218], lru_locks[def_exc:219], lru_locks[def_exc:220], lru_locks[def_exc:221], lru_locks[def_exc:222], lru_locks[def_exc:223], lru_locks[def_exc:224], lru_locks[def_exc:225], lru_locks[def_exc:226], lru_locks[def_exc:227], lru_locks[def_exc:228], lru_locks[def_exc:229], lru_locks[def_exc:230], lru_locks[def_exc:231], lru_locks[def_exc:232], lru_locks[def_exc:233], lru_locks[def_exc:234], lru_locks[def_exc:235], lru_locks[def_exc:236], lru_locks[def_exc:237], lru_locks[def_exc:238], lru_locks[def_exc:239], lru_locks[def_exc:240], lru_locks[def_exc:241], lru_locks[def_exc:242], lru_locks[def_exc:243], lru_locks[def_exc:244], lru_locks[def_exc:245], lru_locks[def_exc:246], lru_locks[def_exc:247], lru_locks[def_exc:248], lru_locks[def_exc:249], lru_locks[def_exc:250], maintenance_lock, lru_crawler_lock} (conf. 100) (exp: & hdr->page_version) (storage.c:47:9-47:64)
The locksets look a bit curious: Is it plausible that there a code paths which acquire 255 distinct locks and never release any of them?
Other thing: It might be worth trying with at least a simple thread analysis: Maybe the first two accesses can be excluded based on MHP, and then the other ones would be fine.
I was able to isolate an example of why these awfully long locksets happen:
It happens when one forgets to unlock a mutex in a loop. In memcached
, there is a function where all unlockings are in different if clauses and two of those clauses do not have an unlock at all, so it might happen there. But it was a bit suspicious, why it didn't happen in a similarly constructed case, where in one branch the lock is released and the loop continues and in another branch the lock is not released:
void *item_crawler_thread(void *arg) {
int i, r1, r2;
for (i = POWER_SMALLEST; i < LARGEST_ID; i++) {
pthread_mutex_lock(&lru_locks[i]);
myglobal = myglobal + 1; // RACE!
if (r1) {
pthread_mutex_unlock(&lru_locks[i]);
continue;
}
if (r2) {
int x = 0;
}
}
return NULL;
}
Also, we might want to add a warning similar to the one in mayLocks
analysis, where we warn if the mutexAnalysis
must-lockset is not empty when the thread returns to indicate that one might have forgotten to release those locks.
The place where these locksets arise involves a loop with lots of different continue
cases, so initially I thought there was an actual bug that one case forgot to unlock. But actually it seems fine and rather subtle:
if (!active_crawler_mod.mod->needs_lock) {
pthread_mutex_unlock(&lru_locks[i]);
}
active_crawler_mod.mod->eval(&active_crawler_mod, search, hv, i);
if (hold_lock)
item_trylock_unlock(hold_lock);
if (active_crawler_mod.mod->needs_lock) {
pthread_mutex_unlock(&lru_locks[i]);
}
Depending on the value of the global active_crawler_mod.mod->needs_lock
, lru_locks[i]
is unlocked a bit earlier or later, but it's always unlocked. Since we can't refine globals, we don't know that it's impossible to skip both if
s.
So it's a weird combination of our imprecision on values (not refining globals) and precision on mutexes (path-sensitivity) that leads to such explosion. It doesn't have an easy solution though, because it boils down to https://github.com/goblint/analyzer/issues/101. Path-sensitivity would need a proper widening that can widen growing cardinality of path sets like this. Currently there's no widening across path buckets.
Some more findings. I was curious how the analysis would behave when, instead of analyzing based on a compilation database, we would analyze a program that has been merged with CIL (similar to the Concrat benchmarks).
I merged the project with: goblint compile_commands.json --conf goblint.json --enable justcil > memcachedcil.c
Then ran Goblint with:
goblint compile_commands.json --conf examples/large-program.json
--set pre.cppflags[+] "-DXXH_VECTOR=0" --enable warn.deterministic
--disable sem.unknown_function.spawn --disable sem.unknown_function.invalidate.globals
|& tee nonmerged.txt
and
goblint memcachedcil.c --conf examples/large-program.json
--set pre.cppflags[+] "-DXXH_VECTOR=0" --enable warn.deterministic
--disable sem.unknown_function.spawn --disable sem.unknown_function.invalidate.globals
|& tee merged.txt
The analysis with the compilation database took 1h and 15 min, and the analysis on CIL merged took 1h and 3 min. There was no significant performance gain. However, it is a bit suspicious that there is a slightly different number of warnings.
non-merged | merged | |
---|---|---|
race warnings | 806 | 814 |
deadcode warnings | 610 | 608 |
deadcode warnings (branching) | 112 | 258 |
Some of the differences can be since for analysis with compilation DB, there are many warnings of the following type:
/usr/include/stdio.h:856: Warning: The name obstack_vprintf is used for two distinct globals
/usr/include/pthread.h:276: Warning: The name pthread_equal is used for two distinct globals
/usr/include/unistd.h:371: Warning: The name read is used for two distinct globals
/usr/include/unistd.h:389: Warning: The name pread is used for two distinct globals
but analyzing the merged one does not have them. This might be that CIL actually renames these, and the latter could be more precise?
At the same time, @sim642 implemented an option not to track the indexes of locks, which made the analysis so much faster. The analysis for both runs was completed with 30sec 🤯. Although this option breaks one regression test, the number of warnings in this project stayed the same. A big win.
There are also a bunch of unknown functions, making the analysis imprecise and due to the time restrictions so far, I have only used a minimal set (the one in large-program conf) of analyses. I will now try and configure a bit to see how much we can decrease the number of warnings with easy stuff.
https://github.com/memcached/memcached
Initial attempt
Goblint version: heads/master-0-ge223b4f36-dirty.
Checked out git tag
1.6.17
and executed:Crashes due to parsing errors in intrinsics headers: