Description
Use the following procedure to collect information for a suspected memory leak in vxdclid process. This procedure uses the libumem feature of the Solaris Operating System, the feature was first available in Solaris 9 update 3 and so can not be employed on a Solaris version prior to this. libumem is a library, developed by Sun, that is used to track memory allocations of userland processes and as such, can be used to help identify memory leaks.
# cd /opt/VRTSsfmh/bin
0. Stop vxdclid process:
# /opt/VRTSsfmh/etc/vxdcli.sh stop
1. Capture ownership information and permissions of the vxdclid file:
-r-xr-xr-x 1 root other 105 Oct 19 09:33 vxdclid
2. Move vxdclid to different name:
# mv vxdclid vxdclid.orig
3. Create wrapper script filename 'vxdclid' with the following content (the following entry is all on one line):
UMEM_DEBUG=default UMEM_LOGGING=transaction LD_PRELOAD=libumem.so.1 /opt/VRTSsfmh/bin/vxdclid.orig $*
4. Set wrapper script to have same permissions and ownership as original vxdclid file:
# chown root:other vxdclid
5. Start vxdclid process:
# /opt/VRTSsfmh/etc/vxdcli.sh start
6. Check process is running (note it should show that the '.orig' is running)::
root 8404 1 0 11:43:57 ? 0:00 /opt/VRTSsfmh/bin/vxdclid.orig
7. Once the problem has been reproduced, ensure the memory leak has occurred (the larger the leak that occurs the better).
The Solaris command 'pmap' can be used to monitor memory usage of the process for example:
# pmap -x `pgrep vxdclid`
8. Force the process to drop a core (change pid number accordingly to that identified in step 6 above):
# gcore 8404
9. Capture findleaks information from the core:
# echo "::findleaks -dv" | mdb core.8404
10. As well as the output of the above command, send in core file the vxdclid binary and shared libraries used by vxdclid to support for analysis.