Improved rebustness of the pcache tracing logic.

FossilOrigin-Name: 0a43235b8368a0996d1856c4e956786a5321275458cb9179ce818aa47bb824ed
This commit is contained in:
drh 2023-04-19 18:36:49 +00:00
parent 2cc723a2da
commit f23adcbaa4
3 changed files with 17 additions and 14 deletions

View File

@ -1,5 +1,5 @@
C Remove\sunreachable\slegacy\scode. C Improved\srebustness\sof\sthe\spcache\stracing\slogic.
D 2023-04-19T18:32:32.235 D 2023-04-19T18:36:49.496
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -621,7 +621,7 @@ F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
F src/pager.c 9d36ddedc842e993c88c222ed914822dbd6f8ece3c648fde04468637012a034a F src/pager.c 9d36ddedc842e993c88c222ed914822dbd6f8ece3c648fde04468637012a034a
F src/pager.h f82e9844166e1585f5786837ddc7709966138ced17f568c16af7ccf946c2baa3 F src/pager.h f82e9844166e1585f5786837ddc7709966138ced17f568c16af7ccf946c2baa3
F src/parse.y e8b5c753e3194e03d69e108753c1dbceb01fa4c158b2c6b726a048023ea0fdc1 F src/parse.y e8b5c753e3194e03d69e108753c1dbceb01fa4c158b2c6b726a048023ea0fdc1
F src/pcache.c 589326520a41211b50bb946973ca7f1e30f824641af546ea8fa6224bf0e4ea5c F src/pcache.c 8ee13acccfd9accbf0af94910b7323dd7f7d55300d92ddafcf40e34fcc8e21be
F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5 F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5
F src/pcache1.c dee95e3cd2b61e6512dc814c5ab76d5eb36f0bfc9441dbb4260fccc0d12bbddc F src/pcache1.c dee95e3cd2b61e6512dc814c5ab76d5eb36f0bfc9441dbb4260fccc0d12bbddc
F src/pragma.c 26ed2cfdc5c12aa1c707178635709684960288cacc9cff9d491a38ff10e395f1 F src/pragma.c 26ed2cfdc5c12aa1c707178635709684960288cacc9cff9d491a38ff10e395f1
@ -2058,8 +2058,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P 020968f857d7b90bab3525fc9d6b859a019f6a80422c3d5ffb88f5bdb8e02a11 P e3e7fb87d90690c29b70da261887c8f7d87b62188d15577e48db91232e13608c
R 830602ab1372d787b9670b489818f9ab R 3964c30fad91750ec1a096a4b6637fa8
U drh U drh
Z 0011d2490fa3ab04ee8b4d3dc4a07ff1 Z addba7fae3e9b75b9a30be88346b1406
# Remove this line to create a well-formed Fossil manifest. # Remove this line to create a well-formed Fossil manifest.

View File

@ -1 +1 @@
e3e7fb87d90690c29b70da261887c8f7d87b62188d15577e48db91232e13608c 0a43235b8368a0996d1856c4e956786a5321275458cb9179ce818aa47bb824ed

View File

@ -70,11 +70,15 @@ struct PCache {
PgHdr *pPg; PgHdr *pPg;
unsigned char *a; unsigned char *a;
int j; int j;
pPg = (PgHdr*)pLower->pExtra; if( pLower==0 ){
printf("%3d: nRef %2lld flgs %02x data ", i, pPg->nRef, pPg->flags); printf("%3d: NULL\n", i);
a = (unsigned char *)pLower->pBuf; }else{
for(j=0; j<12; j++) printf("%02x", a[j]); pPg = (PgHdr*)pLower->pExtra;
printf(" ptr %p\n", pPg); printf("%3d: nRef %2lld flgs %02x data ", i, pPg->nRef, pPg->flags);
a = (unsigned char *)pLower->pBuf;
for(j=0; j<12; j++) printf("%02x", a[j]);
printf(" ptr %p\n", pPg);
}
} }
static void pcacheDump(PCache *pCache){ static void pcacheDump(PCache *pCache){
int N; int N;
@ -87,9 +91,8 @@ struct PCache {
if( N>sqlite3PcacheMxDump ) N = sqlite3PcacheMxDump; if( N>sqlite3PcacheMxDump ) N = sqlite3PcacheMxDump;
for(i=1; i<=N; i++){ for(i=1; i<=N; i++){
pLower = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, i, 0); pLower = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, i, 0);
if( pLower==0 ) continue;
pcachePageTrace(i, pLower); pcachePageTrace(i, pLower);
if( ((PgHdr*)pLower)->pPage==0 ){ if( pLower && ((PgHdr*)pLower)->pPage==0 ){
sqlite3GlobalConfig.pcache2.xUnpin(pCache->pCache, pLower, 0); sqlite3GlobalConfig.pcache2.xUnpin(pCache->pCache, pLower, 0);
} }
} }