-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
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
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
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
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.
-86bc7c8648fa6df303cd6953e377227d8a778b7becca984332bb6f623cb52cec
+1ed5e5bed26e3d38dd09541ce73dc68188574e236ecb60142260a0c40bf8902a
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
**
{ "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;
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) );
}
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
+}
+
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
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
} 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
}
}
# 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
"
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]
# 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
# 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]]
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