]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a memory leak in fts3 that could occur when processing a corrupt database.
authordan <Dan Kennedy>
Fri, 15 Jul 2022 15:08:48 +0000 (15:08 +0000)
committerdan <Dan Kennedy>
Fri, 15 Jul 2022 15:08:48 +0000 (15:08 +0000)
FossilOrigin-Name: d74f6f6d5136995b8bf900eb671e4b15ca81e03cc1ab5b7a1aa43dc4f3617760

ext/fts3/fts3.c
manifest
manifest.uuid
test/fts3corrupt4.test

index f601543ef88de8e6681339007356a168ba0c3290..1a1672512ada2622e89f663cc116eb53af2c0ebc 100644 (file)
@@ -4308,6 +4308,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
   char *aPoslist = 0;             /* Position list for deferred tokens */
   int nPoslist = 0;               /* Number of bytes in aPoslist */
   int iPrev = -1;                 /* Token number of previous deferred token */
+  char *aFree = (pPhrase->doclist.bFreeList ? pPhrase->doclist.pList : 0);
 
   for(iToken=0; iToken<pPhrase->nToken; iToken++){
     Fts3PhraseToken *pToken = &pPhrase->aToken[iToken];
@@ -4321,6 +4322,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
 
       if( pList==0 ){
         sqlite3_free(aPoslist);
+        sqlite3_free(aFree);
         pPhrase->doclist.pList = 0;
         pPhrase->doclist.nList = 0;
         return SQLITE_OK;
@@ -4341,6 +4343,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
         nPoslist = (int)(aOut - aPoslist);
         if( nPoslist==0 ){
           sqlite3_free(aPoslist);
+          sqlite3_free(aFree);
           pPhrase->doclist.pList = 0;
           pPhrase->doclist.nList = 0;
           return SQLITE_OK;
@@ -4393,6 +4396,7 @@ static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){
     }
   }
 
+  if( pPhrase->doclist.pList!=aFree ) sqlite3_free(aFree);
   return SQLITE_OK;
 }
 #endif /* SQLITE_DISABLE_FTS4_DEFERRED */
index 0889a02db496d7978225634b1116360ccfab50b5..4c513ab28f3efc7ee34f8999bc2100032a0c21f5 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sthe\swhereKeyStats()\sroutine\s(part\sof\sSTAT4\sprocessing\sonly)\sso\sthat\sit\nis\sable\sto\scope\swith\srow-value\scomparisons\sagainst\sthe\sprimary\skey\sindex\nof\sa\sWITHOUT\sROWID\stable.\n[forum:/forumpost/3607259d3c|Forum\spost\s3607259d3c].
-D 2022-07-15T12:16:11.966
+C Fix\sa\smemory\sleak\sin\sfts3\sthat\scould\soccur\swhen\sprocessing\sa\scorrupt\sdatabase.
+D 2022-07-15T15:08:48.874
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -102,7 +102,7 @@ F ext/fts3/README.content b9078d0843a094d86af0d48dffbff13c906702b4c3558012e67b9c
 F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
 F ext/fts3/README.tokenizers b92bdeb8b46503f0dd301d364efc5ef59ef9fa8e2758b8e742f39fa93a2e422d
 F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
-F ext/fts3/fts3.c 9ba24e484da5146f033ee78ecf6bc740fc4f62c6c42143f9f2c99be27baca4c8
+F ext/fts3/fts3.c 8cd361bd8612de3e5ec451d33ced8575cbc5af6744e7efc05d54bde4d2df3cd0
 F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
 F ext/fts3/fts3Int.h dafdc371f9fbab175744b06cfe019d5f040cdfdbd11fea752f5dc28d45b04c05
 F ext/fts3/fts3_aux.c f0dc9bd98582615b7750218899bd0c729879b6bbf94d1be57ca1833ff49afc6f
@@ -1008,7 +1008,7 @@ F test/fts3conf.test c84bbaec81281c1788aa545ac6e78a6bd6cde2bdbbce2da261690e3659f
 F test/fts3corrupt.test 6732477c5ace050c5758a40a8b5706c8c0cccd416b9c558e0e15224805a40e57
 F test/fts3corrupt2.test e318f0676e5e78d5a4b702637e2bb25265954c08a1b1e4aaf93c7880bb0c67d0
 F test/fts3corrupt3.test 0d5b69a0998b4adf868cc301fc78f3d0707745f1d984ce044c205cdb764b491f
