Closed Bug 887100 Opened 11 years ago Closed 11 years ago

mozilla_sampler_register_thread leaks pseudostacks (40k per thread)

Categories

(Core :: Gecko Profiler, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 872947

People

(Reporter: bjacob, Unassigned)

Details

(Whiteboard: [MemShrink])

I'm using the mozilla-graphics tree. I was told that this might be fixed on central already, but we recently merged -central (of June 24) into -graphics, and I can still reproduce.

See this log (scroll to the bottom): attachment 767554 [details]

These reports:

==9576== 40,992 bytes in 1 blocks are definitely lost in loss record 6,949 of 6,955
==9576==    at 0x402C7C1: malloc (vg_replace_malloc.c:292)
==9576==    by 0x4041EE4: moz_xmalloc (mozalloc.cpp:54)
==9576==    by 0x7E94F1B: mozilla_sampler_register_thread(char const*, void*) (mozalloc.h:201)
==9576==    by 0x83FD007: mozilla::LazyIdleThread::InitThread() (LazyIdleThread.cpp:173)
==9576==    by 0x6D9EF3C: nsRunnableMethodImpl<void (nsPACMan::*)(), true>::Run() (nsThreadUtils.h:350)
==9576==    by 0x84030DD: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:626)
==9576==    by 0x83B5404: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:238)
==9576==    by 0x8402443: nsThread::ThreadFunc(void*) (nsThread.cpp:264)
==9576==    by 0x4089DFF: _pt_root (ptthread.c:204)
==9576==    by 0x4A2CE99: start_thread (pthread

The code is:

bool mozilla_sampler_register_thread(const char* aName, void* stackTop)
{
  PseudoStack* stack = new PseudoStack();
  tlsPseudoStack.set(stack);

  return Sampler::RegisterCurrentThread(aName, stack, false, stackTop);
}

So I'm assuming that we're leaking these PseudoStack's ? I don't see it being ever destroyed, e.g. in mozilla_sampler_stop() ?
Julian, would Valgrind correctly understand this thread-local global pointer, for reachability analysis?
Flags: needinfo?(jseward)
Sorry looks like I have landed my patch in 872947. I'll get around to it ASAP.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
have not landed*
(In reply to Benoit Jacob [:bjacob] from comment #1)
> Julian, would Valgrind correctly understand this thread-local global
> pointer, for reachability analysis?

I think it does correctly understand it.  But in any case, a bug in this
area -- https://bugs.kde.org/show_bug.cgi?id=324227 -- was fixed in V 3.9.0,
so if this is still a concern, it might be worth trying 3.9.0.
Flags: needinfo?(jseward)
You need to log in before you can comment on or make changes to this bug.