summaryrefslogtreecommitdiffstats
path: root/Misc/PURIFY.README
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2011-01-17 23:55:58 (GMT)
committerBenjamin Peterson <benjamin@python.org>2011-01-17 23:55:58 (GMT)
commitd1539bb0b6484cfa988edd01be94126fe24d4523 (patch)
tree22d6238e6026ce9d0eddf1ae718123d97fba8431 /Misc/PURIFY.README
parentfba33478a5af3da448ca363626ab451ffc1aef6c (diff)
downloadcpython-d1539bb0b6484cfa988edd01be94126fe24d4523.zip
cpython-d1539bb0b6484cfa988edd01be94126fe24d4523.tar.gz
cpython-d1539bb0b6484cfa988edd01be94126fe24d4523.tar.bz2
Merged revisions 88080 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r88080 | benjamin.peterson | 2011-01-17 17:49:51 -0600 (Mon, 17 Jan 2011) | 1 line very out of date file ........
Diffstat (limited to 'Misc/PURIFY.README')
-rw-r--r--Misc/PURIFY.README97
1 files changed, 0 insertions, 97 deletions
diff --git a/Misc/PURIFY.README b/Misc/PURIFY.README
deleted file mode 100644
index 1e5d2ac..0000000
--- a/Misc/PURIFY.README
+++ /dev/null
@@ -1,97 +0,0 @@
-Purify (tm) and Quantify (tm) are commercial software quality
-assurance tools available from IBM <http://www.ibm.com/software/rational/>.
-Purify is essentially a memory access
-verifier and leak detector; Quantify is a C level profiler. The rest
-of this file assumes you generally know how to use Purify and
-Quantify, and that you have installed valid licenses for these
-products. If you haven't installed such licenses, you can ignore the
-following since it won't help you a bit!
-
-You can easily build a Purify or Quantify instrumented version of the
-Python interpreter by passing the PURIFY variable to the make command
-at the top of the Python tree:
-
- make PURIFY=purify
-
-This assumes that the `purify' program is on your $PATH. Note that
-you cannot both Purify and Quantify the Python interpreter (or any
-program for that matter) at the same time. If you want to build a
-Quantify'd interpreter, do this:
-
- make PURIFY=quantify
-
-Starting with Python 2.3, pymalloc is enabled by default. This
-will cause many supurious warnings. Modify Objects/obmalloc.c
-and enable Py_USING_MEMORY_DEBUGGER by uncommenting it.
-README.valgrind has more details about why this is necessary.
-See below about setting up suppressions. Some tests may not
-run well with Purify due to heavy memory or CPU usage. These
-tests may include: test_largefile, test_import, and test_long.
-
-Please report any findings (problems or no warnings) to python-dev@python.org.
-It may be useful to submit a bug report for any problems.
-
-When running the regression test (make test), I have found it useful
-to set my PURIFYOPTIONS environment variable using the following
-(bash) shell function. Check out the Purify documentation for
-details:
-
-p() {
- chainlen='-chain-length=12'
- ignoresigs='-ignore-signals="SIGHUP,SIGINT,SIGQUIT,SIGILL,SIGTRAP,SIGAVRT,SIGEMT,SIGFPE,SIGKILL,SIGBUS,SIGSEGV,SIGPIPE,SIGTERM,SIGUSR1,SIGUSR2,SIGPOLL,SIGXCPU,SIGXFSZ,SIGFREEZE,SIGTHAW,SIGRTMIN,SIGRTMAX"'
- followchild='-follow-child-processes=yes'
- threads='-max-threads=50'
- export PURIFYOPTIONS="$chainlen $ignoresigs $followchild $threads"
- echo $PURIFYOPTIONS
-}
-
-Note that you may want to crank -chain-length up even further. A
-value of 20 should get you the entire stack up into the Python C code
-in all situations.
-
-With the regression test on a fatly configured interpreter
-(i.e. including as many modules as possible in your Modules/Setup
-file), you'll probably get a gabillion UMR errors, and a few MLK
-errors. I think most of these can be safely suppressed by putting the
-following in your .purify file:
-
- suppress umr ...; "socketmodule.c"
- suppress umr ...; time_strftime
- suppress umr ...; "dbmmodule.c"
- suppress umr ...; "gdbmmodule.c"
- suppress umr ...; "grpmodule.c"
- suppress umr ...; "nismodule.c"
- suppress umr ...; "pwdmodule.c"
-
-Note: this list is very old and may not be accurate any longer.
-It's possible some of these no longer need to be suppressed.
-You will also need to suppress warnings (at least umr)
-from Py_ADDRESS_IN_RANGE.
-
-This will still leave you with just a few UMR, mostly in the readline
-library, which you can safely ignore. A lot of work has gone into
-Python 1.5 to plug as many leaks as possible.
-
-Using Purify or Quantify in this way will give you coarse grained
-reports on the whole Python interpreter. You can actually get more
-fine grained control over both by linking with the optional `pure'
-module, which exports (most of) the Purify and Quantify C API's into
-Python. To link in this module (it must be statically linked), edit
-your Modules/Setup file for your site, and rebuild the interpreter.
-You might want to check out the comments in the Modules/puremodule.c
-file for some idiosyncrasies.
-
-Using this module, you can actually profile or leak test a small
-section of code, instead of the whole interpreter. Using this in
-conjuction with pdb.py, dbx, or the profiler.py module really gives
-you quite a bit of introspective power.
-
-Naturally there are a couple of caveats. This has only been tested
-with Purify 4.0.1 and Quantify 2.1-beta on Solaris 2.5. Purify 4.0.1
-does not work with Solaris 2.6, but Purify 4.1 which reportedly will,
-is currently in beta test. There are funky problems when Purify'ing a
-Python interpreter build with threads. I've had a lot of problems
-getting this to work, so I generally don't build with threads when I'm
-Purify'ing. If you get this to work, let us know!
-
--Barry Warsaw <bwarsaw@cnri.reston.va.us>