mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 10:05:29 +00:00
(Philippe Waroquiers, philippe.waroquiers@skynet.be) This patch provides three improvements in the way the free list is handled in memcheck. First improvement: a new command line option --freelist-big-blocks (default 1000000) specifies the size of "free list big blocks". Such big blocks will be put on the free list, but will be re-cycled first (i.e. in preference to block having a smaller size). This fixes the bug https://bugs.kde.org/show_bug.cgi?id=250065. Technically, the freed list is divided in two lists : small and big blocks. Blocks are first released from the big block list. Second improvement: the blocks of the freed list are re-cycled before a new block is malloc-ed, not after a block is freed. This gives better error messages for dangling pointer errors when doing many frees without doing malloc between the frees. (this does not uses more memory). Third improvement: a block bigger than the free list volume will be put in the free list (till a malloc is done, so as the needed memory is not bigger than before) but will be put at the beginning of the free list, rather than at the end. So, allocating then freeing such a block does not cause any blocks in the free list to be released. Results of the improvements above, with the new regression test memcheck/test/big_blocks_freed_list: with the patch, 7 errors are detected, 6 are giving the (correct) allocation stack. Without the patch, only 6 errors are detected, 5 errors without allocation stack, 1 with a (wrong) allocation stack. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12202
3 lines
73 B
Plaintext
3 lines
73 B
Plaintext
prog: memalign2
|
|
vgopts: -q --freelist-vol=100000 --freelist-big-blocks=0
|