Linux C debugging library to detect memory corruptions

Posted by calandoa on Stack Overflow See other posts from Stack Overflow or by calandoa
Published on 2010-04-30T17:42:54Z Indexed on 2010/04/30 17:47 UTC
Read the original article Hit count: 277

When working sometimes ago on an embedded system with a simple MMU, I used to program dynamically this MMU to detect memory corruptions.

For instance, at some moment at runtime, the foo variable was overwritten with some unexpected data (probably by a dangling pointer or whatever). So I added the additional debugging code :

  • at init, the memory used by foo was indicated as a forbidden region to the MMU;
  • each time foo was accessed on purpose, access to the region was allowed just before then forbidden just after;
  • a MMU irq handler was added to dump the master and the address responsible of the violation.

This was actually some kind of watchpoint, but directly self-handled by the code itself.

Now, I would like to reuse the same trick, but on a x86 platform. The problem is that I am very far from understanding how is working the MMU on this platform, and how it is used by Linux, but I wonder if any library/tool/system call already exist to deal with this problem.

Note that I am aware that various tools exist like Valgrind or GDB to manage memory problems, but as far as I know, none of these tools car be dynamically reconfigured by the debugged code.

I am mainly interested for user space under Linux, but any info on kernel mode or under Windows is also welcome!

© Stack Overflow or respective owner

Related posts about c

    Related posts about linux