You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Automatically disable pymalloc when running under valgrind #46674
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2009-12-03.02:58:00.106>created_at=<Date2008-03-19.11:11:08.362>labels= ['interpreter-core', 'type-feature']
title='Automatically disable pymalloc when running under valgrind'updated_at=<Date2009-12-03.02:58:00.096>user='https://bugs.python.org/jamesh'
When I want to use valgrind to check for leaks in a Python program (or
test suite), I generally want pymalloc disabled. When not running
valgrind I generally want it enabled.
Attached is a patch that automatically bypasses the pymalloc code when
running under valgrind but leaves it enabled overwise.
It is controlled by a WITH_VALGRIND #define, but I haven't updated the
configure script to allow turning it on. I also haven't done much in
the way of profiling to see what the overhead is when not running under
valgrind.
Please provide a patch for Python 2.6 that includes a ./configure
--with-valgrind option. We may consider such a patch for 2.6 and 3.0 but
definitely not for 2.5.
lauromoura commented on Mar 24, 2008
lauromouramannequin
Mannequin
More actions
Here's a patch with James changes to obmalloc and a --with-valgrind
option in configure.in.
jamesh commented on Mar 24, 2008
jameshmannequin
MannequinAuthor
More actions
Here's the updated version of my patch (the obmalloc.c bits applied
without conflicts to the newer source tree).
The configure changes are a bit different to Lauro's ones, in that they
check for the existence of the <valgrind/valgrind.h> header if Valgrind
support was requested.
jamesh commented on Mar 27, 2008
jameshmannequin
MannequinAuthor
More actions
An updated version of the patch. The previous ones were missing the
valgrind check, resulting in the pymalloc code paths being executed
(which in turn cause unintialised read warnings from valgrind).
jamesh commented on Apr 2, 2008
jameshmannequin
MannequinAuthor
More actions
There are probably a few other performance optimisations that would be
good to turn off when running under valgrind.
A big one is the tuple cache: if there are tuple reference counting
issues, they won't necessarily be seen by valgrind if the tuple is kept
and reused rather than being freed.
There are probably a few other performance optimisations that would be
good to turn off when running under valgrind.
A big one is the tuple cache: if there are tuple reference counting
issues, they won't necessarily be seen by valgrind if the tuple is kept
and reused rather than being freed.
The tuple cache can't be disabled entirely. Some parts of Python and
some third party modules may depend on the fact that an empty tuple ()
is a singleton in Python.
The tuple cache could be reduced to empty tuple and some other caches
like the list and dict cache could be disabled entirely.
Christian
jamesh commented on Feb 4, 2009
jameshmannequin
MannequinAuthor
More actions
Attached is an updated version of the patch against trunk (2.7). It
simply fixes the conflicts that have occurred since the previous patch.
Activity
jamesh commentedon Mar 19, 2008
When I want to use valgrind to check for leaks in a Python program (or
test suite), I generally want pymalloc disabled. When not running
valgrind I generally want it enabled.
Attached is a patch that automatically bypasses the pymalloc code when
running under valgrind but leaves it enabled overwise.
It is controlled by a WITH_VALGRIND #define, but I haven't updated the
configure script to allow turning it on. I also haven't done much in
the way of profiling to see what the overhead is when not running under
valgrind.
jamesh commentedon Mar 20, 2008
A slightly cleaned up version of the previous patch. I only needed to
include <valgrind/valgrind.h>.
tiran commentedon Mar 21, 2008
Please provide a patch for Python 2.6 that includes a ./configure
--with-valgrind option. We may consider such a patch for 2.6 and 3.0 but
definitely not for 2.5.
lauromoura commentedon Mar 24, 2008
Here's a patch with James changes to obmalloc and a --with-valgrind
option in configure.in.
jamesh commentedon Mar 24, 2008
Here's the updated version of my patch (the obmalloc.c bits applied
without conflicts to the newer source tree).
The configure changes are a bit different to Lauro's ones, in that they
check for the existence of the <valgrind/valgrind.h> header if Valgrind
support was requested.
jamesh commentedon Mar 27, 2008
An updated version of the patch. The previous ones were missing the
valgrind check, resulting in the pymalloc code paths being executed
(which in turn cause unintialised read warnings from valgrind).
jamesh commentedon Apr 2, 2008
There are probably a few other performance optimisations that would be
good to turn off when running under valgrind.
A big one is the tuple cache: if there are tuple reference counting
issues, they won't necessarily be seen by valgrind if the tuple is kept
and reused rather than being freed.
tiran commentedon Apr 2, 2008
James Henstridge schrieb:
The tuple cache can't be disabled entirely. Some parts of Python and
some third party modules may depend on the fact that an empty tuple ()
is a singleton in Python.
The tuple cache could be reduced to empty tuple and some other caches
like the list and dict cache could be disabled entirely.
Christian
jamesh commentedon Feb 4, 2009
Attached is an updated version of the patch against trunk (2.7). It
simply fixes the conflicts that have occurred since the previous patch.
benjaminp commentedon Dec 3, 2009
Thank you. Applied in r76644.