DynamoRIO / DynamoRIO/drmemory
study -check_non_moves vs -check_cmps
- Dominant language
- C
- Stars
- 2.7k
- Forks
- 290
- PR merge metrics
- No merged PRs in 30d
Description
_From [derek.br...@gmail.com](https://code.google.com/u/117968039472581148324/) on December 10, 2010 17:57:57_
PR 447355
when I put in shadow value propagation I didn't want to take Valgrind's
word for everything and I put in an option -check_non_moves to check for
errors on all non-move instructions. I haven't done a thorough study but
my general impression is that my -check_cmps produces fewer false
positives.
this case covers fixing some bugs that have cropped up (we have no big
regression suite...) and studying the differences on a variety of apps.
-check_non_moves is more efficient since it avoids propagation work (mainly
relevant for sub-dword).
Server: perforce-panda.eng.vmware.com:1985
```
PR 447355: -check_non_moves
fixed two issues w/ -check_non_moves:
* dst2 does not raise num_to_propagate
* added rawmemchr pattern
```
still todo:
- strlen, strchr patterns: show up in crafty test
- study differences in false positives and in performance
on linux mcf has 0 errors w/ or w/o -check_non_moves
crafty w/o -check_non_moves has 1 uninit
w/ -check_non_moves it has 1551
the strchr and strlen should go away by adjusting patterns to handle
-check_non_moves instead of only -check_cmps, but the crafty ones would
remain:
> grep -A 1 UNINIT errs | grep '^ 0x' | sort -n | uniq -c
7 0x00465d05 libc.so.6!strchr
12 0x00465d44 libc.so.6!strchr
5 0x004663ba libc.so.6!strlen
4 0x004663d1 libc.so.6!strlen
5 0x004663e8 libc.so.6!strlen
4 0x004663ff libc.so.6!strlen
1 0x08048ee5 crafty!SearchOutput
1 0x08049285 crafty!SearchOutput
1 0x080492f6 crafty!SearchOutput
16 0x0806622a crafty!InputMove
5 0x08066283 crafty!InputMove
1 0x080678f5 crafty!Iterate
1 0x08067a91 crafty!Iterate
1 system call 174=rt_sigaction
_Original issue: http://code.google.com/p/drmemory/issues/detail?id=136_
Contributor guide
Assessment
This issue has not been assessed yet.