mozilla

Compare Revisions

Debugging Mozilla with Valgrind

Change Revisions

Revision 17956:

Revision 17956 by Josh on

Revision 17957:

Revision 17957 by Jesse on

Title:
Debugging Mozilla with Valgrind
Debugging Mozilla with Valgrind
Slug:
Debugging_Mozilla_with_Valgrind
Debugging_Mozilla_with_Valgrind
Content:

Revision 17956
Revision 17957
n44      (2)&nbsp;Run Valgrind with <code>--smc-check=all</code>.&nbn44      (2)&nbsp;Run Valgrind with <code>--smc-check=all-non-file</
>sp; Always.&nbsp; If you don't do this, it will quickly crash in >code>.&nbsp; Always.&nbsp; If you don't do this, it will quickly 
>JIT-generated code.>crash in JIT-generated code.
n71      Jesse has one somewhere.n71      Jesse has one that he uses for fuzzing.
72    </p>
73    <p>
74      <a class=" external" href="http://mxr.mozilla.org/mozilla-c
 >entral/source/build/valgrind/" rel="freelink">http://mxr.mozilla.
 >org/mozilla-centr...uild/valgrind/</a>
n77      Pass the parameter <code>--smc-check=all</code> to <code>van80      Pass the parameter <code>--smc-check=all-non-file</code> to
>lgrind</code>.> <code>valgrind</code>.
78    </p>
79    <p>
80      <em>Note:</em> this option makes Valgrind 3.6.x run somewha
>t slower.&nbsp; Valgrind trunk contains improvements that further 
> reduce the extra overhead, especially on 64-bit platforms. 
n83      <strong>Note:</strong>&nbsp;You should use <code>--smc-checn83      <strong>Note:</strong>&nbsp;You should use <code>--smc-chec
>k=all</code> when using all Valgrind tools -- Memcheck, Helgrind,>k=all-non-file</code> when using all Valgrind tools -- Memcheck, 
> Massif, DHAT, whatever.&nbsp; Firefox will crash without it, if >Helgrind, Massif, DHAT, whatever.&nbsp; Firefox will crash withou
>it loads a page and the JS&nbsp;JIT&nbsp;is enabled.&nbsp; Config>t it, if it loads a page and the JS&nbsp;JIT&nbsp;is enabled.&nbs
>uring Firefox with <code>--enable-valgrind</code> is not enough t>p; Configuring Firefox with <code>--enable-valgrind</code> is not
>o make that work. <code>--smc-check=all</code> is always required> enough to make that work. <code>--smc-check=all-non-file</code> 
>.>is always required.
n98      As per comments above you must also pass <code>--debugger-an98      As per comments above you must also pass <code>--debugger-a
>rgs=--smc-check=all</code> in <code>EXTRA_TEST_ARGS</code>.>rgs=--smc-check=all-non-file</code> in <code>EXTRA_TEST_ARGS</cod
 >e>.
n116      (3)&nbsp;MANDATORY: run Valgrind with <code>--smc-check=alln116      (3)&nbsp;MANDATORY: run Valgrind with <code>--smc-check=all
></code>, always.&nbsp; Otherwise it will crash in JIT-created cod>-non-file</code>, always.&nbsp; Otherwise it will crash in JIT-cr
>e.&nbsp; Also, some of the MacOSX&nbsp;system libraries generate >eated code.&nbsp; Also, some of the MacOSX&nbsp;system libraries 
>code on the fly, and will not run correctly without this flag.&nb>generate code on the fly, and will not run correctly without this
>sp; On ARM&nbsp;CPUs you can omit it, since ARM requires explicit> flag.&nbsp; On ARM&nbsp;CPUs you can omit it, since ARM requires
> icache invalidation and Valgrind observes and honours such reque> explicit icache invalidation and Valgrind observes and honours s
>sts.>uch requests.
n134      (8) Use 64-bit builds of Firefox in preference to 32-bit bun134      (8) Use 64-bit builds of Firefox in preference to 32-bit bu
>ilds.&nbsp; 64-bit code has more available registers and better c>ilds.&nbsp; 64-bit code has more available registers and better c
>alling conventions, both of which reduce the number of memory ref>alling conventions, both of which reduce the number of memory ref
>erences Valgrind has to check.&nbsp; Also, for SVN&nbsp;trunk Val>erences Valgrind has to check.&nbsp; Also, for SVN&nbsp;trunk Val
>grind builds only, the overhead for <code>--smc-check=all</code> >grind builds only, the overhead for <code>--smc-check=all-non-fil
>is lower than on 32-bit targets.>e</code> is lower than on 32-bit targets.
t155      mk_add_options MOZ_MAKE_FLAGS="-j4"</span></code><br>t155      mk_add_options MOZ_MAKE_FLAGS="-j4"</span></code>

Back to History