@Mrodfr
Quote:
why this kind of error not detected on DSI itself (for having a better problem output for sending to the author) ???
"DSI" means "data storage interrupt". It just means that an access to an invalid address happened. This can be caused by a gone-wild application which writes to random addresses or by an application which writes just one byte beyond its allocated buffer limits and the buffer is right at the end of a memory page.
MemGuard can report such errors upon a Free#?() operation only, while the DSI may happen at any time as soon as the invalid access happens. But as the name "interrupt" implies it is an interrupt. Interrupts must be handled fast and you cannot perform fancy stuff like wall checks, symbol look up, etc. The GrimReaper performs this task outside the interrupt.
Application might even write beyond a buffer and you won't get a DSI at all, because the write access still happened within a valid memory page. Such accesses can only be detected by MemGuard. But MemGuard slows down system performance a lot, because the system does
lots of memory allocations. Thus the system itself is doing only some very quick checks. Everything else must be examined when there is a demand for a check, but not all the time.