From: dan Date: Tue, 28 Jul 2026 14:16:52 +0000 (+0000) Subject: Further fixes for running [make devtest] with Fil-C. X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fsqlite.git Further fixes for running [make devtest] with Fil-C. FossilOrigin-Name: 1ed5e5bed26e3d38dd09541ce73dc68188574e236ecb60142260a0c40bf8902a --- diff --git a/manifest b/manifest index 3b2339abbd..6266b43606 100644 --- 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. diff --git a/manifest.uuid b/manifest.uuid index 0833724a2e..8a9b0a6aba 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -86bc7c8648fa6df303cd6953e377227d8a778b7becca984332bb6f623cb52cec +1ed5e5bed26e3d38dd09541ce73dc68188574e236ecb60142260a0c40bf8902a diff --git a/src/test1.c b/src/test1.c index 24f77334d8..19fc077076 100644 --- a/src/test1.c +++ b/src/test1.c @@ -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; diff --git a/test/fts3atoken2.test b/test/fts3atoken2.test index f6a2a29ab1..c3d2344441 100644 --- a/test/fts3atoken2.test +++ b/test/fts3atoken2.test @@ -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) ); diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 0b107885c4..95cee6260b 100755 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -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] diff --git a/test/testrunner_data.tcl b/test/testrunner_data.tcl index 822ab6193e..04e04f37f3 100644 --- a/test/testrunner_data.tcl +++ b/test/testrunner_data.tcl @@ -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