From: Gregory P. Smith Date: Mon, 31 Dec 2018 02:09:26 +0000 (-0800) Subject: Cleanup test_faulthandler sanitizer skip logic. (GH-11381) X-Git-Tag: v3.8.0a1~168 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=30e023256aa1b00d4c783553752fc6f2cc0b9b27;p=python Cleanup test_faulthandler sanitizer skip logic. (GH-11381) Also skip the same tests when using the undefined behavior sanitizer as they much with the output. Updates a regex in another test to use multi-line mode so that the ubsan buildbot should pass again rather than also adding a skip to that one. --- diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py index 76dd6ab068..80b8868a06 100644 --- a/Lib/test/test_faulthandler.py +++ b/Lib/test/test_faulthandler.py @@ -20,11 +20,18 @@ except ImportError: TIMEOUT = 0.5 MS_WINDOWS = (os.name == 'nt') +_cflags = sysconfig.get_config_var('CFLAGS') or '' +_config_args = sysconfig.get_config_var('CONFIG_ARGS') or '' +UB_SANITIZER = ( + '-fsanitizer=undefined' in _cflags or + '--with-undefined-behavior-sanitizer' in _config_args +) MEMORY_SANITIZER = ( - sysconfig.get_config_var("CONFIG_ARGS") and - ("--with-memory-sanitizer" in sysconfig.get_config_var("CONFIG_ARGS")) + '-fsanitizer=memory' in _cflags or + '--with-memory-sanitizer' in _config_args ) + def expected_traceback(lineno1, lineno2, header, min_count=1): regex = header regex += ' File "", line %s in func\n' % lineno1 @@ -99,7 +106,7 @@ class FaultHandlerTests(unittest.TestCase): else: header = 'Stack' regex = r""" - ^{fatal_error} + (?m)^{fatal_error} {header} \(most recent call first\): File "", line {lineno} in @@ -257,8 +264,8 @@ class FaultHandlerTests(unittest.TestCase): 3, 'Segmentation fault') - @unittest.skipIf(MEMORY_SANITIZER, - "memory-sanizer builds change crashing process output.") + @unittest.skipIf(UB_SANITIZER or MEMORY_SANITIZER, + "sanizer builds change crashing process output.") @skip_segfault_on_android def test_enable_file(self): with temporary_filename() as filename: @@ -274,8 +281,8 @@ class FaultHandlerTests(unittest.TestCase): @unittest.skipIf(sys.platform == "win32", "subprocess doesn't support pass_fds on Windows") - @unittest.skipIf(MEMORY_SANITIZER, - "memory-sanizer builds change crashing process output.") + @unittest.skipIf(UB_SANITIZER or MEMORY_SANITIZER, + "sanizer builds change crashing process output.") @skip_segfault_on_android def test_enable_fd(self): with tempfile.TemporaryFile('wb+') as fp: