Currently, to check if a certain overlap group is already stored, we compare memory accesses by comparing the content of their corresponding shadow memory.
In some cases, (e.g. if access size is 4 B), this compares also some unrelated bytes status (i.e. the status of the 4 bytes stored in the same shadow byte, but not related to the memory access).
So, if they are different, the algorithm does not match them, thus creating a new overlap group, even if the hash and the memory accesses are actually the same.
To solve this, we could compute the uninitialized interval and compare that.
Of course, this may consume much more time for each detected uninitialized read.
Checj if the solution is worth the additional overhead.
Currently, to check if a certain overlap group is already stored, we compare memory accesses by comparing the content of their corresponding shadow memory.
In some cases, (e.g. if access size is 4 B), this compares also some unrelated bytes status (i.e. the status of the 4 bytes stored in the same shadow byte, but not related to the memory access).
So, if they are different, the algorithm does not match them, thus creating a new overlap group, even if the hash and the memory accesses are actually the same.
To solve this, we could compute the uninitialized interval and compare that.
Of course, this may consume much more time for each detected uninitialized read.
Checj if the solution is worth the additional overhead.