-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
3.13bugs and security fixesbugs and security fixes3.14bugs and security fixesbugs and security fixesperformancePerformance or resource usagePerformance or resource usage
Description
PR #30872 added _Py_DECREF_SPECIALIZED
which calls destruct
over the object. When destruct
is PyObject_Free
this skips tracemalloc
counting reporting that the memory is alive. This also makes debuggers segfault because they think that the object is alive because they did not get a notification. This is the code that's not getting called:
Lines 2924 to 2928 in 2e950e3
struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; | |
if (tracer->tracer_func != NULL) { | |
void* data = tracer->tracer_data; | |
tracer->tracer_func(op, PyRefTracer_DESTROY, data); | |
} |
This may also qualify a regression as makes tracemalloc detect incorrect memory usage for these objects
Linked PRs
- gh-125703: Correctly honour tracemalloc hooks on specialized DECREF paths #125704
- [3.13] gh-125703: Correctly honour tracemalloc hooks on specialized DECREF paths (GH-125704) #125705
- [3.11] gh-125703: Correctly honour tracemalloc hooks on specialized DECREF paths (GH-125704) #125706
- [3.12] gh-125703: Correctly honour tracemalloc hooks on specialized DECREF paths (GH-125704) #125707
- gh-125703: Correctly honour tracemalloc hooks on more PyDECREF specialized paths #125712
- [3.13] gh-125703: Correctly honour tracemalloc hooks on more PyDECREF specialized paths (GH-125712) #125791
Metadata
Metadata
Assignees
Labels
3.13bugs and security fixesbugs and security fixes3.14bugs and security fixesbugs and security fixesperformancePerformance or resource usagePerformance or resource usage