mozilla

Compare Revisions

Debugging Mozilla with Helgrind

Change Revisions

Revision 92429:

Revision 92429 by jseward@acm.org on

Revision 92430:

Revision 92430 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 92429
Revision 92430
n16      <li>lock ordering inconsistencies -- which are potential den16      <li>lock ordering inconsistencies -- these are potential de
>adlocks>adlocks
n35      <li>A development version of Helgrind.&nbsp; A stock 3.6.1 n35      <li>A development version of Helgrind.&nbsp; A stock 3.6.1 
>installation won't work.&nbsp; SVN&nbsp;trunk will work, but you'>installation won't work -- you won't be able to compile the marke
>ll miss out on some of the new goodies described below.&nbsp; You>d-up Mozilla tree against the 3.6.1. headers.&nbsp; SVN&nbsp;trun
> can check out and build the development version thusly:>k will work, but you'll miss out on some of the new goodies descr
 >ibed below.&nbsp; You can check out and build the development ver
 >sion thusly:
n38        <code>&nbsp;&nbsp; <a class=" external" href="svn://svn.vn38        <code>&nbsp;&nbsp; svn co <a class=" external" href="svn:
>algrind.org/valgrind/branches/HGDEV2" rel="freelink">svn://svn.va>//svn.valgrind.org/valgrind/branches/HGDEV2" rel="freelink">svn:/
>lgrind.org/valgrind/branches/HGDEV2</a> hgdev2<br>>/svn.valgrind.org/valgrind/branches/HGDEV2</a> hgdev2<br>
n51      If you're wanting to run any serious workload (eg, anythingn51      If you're wanting to run any serious workload -- anything m
> much more than a startup and immediate quit of the browser), a 6>uch more than a startup and immediate quit of the browser -- a 64
>4 bit build is strongly recommended.&nbsp; In a 32 bit environmen> bit build is recommended.&nbsp; In a 32 bit environment, Helgrin
>t, Helgrind will quickly eat up your 3GB of address space and die>d will quickly eat up your 3GB of address space and die.&nbsp; If
>.&nbsp; If you're doing something less demanding, for example che> you're doing something less demanding, for example checking a st
>cking a standalone build of the JS engine, a 32 bit build is OK.<>andalone build of the JS engine, a 32 bit build is OK.<br>
>br> 
n53      If you're race checking just the JS shell, you first need tn53      If you're race checking just the JS engine, you first need 
>o do a build of the entire marked-up browser.&nbsp; This is so as>to do a build of the entire marked-up browser.&nbsp; This is so a
> to create a suitably marked up NSPR.&nbsp; Then build the JS she>s to create a suitably marked up NSPR.&nbsp; Then build the JS sh
>ll but link against the NSPR you just created.&nbsp; The system N>ell but link against the NSPR you just created.&nbsp; The system 
>SPR won't suffice, because some of the markup applies to NSPR.>NSPR won't suffice, because some of the markup applies to NSPR.
n61      Hence the first thing to expect is possibly a number of errn61      The first thing to expect is possibly a number of errors th
>ors that are nothing to do with your code.&nbsp; You can suppress>at are nothing to do with your code.&nbsp; You can suppress these
> these in the normal way, by using <code>--gen-suppressions=all</> in the normal way, by using <code>--gen-suppressions=all</code> 
>code> and putting the resulting bits of text in a suppression fil>and putting the resulting bits of text in a suppression file.&nbs
>e.&nbsp; A bit of time assembling a suppression file for errors t>p; A bit of time assembling a suppression file for errors that se
>hat seem irrelevant quickly ameliorates this problem.<br>>em irrelevant quickly ameliorates this problem.<br>
n67      Now .. just in case you're feeling discouraged .. bear in mn67      Just in case you're feeling discouraged, bear in mind that 
>ind that even with these difficulties, it's easily possible to ge>even with these difficulties, it's easily possible to get somethi
>t something useful out of Helgrind.&nbsp;>ng useful out of Helgrind.
t85      The good news is that (1) is much cheaper than (2).&nbsp; Bt85      The good news is that (1) is much cheaper than (2).&nbsp; B
>y default, Helgrind tries to report both stacks involved in a rac>y default, Helgrind tries to report both stacks involved in a rac
>e.&nbsp; That&nbsp; is expensive because it means collecting a st>e.&nbsp; That&nbsp; is expensive because it means collecting a st
>ack trace for, in effect, every memory reference, just in case it>ack trace for, in effect, every memory reference, just in case it
> finds a later memory reference that it races against.&nbsp; It i> finds a later memory reference that it races against.&nbsp; It i
>s nearly impossible to make sense of race reports without having >s nearly impossible to make sense of race reports without having 
>stack traces for both accesses involved, but reporting those requ>stack traces for both accesses involved, and that in turn require
>ires collecting just such a huge set of backtraces.&nbsp; This is>s collecting just such a huge set of backtraces.&nbsp; This is wh
> what makes (2) expensive.<br>>at makes (2) expensive.<br>

Back to History