Electric Fence on OS X

I recently suspected the dreaded buffer overrun in a project I’m hacking for work. These can be a huge pain to find, especially if your code has a considerable amount of mallocs and fails irregularly. After dismissing the urge to just write it all in python (wasn’t practical for the application) I decided to learn a malloc debugging tool.

I was excited to learn that macs come with their own malloc debuger, entitled Malloc Debugger. How handy! Through several attempts to use it on my application however I kept getting the same error.

Unable to read malloc information from (null)

I’m probably just missing some libraries to include that would have been had I been using Xcode. Instead I was compiling with g++ -g.

Anyway, I eventually checked out Electric Fence (efence) and had decent results. It didn’t compile right away, you have to comment out line 33 of page.c as stated in this mailing list.

Copy the compiled library libefence.a to /usr/lib/ and re-compile your application with the flag -lefence.

Upon execution it will spit out problems you have in your malloc code and die if there was a buffer overrun. Its a great tool to turn on while you work as you’ll be informed of any overwrites as you’re developing. Not after the whole thing is done and quitting at odd times :).

Dave

Advertisements
1 comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s