mozilla

Compare Revisions

Debugging Mozilla with Helgrind

Change Revisions

Revision 92430:

Revision 92430 by jseward@acm.org on

Revision 92431:

Revision 92431 by jseward@acm.org on

Title:
Debugging Mozilla with Helgrind
Debugging Mozilla with Helgrind
Slug:
Debugging_Mozilla_with_Helgrind
Debugging_Mozilla_with_Helgrind
Content:

Revision 92430
Revision 92431
n24    <h3>n24    <h3 id="Prerequisites">
n31      <li>Markup for the Mozilla code base, that tells Helgrind an31      <li>Markup for the Mozilla code base.&nbsp; This describes 
>bout synchronisation events it doesn't understand, and about some>to Helgrind the effect of some about synchronisation events it do
> harmless races.&nbsp; Get it from <a class=" link-https" href="h>esn't understand, primarily the behaviour of release methods in t
>ttps://bugzilla.mozilla.org/show_bug.cgi?id=551155#c19" title="ht>hread-safe refcounted classes.&nbsp; It also stops Helgrind compl
>tps://bugzilla.mozilla.org/show_bug.cgi?id=551155#c19">bug 551155>aining about some harmless races in the JS engine.&nbsp; Get it f
> comment 19</a>.>rom <a class=" link-https" href="https://bugzilla.mozilla.org/sho
 >w_bug.cgi?id=551155#c19" title="https://bugzilla.mozilla.org/show
 >_bug.cgi?id=551155#c19">bug 551155 comment 19</a>.
n45    <h3>n45    <h3 id="Platform">
n55    <h3>n55    <h3 id="What_to_expect">
n69    <h3>n69    <h3 id="Differences_from_the_SVN_trunk_Helgrind">
n77    <h3>n77    <h3 id="Cranking_reasonable_performance_out_of_Helgrind">
n91      When you want to investigate in detail, cut the workload don91      When you want to investigate in detail, cut the workload do
>wn as much as possible, and then re-enable the history mechanism,>wn as much as possible, and then re-enable the history mechanism,
> either by simply omitting <code>--history-level=none</code>, or > either by simply omitting <code>--history-level=none</code>, or 
>giving the default setting <code>--history-level=full</code>.&nbs>giving the default setting <code>--history-level=full</code>.&nbs
>p; That should give you both stacks involved in the race.&nbsp; I>p; That should give you both stacks involved in the race.&nbsp; I
>f it doesn't, you may have to&nbsp; throw even more memory at the>f it doesn't, you may have to&nbsp; throw even more memory at the
> problem via the <code>--conflict-cache-size=</code> (try valgrin> problem via the <code>--conflict-cache-size=</code> (try valgrin
>d <code>--tool=helgrind --help</code> for details).&nbsp; This co>d <code>--tool=helgrind --help</code> for details).&nbsp; This co
>ntrols how much historical data Helgrind accumulates.<br>>ntrols how much historical data Helgrind accumulates.&nbsp; You m
 >ay also like to try <code>--history-level=approx</code>, which tr
 >ies to strike a balance between these two extremes.<br>
t97        <code>--check-stack-refs=no</code> tells Helgrind not to t97        <code>--check-stack-refs=no</code> tells Helgrind not to 
>race-check references to thread stacks.&nbsp; Since stack accesse>race-check references to thread stacks.&nbsp; Since stack accesse
>s constitute a significant fraction of the total data accesses do>s constitute a significant fraction of the total data accesses do
>ne, it's worth quite a bit in performance terms.&nbsp; 30% ish im>ne, it's worth quite a bit in performance terms, 30% perhaps.&nbs
>provement, maybe.&nbsp; This obviously means it won't detect race>p; This obviously means it won't detect races on thread stacks.&n
>s, on thread stacks.&nbsp; Allowing one thread to access another'>bsp; Allowing one thread to access another's stack sounds pretty 
>s stack sounds pretty dubious, and it doesn't seem to happen much>dubious, and it doesn't appear to happen much: most reported race
>: most reported races are to the heap or global variables, so thi>s are to the heap or global variables, so this is quite a good tr
>s is quite a good tradeoff.&nbsp;>adeoff.&nbsp;

Back to History