diff --git a/Misc/PURIFY.README b/Misc/PURIFY.README deleted file mode 100644 index c641510e426..00000000000 --- a/Misc/PURIFY.README +++ /dev/null @@ -1,97 +0,0 @@ -Purify (tm) and Quantify (tm) are commercial software quality -assurance tools available from IBM . -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