Older versions of ASAN don't properly support vfork(). Python uses vfork() when available in _posixsubprocess.c. This can lead to false positive reports from ASAN. I believe this issue exists with GCC 9 (and older), but not GCC 10 (and newer). The CPython GitHub actions ASAN runner currently uses GCC 9.4.0, so it does not properly handle vfork().
I've seen these false positives in my nogil-3.12 fork. I'm unsure if you've run into them upstream.
See google/sanitizers#925
|
#if defined(__linux__) && defined(HAVE_VFORK) && defined(HAVE_SIGNAL_H) && \ |
|
defined(HAVE_PTHREAD_SIGMASK) && !defined(HAVE_BROKEN_PTHREAD_SIGMASK) |
|
/* If this is ever expanded to non-Linux platforms, verify what calls are |
|
* allowed after vfork(). Ex: setsid() may be disallowed on macOS? */ |
|
# include <signal.h> |
|
# define VFORK_USABLE 1 |
|
#endif |
Linked PRs
Older versions of ASAN don't properly support
vfork(). Python usesvfork()when available in_posixsubprocess.c. This can lead to false positive reports from ASAN. I believe this issue exists with GCC 9 (and older), but not GCC 10 (and newer). The CPython GitHub actions ASAN runner currently uses GCC 9.4.0, so it does not properly handle vfork().I've seen these false positives in my nogil-3.12 fork. I'm unsure if you've run into them upstream.
See google/sanitizers#925
cpython/Modules/_posixsubprocess.c
Lines 43 to 49 in 5041c2b
Linked PRs