mirror of https://github.com/python/cpython
gh-115103: Enable internal mimalloc assertions in debug builds (#116343)
This sets `MI_DEBUG` to `2` in debug builds to enable `mi_assert_internal()` calls. Expensive internal assertions are not enabled. This also disables an assertion in free-threaded builds that would be triggered by the free-threaded GC because we traverse heaps that are not owned by the current thread.
This commit is contained in:
parent
dab85e0189
commit
72714c0266
|
@ -27,7 +27,7 @@ typedef enum {
|
||||||
# define MI_DEBUG_FREED PYMEM_DEADBYTE
|
# define MI_DEBUG_FREED PYMEM_DEADBYTE
|
||||||
# define MI_DEBUG_PADDING PYMEM_FORBIDDENBYTE
|
# define MI_DEBUG_PADDING PYMEM_FORBIDDENBYTE
|
||||||
#ifdef Py_DEBUG
|
#ifdef Py_DEBUG
|
||||||
# define MI_DEBUG 1
|
# define MI_DEBUG 2
|
||||||
#else
|
#else
|
||||||
# define MI_DEBUG 0
|
# define MI_DEBUG 0
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -609,7 +609,10 @@ bool _mi_free_delayed_block(mi_block_t* block) {
|
||||||
// get segment and page
|
// get segment and page
|
||||||
const mi_segment_t* const segment = _mi_ptr_segment(block);
|
const mi_segment_t* const segment = _mi_ptr_segment(block);
|
||||||
mi_assert_internal(_mi_ptr_cookie(segment) == segment->cookie);
|
mi_assert_internal(_mi_ptr_cookie(segment) == segment->cookie);
|
||||||
|
#ifndef Py_GIL_DISABLED
|
||||||
|
// The GC traverses heaps of other threads, which can trigger this assert.
|
||||||
mi_assert_internal(_mi_thread_id() == segment->thread_id);
|
mi_assert_internal(_mi_thread_id() == segment->thread_id);
|
||||||
|
#endif
|
||||||
mi_page_t* const page = _mi_segment_page_of(segment, block);
|
mi_page_t* const page = _mi_segment_page_of(segment, block);
|
||||||
|
|
||||||
// Clear the no-delayed flag so delayed freeing is used again for this page.
|
// Clear the no-delayed flag so delayed freeing is used again for this page.
|
||||||
|
|
Loading…
Reference in New Issue