-F test/fts3corrupt4.test e3f7915a156d75bec2fb282630165197d8e682498c5177d43dfd453f5a4ede80
+F test/fts3corrupt4.test 589e043d1114ea02c83530e459ef5c2d6adce63094e72826ed3bceb02e795116
 F test/fts3corrupt5.test 0549f85ec4bd22e992f645f13c59b99d652f2f5e643dac75568bfd23a6db7ed5
 F test/fts3corrupt6.test f417c910254f32c0bc9ead7affa991a1d5aec35b3b32a183ffb05eea78289525
 F test/fts3cov.test 7eacdbefd756cfa4dc2241974e3db2834e9b372ca215880e00032222f32194cf
@@ -1980,8 +1980,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P b072851be1a5e49441469dbfa4580e132ebb1d8bc2de98fe1aa67bb9c7cf13a3
-R 09fb2c54faf3b89c4b078e3ba6b760f0
-U drh
-Z ea98894b53d9b6ede773b2a171a6b669
+P 0620e419a927a3da6ebe921aaa3471686f0fdc2e485f4c2d5c88f32092228724
+R b9aac4d9609cc8841634db9ea3e3fcba
+U dan
+Z bb096f0e437aaa23189ce1ee6aae46bf
 # Remove this line to create a well-formed Fossil manifest.
index d6fa150f9dee7cb6d935b291b6bb4a4aee6d907f..78ed53ebc39cf60668058ff6c1d7abc526c208c1 100644 (file)
@@ -1 +1 @@
-0620e419a927a3da6ebe921aaa3471686f0fdc2e485f4c2d5c88f32092228724
\ No newline at end of file
+d74f6f6d5136995b8bf900eb671e4b15ca81e03cc1ab5b7a1aa43dc4f3617760
\ No newline at end of file
index 1e9dae2a4cb239515149e15a59ab38521df55b85..f8e89b3a7510dd2c00811848c032ca5423f24975 100644 (file)
@@ -7448,4 +7448,220 @@ do_execsql_test 53.1 {
 } {0 {ATE 2:P}}
 set sqlite_fts3_enable_parentheses $saved
 
+#-------------------------------------------------------------------------
+#
+reset_db
+do_test 54.0 {
+  sqlite3 db {}
+  db deserialize [decode_hexdb {
+.open --hexdb
+| size 8192 pagesize 1024 filename crash-365.txt.db
+| page 1 offset 0
+|      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
+|     16: 04 00 01 01 00 40 20 20 00 00 00 00 00 00 00 08   .....@  ........
+|     32: 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 04   ................
+|     96: 00 00 00 00 0d 02 f3 00 07 01 51 00 03 c8 03 63   ..........Q....c
+|    112: 02 fb 02 0a 02 c0 01 a8 01 51 00 00 00 00 00 00   .........Q......
+|    336: 00 55 07 07 17 1b 1b 01 81 01 74 61 62 6c 65 74   .U........tablet
+|    352: 31 5f 73 74 61 74 74 31 5f 73 74 61 74 07 43 52   1_statt1_stat.CR
+|    368: 45 41 54 45 20 54 41 42 4c 45 20 27 74 31 5f 73   EATE TABLE 't1_s
+|    384: 74 61 74 27 28 69 64 20 49 4e 54 45 47 45 52 20   tat'(id INTEGER 
+|    400: 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 76 61 6c   PRIMARY KEY, val
+|    416: 75 65 20 42 4c 4f 42 29 60 06 07 17 21 21 01 81   ue BLOB)`...!!..
+|    432: 0b 74 61 62 6c 65 74 31 5f 64 6f 63 73 69 7a 65   .tablet1_docsize
+|    448: 74 31 5f 64 6f 63 73 69 7a 65 06 43 52 45 41 54   t1_docsize.CREAT
+|    464: 45 20 54 41 42 4c 45 20 27 74 31 5f 64 6f 63 73   E TABLE 't1_docs
+|    480: 69 7a 65 27 28 64 6f 63 69 64 20 49 4e 54 45 47   ize'(docid INTEG
+|    496: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20   ER PRIMARY KEY, 
+|    512: 73 69 7a 65 20 42 4c 4f 42 29 81 33 04 07 17 1f   size BLOB).3....
+|    528: 1f 01 82 35 74 61 62 6c 65 74 31 5f 73 65 67 64   ...5tablet1_segd
+|    544: 69 72 74 31 5f 73 65 67 64 69 72 04 43 52 45 41   irt1_segdir.CREA
+|    560: 54 45 20 54 41 42 4c 45 20 27 74 31 5f 73 65 67   TE TABLE 't1_seg
+|    576: 64 69 72 27 28 6c 65 76 65 6c 20 49 4e 54 45 47   dir'(level INTEG
+|    592: 45 52 2c 69 64 78 20 49 4e 54 45 47 45 52 2c 73   ER,idx INTEGER,s
+|    608: 74 61 72 74 5f 62 6c 6f 63 6b 20 49 4e 54 45 47   tart_block INTEG
+|    624: 45 52 2c 6c 65 61 76 65 73 5f 65 6e 64 5f 62 6c   ER,leaves_end_bl
+|    640: 6f 63 6b 20 49 4e 54 45 47 45 52 2c 65 6e 64 5f   ock INTEGER,end_
+|    656: 62 6c 6f 63 6b 20 49 4e 54 45 47 45 52 2c 72 6f   block INTEGER,ro
+|    672: 6f 74 20 42 4c 4f 42 2c 50 52 49 4d 41 52 59 20   ot BLOB,PRIMARY 
+|    688: 4b 45 59 28 6c 65 76 65 6c 2c 20 69 64 78 29 29   KEY(level, idx))
+|    704: 31 05 06 17 45 1f 01 00 69 6e 64 65 78 73 71 6c   1...E...indexsql
+|    720: 69 74 65 5f 61 75 74 6f 69 6e 64 65 78 5f 74 31   ite_autoindex_t1
+|    736: 5f 73 65 67 64 69 72 5f 31 74 31 5f 73 65 67 64   _segdir_1t1_segd
+|    752: 69 72 05 00 00 00 08 00 00 00 00 66 03 07 17 23   ir.........f...#
+|    768: 23 01 81 13 74 61 62 6c 65 74 31 5f 73 65 67 6d   #...tablet1_segm
+|    784: 65 6e 74 73 74 31 5f 73 65 67 6d 65 6e 74 73 03   entst1_segments.
+|    800: 43 52 45 41 54 45 20 54 41 42 4c 45 20 27 74 31   CREATE TABLE 't1
+|    816: 5f 73 65 67 6d 65 6e 74 73 27 28 62 6c 6f 63 6b   _segments'(block
+|    832: 69 64 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41   id INTEGER PRIMA
+|    848: 52 59 20 4b 45 59 2c 20 62 6c 6f 63 6b 20 42 4c   RY KEY, block BL
+|    864: 4f 42 29 63 02 07 17 21 21 01 81 11 74 61 62 6c   OB)c...!!...tabl
+|    880: 65 74 31 5f 63 6f 6e 74 65 6e 74 74 31 5f 63 6f   et1_contentt1_co
+|    896: 6e 74 65 6e 74 02 43 52 45 41 54 45 20 54 41 42   ntent.CREATE TAB
+|    912: 4c 45 20 27 74 31 5f 63 6f 6e 74 65 6e 74 27 28   LE 't1_content'(
+|    928: 64 6f 63 69 64 20 49 4e 54 45 47 45 52 20 50 52   docid INTEGER PR
+|    944: 49 4d 41 52 59 20 4b 45 59 2c 20 27 63 30 30 27   IMARY KEY, 'c00'
+|    960: 2c 20 27 63 31 62 27 29 36 01 06 17 11 11 08 5b   , 'c1b')6......[
+|    976: 74 61 62 6c 65 74 31 74 31 43 52 45 41 54 45 20   tablet1t1CREATE 
+|    992: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 31   VIRTUAL TABLE t1
+|   1008: 20 55 53 49 4e 47 20 66 74 73 34 28 30 2c 62 29    USING fts4(0,b)
+| page 2 offset 1024
+|      0: 0d 00 00 00 03 00 0f 00 00 23 00 16 00 0f 00 05   .........#......
+|     16: 03 04 00 08 0f 61 0b 02 04 00 08 1b 41 54 45 20   .....a......ATE 
+|     32: 32 3a 50 87 5a 01 05 00 08 8f 37 66 30 30 30 30   2:P.Z.....7f0000
+|     48: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|     64: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|     80: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|     96: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    112: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    128: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    144: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    160: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    176: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    192: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    208: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    224: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    240: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    256: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    272: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    288: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    304: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    320: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    336: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    352: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    368: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    384: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    400: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    416: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    432: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    448: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    464: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    480: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    496: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    512: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    528: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    544: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    560: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    576: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    592: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    608: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    624: 30 30 30 30 30 30 30 30 30 30 1b 30 30 30 30 30   0000000000.00000
+|    640: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    656: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    672: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    688: 30 30 30 30 30 30 30 30 2f 30 30 30 30 30 30 30   00000000/0000000
+|    704: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    720: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    736: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    752: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    768: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    784: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    800: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    816: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    832: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    848: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    864: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    880: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    896: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    912: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    928: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    944: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    960: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    976: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    992: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|   1008: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+| page 3 offset 2048
+|      0: 0d 00 00 00 02 03 86 00 03 f4 03 86 00 00 00 00   ................
+|    896: 00 00 00 00 00 00 87 62 02 04 00 8f 48 00 d5 07   .......b....H...
+|    912: 66 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   f000000000000000
+|    928: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    944: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    960: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    976: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    992: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|   1008: 00 00 00 08 0a 01 03 00 1a 00 01 30 03 01 02 00   ...........0....
+| page 4 offset 3072
+|      0: 0d 00 00 00 03 03 9e 00 03 ed 03 bc 03 9e 00 01   ................
+|    912: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1c 03   ................
+|    928: 07 08 01 08 08 15 2c 02 30 20 31 36 00 01 30 03   ......,.0 16..0.
+|    944: 03 02 00 00 01 61 05 03 01 01 02 00 2f 02 07 08   .....a....../...
+|    960: 09 08 08 15 54 30 20 33 36 00 01 30 03 02 02 00   ....T0 36..0....
+|    976: 00 01 32 05 02 01 01 03 00 00 03 61 74 65 05 02   ..2........ate..
+|    992: 01 01 02 00 00 01 70 05 02 01 01 04 00 11 01 07   ......p.........
+|   1008: 08 08 09 01 17 14 02 32 20 39 39 37 01 01 01 66   .......2 997...f
+| page 5 offset 4096
+|      0: 0a 00 00 00 03 03 ee 00 03 fb 03 f5 03 ee 00 00   ................
+|    992: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 04   ................
+|   1008: 08 01 01 02 03 05 04 08 09 01 02 04 04 08 08 09   ................
+| page 6 offset 5120
+|      0: 0d 00 00 00 03 03 eb 00 03 f9 03 f2 00 00 00 00   ................
+|    992: 00 00 00 00 00 00 00 00 00 00 00 05 03 03 00 10   ................
+|   1008: 01 01 05 02 03 00 10 01 03 05 01 03 00 10 01 01   ................
+| page 7 offset 6144
+|      0: 0d 00 00 00 01 03 f6 00 03 f6 00 00 00 00 00 00   ................
+|   1008: 00 00 00 00 00 00 08 00 03 00 16 03 03 05 e0 07   ................
+| page 8 offset 7168
+|      0: 00 00 00 00 30 30 30 30 30 30 30 30 30 30 30 30   ....000000000000
+|     16: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|     32: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|     48: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|     64: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|     80: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|     96: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    112: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    128: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    144: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    160: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    176: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    192: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    208: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    224: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    240: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    256: 30 30 30 30 30 2f 30 30 30 30 30 30 30 30 30 30   00000/0000000000
+|    272: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    288: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    304: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    320: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    336: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    352: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    368: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    384: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    400: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    416: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    432: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    448: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    464: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    480: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    496: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    512: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    528: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    544: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    560: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    576: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    592: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    608: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    624: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    640: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    656: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    672: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    688: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    704: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    720: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    736: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    752: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    768: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    784: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    800: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    816: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    832: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    848: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    864: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
+|    880: 30 30 30 30 30 30 30 30 30 05 01 01 01 02 00 00   000000000.......
+| end crash-365.txt.db
+}]} {}
+
+do_execsql_test 54.1 {
+  SELECT rowid, quote(matchinfo(t1,'pcxybspcxybs')) FROM t1 WHERE t1 MATCH'ATE"0"OR"2:P"""';
+}
+
 finish_test