]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Further fixes for running [make devtest] with Fil-C. master
authordan <Dan Kennedy>
Tue, 28 Jul 2026 14:16:52 +0000 (14:16 +0000)
committerdan <Dan Kennedy>
Tue, 28 Jul 2026 14:16:52 +0000 (14:16 +0000)
FossilOrigin-Name: 1ed5e5bed26e3d38dd09541ce73dc68188574e236ecb60142260a0c40bf8902a

manifest
manifest.uuid
src/test1.c
test/fts3atoken2.test
test/testrunner.tcl
test/testrunner_data.tcl

index 3b2339abbd3db3f552e7223056474a8e6b9469e2..6266b436061d37f3e7cc5fc8247efcac3c4c010d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sa\sstray\sreference\sto\s"sqlite3_checker.exe"\sfrom\sMakefile.msc.\ssqlite3_checker\swas\sremoved\sfrom\sthe\stree\shere\s[213b1c6608].
-D 2026-07-27T14:22:55.676
+C Further\sfixes\sfor\srunning\s[make\sdevtest]\swith\sFil-C.
+D 2026-07-28T14:16:52.727
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -753,7 +753,7 @@ F src/status.c 7565d63a79aa2f326339a24a0461a60096d0bd2bce711fefb50b5c89335f3592
 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
 F src/tclsqlite.c dce1b8217ed34545d8ce04375f22dc05b3f04e124994bd110969d6267480c1b8
 F src/tclsqlite.h 614b3780a62522bc9f8f2b9fb22689e8009958e7aa77e572d0f3149050af348a
-F src/test1.c db1dd68d65774552ec170417339d4c9b9e940b08b2ec1081e3cf86b0911c3386
+F src/test1.c 82e7dd26229374718c74d2ae5faf1a8f167421815c2a4b41167bed4a18b68b00
 F src/test2.c a61ed01d9264a1db74ab42fbc981fc66165f85d5e3947e92be61a73e79ec4f2d
 F src/test3.c e3e5a073c516295ee33d8d7482b6a87b7f2073867478441efc35928ee0eb97a7
 F src/test4.c 0ac87fc13cdb334ab3a71823f99b6c32a6bebe5d603cd6a71d84c823d43a25a0
@@ -1166,7 +1166,7 @@ F test/fts3am.test 218aa6ba0dfc50c7c16b2022aac5c6be593d08d8
 F test/fts3an.test a49ccadc07a2f7d646ec1b81bc09da2d85a85b18
 F test/fts3ao.test 266989148fec6d9f1bb6c5382f7aa3dcea0e9cd444576e28dd2b9287ac7dd220
 F test/fts3atoken.test dc2078ce464914efe3a8dfc545dd034a0fc14f2ab425c240471d5a5f1c721400
-F test/fts3atoken2.test aa6664d26277064844ead962f5988c28b091c51b112f36d30fa33bd83fecf906
+F test/fts3atoken2.test d0ec63ae6f7c67a5bc47f50590c92ee5c68c306fa7eba1629ca965c9d5b144c9
 F test/fts3auto.test 649aa4c198d7acc5cd6355e19ee073d051c40d9e88a43fc3d88af46bdf3e99d5
 F test/fts3aux1.test 1880eaa75c586cd10f53080479a2b819b3915ae7ce55c4e0ba8f1fe05ac0a6a7
 F test/fts3aux2.test 2459e7fa3e22734aed237d1e2ae192f5541c4d8b218956ad2d90754977bf907f
@@ -1733,8 +1733,8 @@ F test/temptrigfault.tes fc5918e64f3867156fefe7cfca9d8e1f495134a5229b2b511b0dc11
 F test/temptrigger.test a00f258ed8d21a0e8fd4f322f15e8cfb5cef2e43655670e07a753e3fb4769d61
 F test/tester.tcl dfd8dd05b54bc493a8db6cc1263ee364c36e3c27fab258dad7305cd79b948f3f
 F test/testloadext.c 862b848783eaed9985fbce46c65cd214664376b549fae252b364d5d1ef350a27
-F test/testrunner.tcl 8171b887ab78d55b73fd971e22690eff0fabec913fbf3b5fbeaf159b3f00b2dc x
-F test/testrunner_data.tcl 4b3cf036d39c98b83f9289a5c047eb01089c932d4f59a81bf764f6800589b959
+F test/testrunner.tcl 8734997d6e9c458d5606bd4cc70ee47ddf45aa30fd4e89c67ebc2e1f32794dd5 x
+F test/testrunner_data.tcl 2295e8090a337146cb810ba8df426484736ea16eeaf6af37675a46a7a510d5aa
 F test/testrunner_estwork.tcl 81e2ae10238f50540f42fbf2d94913052a99bfb494b69e546506323f195dcff9
 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899
 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502
