[Python-checkins] [3.12] gh-104839: Prevent test_venv AddressSanitizer spam (GH-105005) (#105006)

gpshead webhook-mailer at python.org
Fri May 26 21:41:28 EDT 2023


https://github.com/python/cpython/commit/f625ec360324842d7123db7dfe05ca2e221eecfd
commit: f625ec360324842d7123db7dfe05ca2e221eecfd
branch: 3.12
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: gpshead <greg at krypto.org>
date: 2023-05-27T01:41:21Z
summary:

[3.12] gh-104839: Prevent test_venv AddressSanitizer spam (GH-105005) (#105006)

gh-104839: Prevent test_venv AddressSanitizer spam (GH-105005)

Pass any ASAN_OPTIONS environment variable through to the child process
so that leak sanitizer being disabled on our CI and buildbots stays
true in the children.
(cherry picked from commit a17f160376955d369c8d332e1b1a90a6e18c852a)

Co-authored-by: Gregory P. Smith [Google] <greg at krypto.org>

files:
M Lib/test/test_venv.py

diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
index 95944c7c7116..5205604c2c71 100644
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -600,15 +600,14 @@ def test_zippath_from_non_installed_posix(self):
             ld_library_path_env = "DYLD_LIBRARY_PATH"
         else:
             ld_library_path_env = "LD_LIBRARY_PATH"
-        # Note that in address sanitizer mode, the current runtime
-        # implementation leaks memory due to not being able to correctly
-        # clean all unicode objects during runtime shutdown. Therefore,
-        # this uses subprocess.run instead of subprocess.check_call to
-        # maintain the core of the test while not failing due to the refleaks.
-        # This should be able to use check_call once all refleaks are fixed.
-        subprocess.run(cmd,
-                       env={"PYTHONPATH": pythonpath,
-                            ld_library_path_env: ld_library_path})
+        child_env = {
+                "PYTHONPATH": pythonpath,
+                ld_library_path_env: ld_library_path,
+        }
+        if asan_options := os.environ.get("ASAN_OPTIONS"):
+            # prevent https://github.com/python/cpython/issues/104839
+            child_env["ASAN_OPTIONS"] = asan_options
+        subprocess.check_call(cmd, env=child_env)
         envpy = os.path.join(self.env_dir, self.bindir, self.exe)
         # Now check the venv created from the non-installed python has
         # correct zip path in pythonpath.



More information about the Python-checkins mailing list