https://github.com/python/cpython/commit/867cf402792bfc3b6db01c800cbce0e59fb3cfe1 commit: 867cf402792bfc3b6db01c800cbce0e59fb3cfe1 branch: 3.13 author: Miss Islington (bot) <[email protected]> committer: ericsnowcurrently <[email protected]> date: 2024-07-10T17:05:11Z summary:
[3.13] gh-121460: Skip freeing unallocated arenas (gh-121589) `munmap(NULL)` is not noop, like `free(NULL)` is. Fixes an observed testsuite hang on 32-bit ARM systems. (cherry picked from commit a802277914405786f6425f2776605c44bd407fc0, AKA gh-121491) Co-authored-by: Stefano Rivera <[email protected]> files: M Objects/obmalloc.c diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c index 4fe195b63166c1..a9decc5dc1b1dd 100644 --- a/Objects/obmalloc.c +++ b/Objects/obmalloc.c @@ -386,8 +386,16 @@ _PyMem_ArenaFree(void *Py_UNUSED(ctx), void *ptr, ) { #ifdef MS_WINDOWS + /* Unlike free(), VirtualFree() does not special-case NULL to noop. */ + if (ptr == NULL) { + return; + } VirtualFree(ptr, 0, MEM_RELEASE); #elif defined(ARENAS_USE_MMAP) + /* Unlike free(), munmap() does not special-case NULL to noop. */ + if (ptr == NULL) { + return; + } munmap(ptr, size); #else free(ptr); _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: [email protected]