@@ -2217,8 +2217,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 8afa7a1d40eef6fd5e9d6a2c250822de607cb211b301547a3317bdb9e942c937
-R 8b7aef3fdcc743f3a382b3c07d8756bc
+P 86bc7c8648fa6df303cd6953e377227d8a778b7becca984332bb6f623cb52cec
+R 4db5ee716be273ed42e2597013e3a376
 U dan
-Z 088c3b5994a83cefc661260cd4d41ebf
+Z 5fd40feb490512285b8dddf6c53153cd
 # Remove this line to create a well-formed Fossil manifest.
index 0833724a2e9ca38ec4a7c659d7432e2ef6564c8d..8a9b0a6aba2d44fe2994f1689d9582ed4f46e66b 100644 (file)
@@ -1 +1 @@
-86bc7c8648fa6df303cd6953e377227d8a778b7becca984332bb6f623cb52cec
+1ed5e5bed26e3d38dd09541ce73dc68188574e236ecb60142260a0c40bf8902a
index 24f77334d820c55cf396d549e9476dae60740e97..19fc077076ecb85beb2bc480529b222a8075044f 100644 (file)
@@ -311,6 +311,25 @@ static int SQLITE_TCLAPI test_io_trace(
   return TCL_OK;
 }
 
+/*
+** Usage:  filc_build 
+**
+** Returns true if the program was compiled using fil-c.
+*/
+static int SQLITE_TCLAPI filc_build(
+  void *NotUsed,
+  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */
+  int argc,              /* Number of arguments */
+  char **argv            /* Text of each argument */
+){
+  int res = 0;
+#ifdef __PIZLONATOR_WAS_HERE__
+  res = 1;
+#endif
+  Tcl_SetObjResult(interp, Tcl_NewIntObj(res));
+  return TCL_OK;
+}
+
 /*
 ** Usage:  clang_sanitize_address 
 **
@@ -9156,6 +9175,7 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
      { "printf",                        (Tcl_CmdProc*)test_printf           },
      { "sqlite3IoTrace",              (Tcl_CmdProc*)test_io_trace         },
      { "clang_sanitize_address",        (Tcl_CmdProc*)clang_sanitize_address },
+     { "filc_build",                    (Tcl_CmdProc*)filc_build },
   };
   static struct {
      char *zName;
index f6a2a29ab1c123d007c4060ef8af4f2eaf953081..c3d2344441a430cc842a56e86b942860aae69ce5 100644 (file)
@@ -89,11 +89,15 @@ do_execsql_test 1.3.2 {
 set literal [db one {SELECT quote( fts3_tokenizer($bound) )}]
 set blob    [db one {SELECT fts3_tokenizer($bound) }]
 
-do_execsql_test 1.4.1 "
-  SELECT typeof( fts3_tokenizer('mytok2', $literal) );
-" {blob}
-do_execsql_test 1.4.2 {
-  CREATE VIRTUAL TABLE x2 USING fts3(col, tokenize=mytok2);
+if {[filc_build]==0} {
+  # Omit these two tests with Fil-C, as it will abort() if a pointer 
+  # decoded from an SQL literal is dereferenced.
+  do_execsql_test 1.4.1 "
+    SELECT typeof( fts3_tokenizer('mytok2', $literal) );
+  " {blob}
+  do_execsql_test 1.4.2 {
+    CREATE VIRTUAL TABLE x2 USING fts3(col, tokenize=mytok2);
+  }
 }
 do_execsql_test 1.4.3 {
   SELECT typeof( fts3_tokenizer('mytok3', $blob) );
index 0b107885c4367a51425528098560ee6a57e6967d..95cee6260b6b78d11085a097a508bd0c9fc07fcf 100755 (executable)
@@ -239,6 +239,33 @@ proc default_njob {} {
   }
   return $nHelper
 }
+
+# Return true if the current test is using Fil-C. False otherwise.
+#
+proc is_fil_cc {} {
+  set ret 0
+  if {[catch { exec $::env(CC) --version } msg]==0 
+   && [string first Fil-C $msg]>=0
+  } {
+    set ret 1
+  }
+  return $ret
+}
+
+# Return the default value for the -nbuild switch. This value limits the
+# number of build jobs that may be run concurrently. Usually there is
+# no special limit for this, but with Fil-C the compiler has been observed
+# using up to 8GB of memory to build sqlite3.c, so in this case the default
+# limit is two concurrent builds.
+#
+proc default_nbuild {} {
+  set ret -1
+  if {$::TRG(fil-cc)} {
+    set ret 2
+  }
+  return $ret
+}
+
 #-------------------------------------------------------------------------
 
 #-------------------------------------------------------------------------
@@ -249,7 +276,9 @@ set TRG(logname) [file normalize testrunner.log]
 set TRG(build.logname) [file normalize testrunner_build.log]
 set TRG(info_script) [file normalize [info script]]
 set TRG(timeout) 10000              ;# Default busy-timeout for testrunner.db 
+set TRG(fil-cc)  [is_fil_cc]        ;# True for fil-cc on Linux */
 set TRG(nJob)    [default_njob]     ;# Default number of helper processes
