@@ -157,7 +157,8 @@ function main(): void
157
157
$ repeat , $ result_tests_file , $ slow_min_ms , $ start_time , $ switch ,
158
158
$ temp_source , $ temp_target , $ test_cnt , $ test_dirs ,
159
159
$ test_files , $ test_idx , $ test_list , $ test_results , $ testfile ,
160
- $ user_tests , $ valgrind , $ sum_results , $ shuffle , $ file_cache , $ num_repeats ;
160
+ $ user_tests , $ valgrind , $ sum_results , $ shuffle , $ file_cache , $ num_repeats ,
161
+ $ asan ;
161
162
// Parallel testing
162
163
global $ workers , $ workerID ;
163
164
global $ context_line_count ;
@@ -360,6 +361,7 @@ function main(): void
360
361
$ workers = null ;
361
362
$ context_line_count = 3 ;
362
363
$ num_repeats = 1 ;
364
+ $ asan = false ;
363
365
364
366
$ cfgtypes = ['show ' , 'keep ' ];
365
367
$ cfgfiles = ['skip ' , 'php ' , 'clean ' , 'out ' , 'diff ' , 'exp ' , 'mem ' ];
@@ -564,6 +566,7 @@ function main(): void
564
566
break ;
565
567
case '--asan ' :
566
568
case '--msan ' :
569
+ $ asan = true ;
567
570
$ environment ['USE_ZEND_ALLOC ' ] = 0 ;
568
571
$ environment ['USE_TRACKED_ALLOC ' ] = 1 ;
569
572
$ environment ['SKIP_ASAN ' ] = 1 ;
@@ -1303,7 +1306,10 @@ function system_with_timeout(
1303
1306
$ data .= "\nTermsig= " . ($ stat ["exitcode " ] - 128 ) . "\n" ;
1304
1307
} else if (defined ('PHP_WINDOWS_VERSION_MAJOR ' ) && (($ stat ["exitcode " ] >> 28 ) & 0b1111 ) === 0b1100 ) {
1305
1308
// https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/87fba13e-bf06-450e-83b1-9241dc81e781
1306
- $ data .= "\nTermsig= " . $ stat ["exitcode " ] . "\n" ;
1309
+ // ignore STATUS_BAD_STACK exit codes under ASan for now
1310
+ if (!$ asan || $ stat ["exitcode " ] !== -1073741784 ) {
1311
+ $ data .= "\nTermsig= " . $ stat ["exitcode " ] . "\n" ;
1312
+ }
1307
1313
}
1308
1314
1309
1315
proc_close ($ proc );
0 commit comments