|
|
Chromium Code Reviews|
Created:
5 years ago by Mike Wittman Modified:
5 years ago CC:
chromium-reviews, vmpstr+watch_chromium.org Base URL:
https://chromium.googlesource.com/chromium/src.git@lkcr Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionStack sampling profiler: remove RUNTIME_FUNCTION sanity check
This heuristic is causing lots of false positives resulting in
prematurely-truncated stacks. It shouldn't be necessary any longer, as
the check that the instruction pointer is in a valid module should fail
for this case before executing this test.
Also, bump the profiler enable percentage down to 15% while evaluating
this and future incremental changes. This is large enough to detect an
incrementally increased crash rate, while small enough that an
unexpected crasher will not cause a huge problem.
BUG=555770, 541650, 541419
Committed: https://crrev.com/c383cfebcbf223980034223788973dff2f382d43
Cr-Commit-Position: refs/heads/master@{#362526}
Patch Set 1 #
Total comments: 2
Patch Set 2 : make variations add to 100 #
Messages
Total messages: 21 (7 generated)
Description was changed from ========== Stack sampling profiler: remove RUNTIME_FUNCTION sanity check This heuristic is causing lots of false positives resulting in prematurely-truncated stacks. It shouldn't be necessary any longer, as the check that the instruction pointer is in a valid module should fail for this case before executing this test. Also, bump the profiler enable percentage down to 15% while evaluating this and future incremental changes. This is large enough to detect an incrementally increased crash rate, while small enough that an unexpected crasher will not cause a huge problem. BUG=555770, 541650 ========== to ========== Stack sampling profiler: remove RUNTIME_FUNCTION sanity check This heuristic is causing lots of false positives resulting in prematurely-truncated stacks. It shouldn't be necessary any longer, as the check that the instruction pointer is in a valid module should fail for this case before executing this test. Also, bump the profiler enable percentage down to 15% while evaluating this and future incremental changes. This is large enough to detect an incrementally increased crash rate, while small enough that an unexpected crasher will not cause a huge problem. BUG=555770, 541650, 541419 ==========
wittman@chromium.org changed reviewers: + brucedawson@chromium.org
PTAL
On 2015/11/23 18:32:15, Mike Wittman wrote: > PTAL What's causing the false positives? i.e.; why is SanityCheckRuntimeFunction triggering when it shouldn't? Is that understood?
On 2015/11/23 19:15:28, brucedawson wrote: > On 2015/11/23 18:32:15, Mike Wittman wrote: > > PTAL > > What's causing the false positives? i.e.; why is SanityCheckRuntimeFunction > triggering when it shouldn't? Is that understood? Yes, there are cases where the code for functions legitimately does not lie between the RUNTIME_FUNCTION begin and end addresses. I've seen this particularly in some Windows DLLs where functions contain jumps to other supporting code. I'm assuming this is due to either LTCG deduplication or hand-coded assembly implementations.
On 2015/11/23 19:40:42, Mike Wittman wrote: > On 2015/11/23 19:15:28, brucedawson wrote: > > On 2015/11/23 18:32:15, Mike Wittman wrote: > > > PTAL > > > > What's causing the false positives? i.e.; why is SanityCheckRuntimeFunction > > triggering when it shouldn't? Is that understood? > > Yes, there are cases where the code for functions legitimately does not lie > between the RUNTIME_FUNCTION begin and end addresses. I've seen this > particularly in some Windows DLLs where functions contain jumps to other > supporting code. I'm assuming this is due to either LTCG deduplication or > hand-coded assembly implementations. Windows binaries go through a post-link step that aggressively rearranges basic blocks in order to separate hot and cold code, and this causes functions to be scattered wildly. It is unfortunate that the begin and end addresses are a lie. I guess the alternative is having many overlapping begin/end addresses. I have no idea how this actually works in practice.
lgtm
On 2015/11/23 19:49:15, brucedawson wrote: > On 2015/11/23 19:40:42, Mike Wittman wrote: > > On 2015/11/23 19:15:28, brucedawson wrote: > > > On 2015/11/23 18:32:15, Mike Wittman wrote: > > > > PTAL > > > > > > What's causing the false positives? i.e.; why is SanityCheckRuntimeFunction > > > triggering when it shouldn't? Is that understood? > > > > Yes, there are cases where the code for functions legitimately does not lie > > between the RUNTIME_FUNCTION begin and end addresses. I've seen this > > particularly in some Windows DLLs where functions contain jumps to other > > supporting code. I'm assuming this is due to either LTCG deduplication or > > hand-coded assembly implementations. > > Windows binaries go through a post-link step that aggressively rearranges basic > blocks in order to separate hot and cold code, and this causes functions to be > scattered wildly. > > It is unfortunate that the begin and end addresses are a lie. I guess the > alternative is having many overlapping begin/end addresses. I have no idea how > this actually works in practice. That makes sense. It may be that there's some kind of table maintained for these regions behind the scenes, with a custom function table callback to map them to the associated RUNTIME_FUNCTIONs.
wittman@chromium.org changed reviewers: + cpu@chromium.org
Carlos, can you approve the profiler enable percentage decrease from 50% to 15%? Out of caution I'd like to keep this at 15% while I'm addressing the remaining profiler issues.
https://codereview.chromium.org/1465273002/diff/1/chrome/browser/stack_sampli... File chrome/browser/stack_sampling_configuration.cc (right): https://codereview.chromium.org/1465273002/diff/1/chrome/browser/stack_sampli... chrome/browser/stack_sampling_configuration.cc:144: DCHECK_EQ(100, total_weight); does not sum to 100
https://codereview.chromium.org/1465273002/diff/1/chrome/browser/stack_sampli... File chrome/browser/stack_sampling_configuration.cc (right): https://codereview.chromium.org/1465273002/diff/1/chrome/browser/stack_sampli... chrome/browser/stack_sampling_configuration.cc:144: DCHECK_EQ(100, total_weight); On 2015/11/23 23:50:53, cpu wrote: > does not sum to 100 Fixed.
Carlos, can you approve the enable percentage change? I'd like to commit this after tomorrow's dev release.
lgtm
The CQ bit was checked by wittman@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from brucedawson@chromium.org Link to the patchset: https://codereview.chromium.org/1465273002/#ps20001 (title: "make variations add to 100")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1465273002/20001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1465273002/20001
Message was sent while issue was closed.
Description was changed from ========== Stack sampling profiler: remove RUNTIME_FUNCTION sanity check This heuristic is causing lots of false positives resulting in prematurely-truncated stacks. It shouldn't be necessary any longer, as the check that the instruction pointer is in a valid module should fail for this case before executing this test. Also, bump the profiler enable percentage down to 15% while evaluating this and future incremental changes. This is large enough to detect an incrementally increased crash rate, while small enough that an unexpected crasher will not cause a huge problem. BUG=555770, 541650, 541419 ========== to ========== Stack sampling profiler: remove RUNTIME_FUNCTION sanity check This heuristic is causing lots of false positives resulting in prematurely-truncated stacks. It shouldn't be necessary any longer, as the check that the instruction pointer is in a valid module should fail for this case before executing this test. Also, bump the profiler enable percentage down to 15% while evaluating this and future incremental changes. This is large enough to detect an incrementally increased crash rate, while small enough that an unexpected crasher will not cause a huge problem. BUG=555770, 541650, 541419 ==========
Message was sent while issue was closed.
Committed patchset #2 (id:20001)
Message was sent while issue was closed.
Description was changed from ========== Stack sampling profiler: remove RUNTIME_FUNCTION sanity check This heuristic is causing lots of false positives resulting in prematurely-truncated stacks. It shouldn't be necessary any longer, as the check that the instruction pointer is in a valid module should fail for this case before executing this test. Also, bump the profiler enable percentage down to 15% while evaluating this and future incremental changes. This is large enough to detect an incrementally increased crash rate, while small enough that an unexpected crasher will not cause a huge problem. BUG=555770, 541650, 541419 ========== to ========== Stack sampling profiler: remove RUNTIME_FUNCTION sanity check This heuristic is causing lots of false positives resulting in prematurely-truncated stacks. It shouldn't be necessary any longer, as the check that the instruction pointer is in a valid module should fail for this case before executing this test. Also, bump the profiler enable percentage down to 15% while evaluating this and future incremental changes. This is large enough to detect an incrementally increased crash rate, while small enough that an unexpected crasher will not cause a huge problem. BUG=555770, 541650, 541419 Committed: https://crrev.com/c383cfebcbf223980034223788973dff2f382d43 Cr-Commit-Position: refs/heads/master@{#362526} ==========
Message was sent while issue was closed.
Patchset 2 (id:??) landed as https://crrev.com/c383cfebcbf223980034223788973dff2f382d43 Cr-Commit-Position: refs/heads/master@{#362526} |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