+set TRG(nBuild)  [default_nbuild]   ;# Default number of max build processes
 set TRG(patternlist) [list]
 set TRG(cmdline) $argv
 set TRG(reporttime) 2000
@@ -1038,6 +1067,10 @@ for {set ii 0} {$ii < [llength $argv]} {incr ii} {
       } else {
         set TRG(fullstatus) 1
       }
+    } elseif {($n>2 && [string match "$a*" --nbuild]) || $a=="-nb"} {
+      incr ii
+      set TRG(nBuild) [lindex $argv $ii]
+      if {$isLast} { usage }
     } else {
       usage
     }
@@ -1116,22 +1149,36 @@ proc r_write_db {tcl} {
 }
 
 # Obtain a new job to be run by worker $iJob (an integer). A job is
-# returned as a three element list:
-#
-#    {$build $config $file}
+# returned as a serialized array containing all fields from the "jobs"
+# table. 
 #
 proc r_get_next_job {iJob} {
   global T
+  global TRG
+  set orderby ""
 
-  if {($iJob%2)} {
-    set orderby "ORDER BY priority ASC"
-  } else {
-    set orderby "ORDER BY priority DESC"
-  }
+  r_write_db {
+    # If the TRG(nBuild) variable is greater than 0, count how many builds 
+    # are running already. If there are $TRG(nBuild) or more, ensure that
+    # something other than a build is selected to run next.
+    #
+    if {$TRG(nBuild)>0} {
+      set n [trdb one {
+        SELECT count(*) FROM jobs WHERE state='running' AND displaytype='bld'
+      }]
+      if {$n>=$TRG(nBuild)} {
+        set orderby "AND displaytype!='bld' "
+      }
+    }
+
+    if {($iJob%2)} {
+      append orderby "ORDER BY priority ASC"
+    } else {
+      append orderby "ORDER BY priority DESC"
+    }
 
-  set ret [list]
+    set ret [list]
 
-  r_write_db {
     set query "
       SELECT * FROM jobs AS j WHERE state='ready' $orderby LIMIT 1
     " 
@@ -1478,7 +1525,7 @@ proc add_fuzztest_jobs {buildname patternlist} {
   global env TRG
   # puts buildname=$buildname
 
-  foreach {interpreter scripts} [trd_fuzztest_data $buildname] {
+  foreach {interpreter scripts} [trd_fuzztest_data $buildname $TRG(fil-cc)] {
     set bldDone 0
     set subcmd [lrange $interpreter 1 end]
     set interpreter [lindex $interpreter 0]
index 822ab6193e66c31ecb77cfa28a2c5d25cbea026e..04e04f37f338a4a3f29c19aceaba6112fad3d310 100644 (file)
@@ -425,7 +425,7 @@ proc trd_extras {platform bld} {
 
 # Usage: 
 #
-#     trd_fuzztest_data $buildname
+#     trd_fuzztest_data $buildname $bNoSan
 #
 # This returns data used by testrunner.tcl to run commands equivalent 
 # to [make fuzztest]. The returned value is a list, which should be
@@ -445,7 +445,7 @@ proc trd_extras {platform bld} {
 # directory containing this file). "fuzzcheck" and "sessionfuzz" have .exe
 # extensions on windows.
 #
-proc trd_fuzztest_data {buildname} {
+proc trd_fuzztest_data {buildname bNoSan} {
   set EXE ""
   set lFuzzDb    [glob [file join $::testdir fuzzdata*.db]] 
   set lSessionDb [glob [file join $::testdir sessionfuzz-data*.db]]
@@ -455,7 +455,7 @@ proc trd_fuzztest_data {buildname} {
     return [list fuzzcheck.exe $lFuzzDb]
   } else {
     set lRet [list [trd_get_bin_name fuzzcheck] $lFuzzDb]
-    if {[lsearch $sanBuilds $buildname]>=0} {
+    if {$bNoSan==0 && [lsearch $sanBuilds $buildname]>=0} {
       lappend lRet [trd_get_bin_name fuzzcheck-asan] $lFuzzDb 
       if {$::tcl_platform(os) ne "OpenBSD"} {
         lappend lRet [trd_get_bin_name fuzzcheck-ubsan] $lFuzzDb