pmTool Memory Leak Workaround

Update (March 17, 2007): Apparently the memory leak is fixed in Mac OS X 10.4.9. If you have installed the update, you therefore want to uninstall the workaround, assuming you installed it. If you have the memory leak, try installing Mac OS X 10.4.9 before you try this workaround.

As described by Kevin Ballard, there is a memory leak in Activity Monitor under Mac OS, specifically with the program pmTool which Activity Monitor uses. Fortunately, if you kill pmTool, it regenerates, but only after freeing up its eaten memory. So, as a workaround, you can install net.smallinfinity.his.pmTool.plist into /Library/LaunchDaemons, make sure the file is owned by root and then activate it. It will killall pmTool every 30 minutes.

Specifically, the plist is

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
	<key>Disabled</key>
		<false/>
	<key>Label</key>
		<string>net.smallinfinity.his.pmTool</string>
	<key>UserName</key>
		<string>root</string>
	<key>StartInterval</key>
		<integer>1800</integer>
	<key>ProgramArguments</key>
		<array>
			<string>/usr/bin/killall</string>
			<string>pmTool</string>
		</array>
</dict>
</plist>

This says to run as root, and killall pmTool every 30 minutes. It has to run as root because, for some reason--probably so it can examine all processes--pmTool runs as root. Because it runs as root, you have to make sure that once you have installed it, /Library/LaunchDaemons/net.smallinfinity.his.pmTool.plist is owned by root and has correct permissions. To do so, open a Terminal and type

chmod 0644 /Library/LaunchDaemons/net.smallinfinity.his.pmTool.plist
sudo chown root:wheel /Library/LaunchDaemons/net.smallinfinity.his.pmTool.plist

Finally, you have to tell launchd that the new job exists. This only has to be done once; it survives reboot. In the Terminal, type

sudo launchctl load /Library/LaunchDaemons/net.smallinfinity.his.pmTool.plist

To Uninstall

Once/if Since Apple comes out with a fix for has fixed this memory leak, you can uninstall this workaround by typing in a Terminal

sudo launchctl unload -w /Library/LaunchDaemons/net.smallinfinity.his.pmTool.plist

This page was made on January 14, 2007, updated March 17, 2007, and is Copyrighted © smallinfinity.net.

Valid XHTML 1.0! Valid CSS!