Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mod+offs suppression doesn't work on tests/malloc, and adds bogus callstack from symbol suppression #145

Open
derekbruening opened this issue Nov 28, 2014 · 0 comments

Comments

@derekbruening
Copy link
Contributor

From derek.br...@gmail.com on December 10, 2010 17:58:00

PR 464809

It doesn't work on tests/malloc b/c the suppress.txt is missing the 2nd
"not in a module" frame, yet that frame is present in the original error
that suppress.txt was generated from and in the same error in the next run:

added to suppression table " "

on_suppression_list: looking up " "
on_suppression_list: looking up " "

Also, for the symbol callstack, why is drmem adding the final "not in a module"?

suppression file line: "# This call stack is the symbol based version of the one above"
suppression file line: "UNADDRESSABLE ACCESS"
suppression file line: "malloc!main"
suppression file line: "libc.so.6!__libc_start_main"
suppression file line: "malloc!_start"
suppression file line: "malloc!__libc_csu_init"
suppression file line: " "
suppression file line: ""

added to suppression table " "

     Went ahead and fixed part of PR 464809 since it was an easy fix:
     * Include address of 0 in suppression callstacks

     Results: memory usage of -check_leaks is about 1/8 of what it was.
     But we're still using a noticeable amount on a many-malloc app:
     at init point about 43MB for stored callstacks (410K outstanding mallocs).
     We'll want to share identical callstacks to cut that (=> PR 465174).

I fixed first problem, the missing frames, then just those frames are read by libdrmemory.so and used for suppression, which is incorrect because all mod!func type suppression call stacks should be ignored by libdrmemory.so (mod!func suppression info is for postprocess.pl).

As frames are no longer printed by default, this isn't an issue. However, if the user explicitly asks for showing non module frames in error reports and uses them in suppression call stacks, then frames should be ignored for mod!func type suppression info and not for mod+offs type. Otherwise, in the rare case that the top-most frame of an error has frame, it might be suppressed incorrectly.

Lowering priority as the default is what is relevant in most scenarios.

Original issue: http://code.google.com/p/drmemory/issues/detail?id=145

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant