mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Enhancements to fuzzcheck on unix so that it captures signals and prints
the current test file and test number prior to terminating. FossilOrigin-Name: ae7cbb246bff3717c283869ccf27ce83611422f3801176819465a8d96f6481bf
This commit is contained in:
12
manifest
12
manifest
@ -1,5 +1,5 @@
|
||||
C Add\sa\stest\scase\sfor\sfix\sin\scheck-in\s[1ca0bd982ab1183b]
|
||||
D 2019-12-18T09:17:55.360
|
||||
C Enhancements\sto\sfuzzcheck\son\sunix\sso\sthat\sit\scaptures\ssignals\sand\sprints\nthe\scurrent\stest\sfile\sand\stest\snumber\sprior\sto\sterminating.
|
||||
D 2019-12-18T13:02:18.883
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@ -1009,7 +1009,7 @@ F test/fuzz3.test 9c813e6613b837cb7a277b0383cd66bfa07042b4cf0317157c35852f30043c
|
||||
F test/fuzz4.test c229bcdb45518a89e1d208a21343e061503460ac69fae1539320a89f572eb634
|
||||
F test/fuzz_common.tcl a87dfbb88c2a6b08a38e9a070dabd129e617b45b
|
||||
F test/fuzz_malloc.test f348276e732e814802e39f042b1f6da6362a610af73a528d8f76898fde6b22f2
|
||||
F test/fuzzcheck.c e8cf694f71a1ee39a59f7c2a38c0f8660db0656ce47c8a334b6e9a11f1e66c6d
|
||||
F test/fuzzcheck.c b2d4dbe3642b3d0d4feb25a24868817d329abdfc84f6678f72c158fd39d4b5fa
|
||||
F test/fuzzdata1.db d36e88741b4f23bcbaaf55b006290669d03c6c891cf13c7b3a53bc1b097b693f
|
||||
F test/fuzzdata2.db 128b3feeb78918d075c9b14b48610145a0dd4c8d6f1ca7c2870c7e425f5bf31f
|
||||
F test/fuzzdata3.db c6586d3e3cef0fbc18108f9bb649aa77bfc38aba
|
||||
@ -1852,7 +1852,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P a96d02b4ab8c70cc20b322e4fa3a4b8814f05c51f5d8b071ec9d69e7379f3ea5
|
||||
R 627893d83616cc9edfdf2fa18820e055
|
||||
P 519864da8bb671941a64bf333c2086ad9a068b5f85759e7abd368f0706d3aefd
|
||||
R 0747f5adac09bdca7c2e5bcdc15904cf
|
||||
U drh
|
||||
Z d0b2b65af4cd0456b98ef351e7111692
|
||||
Z 387af0afadfac53d17a3ca9cbd82d5ad
|
||||
|
@ -1 +1 @@
|
||||
519864da8bb671941a64bf333c2086ad9a068b5f85759e7abd368f0706d3aefd
|
||||
ae7cbb246bff3717c283869ccf27ce83611422f3801176819465a8d96f6481bf
|
@ -134,6 +134,7 @@ struct Blob {
|
||||
*/
|
||||
static struct GlobalVars {
|
||||
const char *zArgv0; /* Name of program */
|
||||
const char *zDbFile; /* Name of database file */
|
||||
VFile aFile[MX_FILE]; /* The virtual filesystem */
|
||||
int nDb; /* Number of template databases */
|
||||
Blob *pFirstDb; /* Content of first template database */
|
||||
@ -148,11 +149,10 @@ static struct GlobalVars {
|
||||
*/
|
||||
static void fatalError(const char *zFormat, ...){
|
||||
va_list ap;
|
||||
if( g.zTestName[0] ){
|
||||
fprintf(stderr, "%s (%s): ", g.zArgv0, g.zTestName);
|
||||
}else{
|
||||
fprintf(stderr, "%s: ", g.zArgv0);
|
||||
}
|
||||
fprintf(stderr, "%s", g.zArgv0);
|
||||
if( g.zDbFile ) fprintf(stderr, " %s", g.zDbFile);
|
||||
if( g.zTestName[0] ) fprintf(stderr, " (%s)", g.zTestName);
|
||||
fprintf(stderr, ": ");
|
||||
va_start(ap, zFormat);
|
||||
vfprintf(stderr, zFormat, ap);
|
||||
va_end(ap);
|
||||
@ -161,12 +161,21 @@ static void fatalError(const char *zFormat, ...){
|
||||
}
|
||||
|
||||
/*
|
||||
** Timeout handler
|
||||
** signal handler
|
||||
*/
|
||||
#ifdef __unix__
|
||||
static void timeoutHandler(int NotUsed){
|
||||
(void)NotUsed;
|
||||
fatalError("timeout\n");
|
||||
static void signalHandler(int signum){
|
||||
const char *zSig;
|
||||
if( signum==SIGABRT ){
|
||||
zSig = "abort";
|
||||
}else if( signum==SIGALRM ){
|
||||
zSig = "timeout";
|
||||
}else if( signum==SIGSEGV ){
|
||||
zSig = "segfault";
|
||||
}else{
|
||||
zSig = "signal";
|
||||
}
|
||||
fatalError(zSig);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1360,7 +1369,9 @@ int main(int argc, char **argv){
|
||||
sqlite3_initialize();
|
||||
iBegin = timeOfDay();
|
||||
#ifdef __unix__
|
||||
signal(SIGALRM, timeoutHandler);
|
||||
signal(SIGALRM, signalHandler);
|
||||
signal(SIGSEGV, signalHandler);
|
||||
signal(SIGABRT, signalHandler);
|
||||
#endif
|
||||
g.zArgv0 = argv[0];
|
||||
openFlags4Data = SQLITE_OPEN_READONLY;
|
||||
@ -1506,6 +1517,7 @@ int main(int argc, char **argv){
|
||||
|
||||
/* Process each source database separately */
|
||||
for(iSrcDb=0; iSrcDb<nSrcDb; iSrcDb++){
|
||||
g.zDbFile = azSrcDb[iSrcDb];
|
||||
rc = sqlite3_open_v2(azSrcDb[iSrcDb], &db,
|
||||
openFlags4Data, pDfltVfs->zName);
|
||||
if( rc ){
|
||||
|
Reference in New Issue
Block a user