summaryrefslogtreecommitdiff
path: root/etc/purify.solaris2
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-10-19 22:55:00 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-10-19 22:55:00 +0000
commit770d611724722a577ddada9fb850e0c7aac1d942 (patch)
tree3314aa6c65fc19d7ea760d73d434e8c42bb27e5c /etc/purify.solaris2
parentd848c057e7a745ff2aff72e1291a83a9720fee61 (diff)
downloadATCD-770d611724722a577ddada9fb850e0c7aac1d942.tar.gz
Added a .purify file for Solaris2
Diffstat (limited to 'etc/purify.solaris2')
-rw-r--r--etc/purify.solaris2135
1 files changed, 135 insertions, 0 deletions
diff --git a/etc/purify.solaris2 b/etc/purify.solaris2
new file mode 100644
index 00000000000..dbb1abcafd3
--- /dev/null
+++ b/etc/purify.solaris2
@@ -0,0 +1,135 @@
+#### $Id$
+####
+#### To use: create a symlink, named .purify, to this file in your home
+#### directory:
+#### % ln -s $ACE_ROOT/env/purify.solaris2 ~/.purify
+#### Please note the leading dot in .purify.
+####
+#### I use these Purify options:
+#### -best-effort -cache-dir=/tmp/purifycache -chain-length=20 \
+#### -fds-inuse-at-exit=no -ignore-signals=SIGINT -inuse-at-exit \
+#### -max_threads=100
+#### These options are hard-coded in ACE wrapper_macros.GNU.
+
+####
+#### in addition to what's already in Purify's .purify.solaris2:
+####
+suppress miu malloc; *alloc; thr_setspecific
+suppress miu malloc; realloc; thr_keycreate
+suppress mlk malloc; calloc; thr_setspecific
+suppress plk malloc; *alloc; thr_setspecific
+
+####
+#### This looks like a minor problem in the g++ rx library or the Solaris 2.5
+#### C library qsort.
+####
+suppress umr qst; qsort; rx_compactify_nfa; rx_compile; re_compile_pattern; Regex::Regex(const char*,int,int,const char*); Regex::_GLOBAL_.I.(const Regex&)
+
+####
+#### A problem in Solaris LWPs? This shows up in the ACE Thread_Manager_Test.
+####
+suppress umr _lwp_in_syscall; _thrp_suspend
+
+####
+#### This looks like a benign UMR in the threads library.
+####
+suppress umr __sigprocmask; _thrp_exit; _t_cancel; _thr_exit_common
+
+####
+#### With Solaris 2.5.1, time (and other) functions apparently hold
+#### on to memory for the duration of a process. Not unexpected, but
+#### the following suppress the Purify MIU reports.
+####
+suppress miu malloc; calloc; _tzload; _ltzset_u; localtime_u; ctime
+suppress miu malloc; calloc; _tzload; _ltzset_u; localtime_u; localtime_r; ctime_r
+suppress miu malloc; strdup; _tzload; _ltzset_u; localtime_u; ctime
+suppress miu malloc; strdup; _tzload; _ltzset_u; localtime_u; localtime_r; ctime_r
+suppress miu malloc; tzcpy; getzname; _ltzset_u; localtime_u; ctime
+suppress miu malloc; tzcpy; getzname; _ltzset_u; localtime_u; localtime_r; ctime_r
+suppress miu malloc; strdup; getsystemTZ; _ltzset_u; localtime_u; localtime_r; ctime_r
+suppress miu malloc; _atfork_append; _ld_concurrency; _init
+suppress miu malloc; Balloc; _IO_dtoa; _IO_outfloat; ostream::operator <<(double)
+
+####
+#### Another small leak, this doesn't look harmful.
+####
+suppress miu malloc; process_nls_path; catopen; __STATIC_CONSTRUCTOR(void); _init
+
+####
+#### Socket-related allocations, revealed by IOStream_Test or
+#### SOCK_Connector_Test.
+####
+suppress miu malloc; _nss_XbyY_buf_alloc; gethostbyaddr
+suppress miu malloc; _nss_XbyY_buf_alloc; gethostbyname
+suppress miu malloc; _s_alloc_bufs; _s_alloc; _s_socreate
+suppress miu malloc; add_silink; _s_alloc; _s_socreate
+suppress miu malloc; calloc; fgetnetconfig; getnetlist; setnetconfig
+suppress miu malloc; getnetlist; setnetconfig
+suppress miu malloc; *; getnetlist; setnetconfig
+suppress miu malloc; *; *; getnetlist; setnetconfig
+suppress miu malloc; realloc; rx_compactify_nfa
+suppress miu malloc; strdup; __rpc_getconfip; gethostby*_r
+suppress miu malloc; strdup; getlookups; fgetnetconfig; getnetlist
+suppress miu malloc; *; _nsw_getoneconfig; do_getconfig
+suppress miu malloc; add_concell; do_getconfig; __nsw_getconfig
+
+####
+#### With Sun C++ 4.2, there's an FMR within the ostream deletion.
+####
+suppress fmr unsafe_ostream::flush(void); unsafe_ostream::~unsafe_ostream(void); ostream::~ostream(void); iostream::~iostream(void)
+
+####
+#### Problem with FMR in thread-specific storage? The Purify
+#### trace doesn't show where the allocated storage was freed;
+#### it usually does for FMRs.
+####
+#### **** Purify instrumented ./TSS_Test (pid 16650) ****
+#### FMR: Free memory read:
+#### * This is occurring while in thread 5:
+#### thr_getspecific [libthread.so.1]
+#### worker(void*) [OS.i:3975]
+#### _thread_start [libthread.so.1]
+#### * Reading 4 bytes from 0x7e8c8 in the heap.
+#### * Address 0x7e8c8 is 24 bytes into a freed block at 0x7e8b0 of 32 bytes.
+#### * This block was allocated from thread 4:
+#### malloc [rtlib.o]
+#### realloc [rtlib.o]
+#### thr_keycreate [libthread.so.1]
+#### ACE_OS::thr_keycreate(unsigned int*,void(*)(void*),void*) [OS.cpp:1938]
+#### worker(void*) [TSS_Test.cpp:125]
+#### _thread_start [libthread.so.1]
+#### * There have been 0 frees since this block was freed thread 4.
+####
+#### **** Purify instrumented ./TSS_Test (pid 16650) ****
+#### FMR: Free memory read:
+#### * This is occurring while in thread 5:
+#### thr_setspecific [libthread.so.1]
+#### ACE_OS::thr_setspecific(unsigned int,void*) [OS.cpp:1866]
+#### worker(void*) [TSS_Test.cpp:98]
+#### _thread_start [libthread.so.1]
+#### * Reading 4 bytes from 0x7e8c8 in the heap.
+#### * Address 0x7e8c8 is 24 bytes into a freed block at 0x7e8b0 of 32 bytes.
+#### * This block was allocated from thread 4:
+#### malloc [rtlib.o]
+#### realloc [rtlib.o]
+#### thr_keycreate [libthread.so.1]
+#### ACE_OS::thr_keycreate(unsigned int*,void(*)(void*),void*) [OS.cpp:1938]
+#### worker(void*) [TSS_Test.cpp:125]
+#### _thread_start [libthread.so.1]
+#### * There have been 0 frees since this block was freed thread 4.
+
+suppress fmr thr_getspecific
+suppress fmr thr_setspecific
+
+####
+#### TSS leaks: on Solaris, TSS isn't cleaned up very well.
+####
+suppress mlk malloc; __0OnWuI; operator new(unsigned int); ACE_TSS<*>::make_TSS_TYPE(void) const
+
+# Don't seem to need these any more:
+# suppress miu malloc; __bUiLtIn_nEw; __builtin_new; ACE_Task_Exit::instance ()
+# suppress miu malloc; __bUiLtIn_nEw; __builtin_new; ACE_TSS<*>::make_TSS_TYPE () const
+# suppress mlk malloc; __bUiLtIn_nEw; __builtin_new; ACE_TSS<*>::make_TSS_TYPE () const
+# suppress plk malloc; __bUiLtIn_nEw; __builtin_new; ACE_TSS<*>::make_TSS_TYPE () const
+
+#### EOF