Bug#660960: tight loop attempting to madvise(..., MADV_DONTNEED) locked memory

Jamie Heilman jamie at audible.transient.net
Sat Feb 25 09:14:07 UTC 2012


Mike Hommey wrote:
> > Jamie Heilman wrote:
> > > #0  0x00007ffff7407407 in madvise () from /lib/x86_64-linux-gnu/libc.so.6
> > > #1  0x00007ffff663169e in ?? () from /usr/lib/xulrunner-10.0/libmozjs.so
> > > #2  0x00007ffff6628886 in ?? () from /usr/lib/xulrunner-10.0/libmozjs.so
> > > #3  0x00007ffff6628d51 in ?? () from /usr/lib/xulrunner-10.0/libmozjs.so
> > > #4  0x00007ffff508d697 in nsJSContext::ScriptEvaluated (this=0x7fffe52690a0, 
> Try removing the /usr/lib/xulrunner-*/libmozjs.so symlink.

Well, that was easy.  And yeah, that confirms my suspicions:

#0  0x00007ffff7407407 in madvise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff494d69e in js::gc::DecommitMemory (addr=<optimized out>, 
    size=<optimized out>)
    at /tmp/buildd/iceweasel-10.0.2/js/src/jsgcchunk.cpp:370
#2  0x00007ffff4944886 in DecommitFreePages (cx=<optimized out>)
    at /tmp/buildd/iceweasel-10.0.2/js/src/jsgc.cpp:2406
#3  SweepPhase (gckind=GC_SHRINK, gcmarker=0x7fffffff9460, cx=0x7fffe3b1d330)
    at /tmp/buildd/iceweasel-10.0.2/js/src/jsgc.cpp:2640
#4  MarkAndSweep (gckind=GC_SHRINK, cx=0x7fffe3b1d330)
    at /tmp/buildd/iceweasel-10.0.2/js/src/jsgc.cpp:2677
#5  GCCycle (cx=0x7fffe3b1d330, comp=<optimized out>, gckind=GC_SHRINK)
    at /tmp/buildd/iceweasel-10.0.2/js/src/jsgc.cpp:2921
#6  0x00007ffff4944d51 in js_GC (cx=0x7fffe3b1d330, comp=0x0, 
    gckind=GC_SHRINK, reason=js::gcstats::MAYBEGC)
    at /tmp/buildd/iceweasel-10.0.2/js/src/jsgc.cpp:2983
#7  0x00007ffff5a42697 in nsJSContext::ScriptEvaluated (this=0x7fffe3c954c0, 
    aTerminated=true)
    at /tmp/buildd/iceweasel-10.0.2/dom/base/nsJSEnvironment.cpp:3122

So yeah, not checking errno and repeatedly attempting to MADV_DONTNEED
a range of memory that fails with a reason that isn't EAGAIN ... won't
wash.  While the whole alsa/jack plugin thing is somewhat unusal, that
really is just an easy way to showcase the bigger problem of the lazy
approach to madvise that firefox is taking.  I can reconfigure my
audio setup to avoid locking memory easily enough.  Still, firefox
shoudln't re-madvise memory ranges doomed to failure over and over
again.

-- 
Jamie Heilman                     http://audible.transient.net/~jamie/





More information about the pkg-mozilla-maintainers mailing list