DynamoRIO / DynamoRIO/drmemory

study -check_non_moves vs -check_cmps

Open
#136 0 comments 0 reactions 0 assignees View on GitHub
Migrated Priority-Low Type-Feature
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.