Basically, it tries to force the program to call Sentinel's functions when the program calls system functions. In order to achieve that, Sentinel changes the names of about 400 system library calls. The process is best described with an example of a call to malloc.
Sentinel checks only errors which occur in dynamic memory.
Sentinel can detect memory corruption, reading of uninitialized memory, and they claim that they can detect memory leaks, but they really cannot. I will explain this in detail later. Memory corruption is checked through direct interception, but only if it happens in arguments to functions which Sentinel checks. As an example, consider memcpy. If the requested copy is bigger then the space which is allocated for the data, Sentinel will detect the error.