This is a report of a possible bug related to this.
> It also has the serious disadvantage that
>mistakes result in exploitable use-after-frees, rather than unexploitable
>leaks. It also causes various problems with the WebIDL binding
>codegenerator in its current incarnation.
I just ran across an assert() failure.
This seems like a use-after-free case in the discussed case.
The following is a dump recorded in session log of debug build of thunderbird
(TB)
when it ran under memcheck during "make mozmill" on a local PC.
Crash occured when TB was performing a trace (trace gray objects) of hash table
entries
when it encountered something that is not allocated (from the viewpoint
of allocator/garbage collector) and bombout.
I hope these problems will be sorted out soon. I have seen several
crashes of TB since November and want to see them fixed.
I want my mail client to be rock solid.
TIA
By the way, the hash table function seems to be implicated in one of
the topmost crash reports for ARM port of mozilla software (FF), and I
wonder if this CC is trigerring the problem (at least as one of the
causes.) in the hash related code.
https://bugzilla.mozilla.org/show_bug.cgi?id=819386
Bug 819386 - Intermittent Android shutdown crash [@ nss_certificate_hash]
Excerpt:
[...]
Test-update-mailing-list.js::setupModule
TEST-START | /TB-NEW/TB-3HG/new-src/mail/test/mozmill/addrbook/test-update-mailing-list.js |
test_contact_in_mailing_list_updated
Step Pass: {"function": "Controller.keypress()"}
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
--DOMWINDOW == 25 (0x16808860) [serial = 26] [outer = 0xdf4e5c8] [url =
chrome://messenger/content/msgAccountCentral.xul]
--DOMWINDOW == 24 (0x1683e6e0) [serial = 17] [outer = 0xdf4e5c8] [url =
about:blank]
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
Assertion failure: allocated(), at
/TB-NEW/TB-3HG/new-src/mozilla/js/src/gc/Heap.h:482
==18357== Invalid write of size 4
==18357== at 0xB311A9F: js::GCThingTraceKind(void*) (Heap.h:482)
[CI comment: There are inlined functions, etc., and so
difficult to figure out initially what happened.
I sprinkled the perceived value copy of macros/calls and
code snippets in the log.
In the end, I figured out the following sequence of calls
leading to crash.
JS_ASSERT() in getAllocKind() trapped meaning something was not
actually allocated while GC-related function is called.
<== GetGCThinkTraceKind() [ "<==" denotes "called by" relation. ]
<== GetGCThinkTraceKind()
<== GCThingTraceKind()
<== TraceJSObject()
... not sure for the few next steps ...
... ...
<== TraceJSHolder()
<== nsBaaseHashtable::s_EnumStub
<== PL_DHashTableEnumerate()
AllocKind getAllocKind() const {
JS_ASSERT(allocated());
482=> return AllocKind(allocKind);
}
53 inline JSGCTraceKind
54 GetGCThingTraceKind(const void *thing)
55 {
56 AutoAssertNoGC nogc;
57 JS_ASSERT(thing);
58 const Cell *cell = reinterpret_cast<const Cell *>(thing);
59 return MapAllocToTraceKind(cell->getAllocKind()); <--- getAllocKind
60 }
61
https://mxr.mozilla.org/comm-central/source/mozilla/js/src/jsfriendapi.cpp#549
549 js::GCThingTraceKind(void *thing)
550 {
551 JS_ASSERT(thing);
552 return gc::GetGCThingTraceKind(thing);
553 }
==18357== by 0x9E24245: TraceJSObject(void*, char const*, void*)
(XPCJSRuntime.cpp:385)
===> TraceJSObject (tmp (= p) ->_field, "mScopeObject", arg)
static void
TraceJSObject(void *aScriptThing, const char *name, void *aClosure)
{
385=> JS_CALL_TRACER(static_cast<JSTracer*>(aClosure), aScriptThing,
js::GCThingTraceKind(aScriptThing), name);
}
==18357== by 0x987633A: nsJSEventListener::cycleCollection::TraceImpl(void*, void (*)(void*, char const*, void*),
void*) (nsJSEventListener.cpp:106)
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(nsJSEventListener)
106=> NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mScopeObject)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
p <- holder
TraceCallback aCallback <- TracJSObject
void *aClosure <- arg
https://mxr.mozilla.org/comm-central/source/mozilla/xpcom/glue/nsCycleCollectionParticipant.h#459
459 #define NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(_class)
\
460 void
\
461 NS_CYCLE_COLLECTION_CLASSNAME(_class)::TraceImpl(void *p,
\
462 TraceCallback aCallback,
\
463 void *aClosure)
\
464 {
\
465 _class *tmp = DowncastCCParticipant<_class >(p);
tmp <- p
p <- holder
TraceCallback aCallback <- TraceJSObject
void *aClosure <- arg
478 #define NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(_field)
\
479 NS_IMPL_CYCLE_COLLECTION_TRACE_JS_CALLBACK(tmp->_field, #_field)
tmp <- p
p <- holder
TraceCallback aCallback <- TraceJSObject
void *aClosure <- arg
_object <- tmp->_field
_name <- #_field (= "mScopeObject")
474 #define NS_IMPL_CYCLE_COLLECTION_TRACE_JS_CALLBACK(_object, _name)
\
475 if (_object)
\
476 aCallback(_object, _name, aClosure);
===> TraceJSObject (tmp (= p) ->_field, "mScopeObject", arg)
==18357== by 0x9E22F30: TraceJSHolder(void*, nsScriptObjectTracer*&, void*)
(XPCJSRuntime.cpp:392)
static PLDHashOperator
TraceJSHolder(void *holder, nsScriptObjectTracer *&tracer, void *arg)
{
392=> tracer->Trace(holder, TraceJSObject, arg);
return PL_DHASH_NEXT;
}
==18357== by 0x9E230A9: nsBaseHashtable<nsPtrHashKey<void>, nsScriptObjectTracer*,
nsScriptObjectTracer*>::s_EnumStub(PLDHashTable*, PLDHashEntryHdr*, unsigned int, void*) (nsBaseHashtable.h:419)
template<class KeyClass,class DataType,class UserDataType>
PLDHashOperator
nsBaseHashtable<KeyClass,DataType,UserDataType>::s_EnumStub
(PLDHashTable *table, PLDHashEntryHdr *hdr, uint32_t number, void* arg)
{
EntryType* ent = static_cast<EntryType*>(hdr);
s_EnumArgs* eargs = (s_EnumArgs*) arg;
419=> return (eargs->func)(ent->GetKey(), ent->mData, eargs->userArg);
}
ent->mData
ent->mData -> _field <=== not allocated ?
==18357== by 0xAD4B05C: PL_DHashTableEnumerate (pldhash.cpp:717)
while (entryAddr < entryLimit) {
entry = (PLDHashEntryHdr *)entryAddr;
if (ENTRY_IS_LIVE(entry)) {
717=> op = etor(table, entry, i++, arg);
if (op & PL_DHASH_REMOVE) {
METER(table->stats.removeEnums++);
PL_DHashTableRawRemove(table, entry);
didRemove = true;
}
==18357== by 0x9E2A5AF: XPCJSRuntime::TraceXPConnectRoots(JSTracer*)
(nsBaseHashtable.h:223)
uint32_t Enumerate(EnumFunction enumFunc, void* userArg)
{
NS_ASSERTION(this->mTable.entrySize,
"nsBaseHashtable was not initialized properly.");
s_EnumArgs enumData = { enumFunc, userArg };
223=> return PL_DHashTableEnumerate(&this->mTable,
s_EnumStub,
&enumData);
}
==18357== by 0x9E2A62F: XPCJSRuntime::TraceGrayJS(JSTracer*, void*)
(XPCJSRuntime.cpp:379)
==18357== by 0xB5668F8: js::gc::BufferGrayRoots(js::GCMarker*)
(RootMarking.cpp:790)
==18357== by 0xB337F52: BeginMarkPhase(JSRuntime*) (jsgc.cpp:2783)
==18357== by 0xB33AB9E: IncrementalCollectSlice(JSRuntime*, long long, JS::gcreason::Reason, js::JSGCInvocationKind)
(jsgc.cpp:4158)
==18357== by 0xB33B5C4: GCCycle(JSRuntime*, bool, long long, js::JSGCInvocationKind, JS::gcreason::Reason)
(jsgc.cpp:4343)
==18357== by 0xB33B903: Collect(JSRuntime*, bool, long long, js::JSGCInvocationKind, JS::gcreason::Reason)
(jsgc.cpp:4468)
==18357== by 0xB33BE0E: js::GCSlice(JSRuntime*, js::JSGCInvocationKind,
JS::gcreason::Reason, long long) (jsgc.cpp:4506)
==18357== by 0xB30F0B3: JS::IncrementalGC(JSRuntime*, JS::gcreason::Reason,
long long) (jsfriendapi.cpp:187)
==18357== by 0x9747CAE: nsJSContext::GarbageCollectNow(JS::gcreason::Reason, nsJSContext::IsIncremental,
nsJSContext::IsCompartment, nsJSContext::IsShrinking, long long) (nsJSEnvironment.cpp:2605)
==18357== by 0x9747DF8: GCTimerFired(nsITimer*, void*)
(nsJSEnvironment.cpp:2904)
==18357== by 0xADC68E2: nsTimerImpl::Fire() (nsTimerImpl.cpp:503)
==18357== by 0xADC6D05: nsTimerEvent::Run() (nsTimerImpl.cpp:586)
==18357== by 0xADBDE46: nsThread::ProcessNextEvent(bool, bool*)
(nsThread.cpp:642)
==18357== by 0xADED8E3: NS_InvokeByIndex_P (in
/TB-NEW/TB-3HG/objdir-tb3/mozilla/toolkit/library/libxul.so)
==18357== by 0x9E5949B: CallMethodHelper::Call() (XPCWrappedNative.cpp:3084)
==18357== by 0x9E59E90: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode)
(XPCWrappedNative.cpp:2384)
==18357== by 0x9E61318: XPC_WN_CallMethod(JSContext*, unsigned int,
JS::Value*) (XPCWrappedNativeJSOps.cpp:1488)
==18357== by 0xB36D5A1: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs
const&) (jscntxtinlines.h:327)
==18357== by 0xB37A942: js::InvokeKernel(JSContext*, JS::CallArgs,
js::MaybeConstruct) (jsinterp.cpp:377)
==18357== by 0xB374C47: js::Interpret(JSContext*, js::StackFrame*,
js::InterpMode) (jsinterp.cpp:2363)
==18357== by 0xB379C7C: js::RunScript(JSContext*, js::StackFrame*)
(jsinterp.cpp:334)
==18357== by 0xB37A85F: js::InvokeKernel(JSContext*, JS::CallArgs,
js::MaybeConstruct) (jsinterp.cpp:391)
==18357== by 0xB37B1C3: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*,
JS::Value*) (jsinterp.h:131)
==18357== by 0xB3CBA63: js::BaseProxyHandler::call(JSContext*, JSObject*,
unsigned int, JS::Value*) (jsproxy.cpp:271)
==18357== by 0xB46AB37: js::Wrapper::call(JSContext*, JSObject*, unsigned
int, JS::Value*) (jswrapper.cpp:283)
==18357== by 0xB46DBDC: js::CrossCompartmentWrapper::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(jswrapper.cpp:616)
==18357== by 0xB3D17D5: js::Proxy::call(JSContext*, JSObject*, unsigned int,
JS::Value*) (jsproxy.cpp:2457)
==18357== by 0xB3D1850: proxy_Call(JSContext*, unsigned int, JS::Value*)
(jsproxy.cpp:3015)
==18357== by 0xB36D5A1: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs
const&) (jscntxtinlines.h:327)
==18357== by 0xB37AA77: js::InvokeKernel(JSContext*, JS::CallArgs,
js::MaybeConstruct) (jsinterp.cpp:370)
==18357== by 0xB374C47: js::Interpret(JSContext*, js::StackFrame*,
js::InterpMode) (jsinterp.cpp:2363)
==18357== by 0xB379C7C: js::RunScript(JSContext*, js::StackFrame*)
(jsinterp.cpp:334)
==18357== by 0xB37A85F: js::InvokeKernel(JSContext*, JS::CallArgs,
js::MaybeConstruct) (jsinterp.cpp:391)
==18357== by 0xB31A1D1: js_fun_apply(JSContext*, unsigned int, JS::Value*)
(jsinterp.h:131)
==18357== by 0xB36D5A1: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs
const&) (jscntxtinlines.h:327)
==18357== by 0xB37A942: js::InvokeKernel(JSContext*, JS::CallArgs,
js::MaybeConstruct) (jsinterp.cpp:377)
==18357== by 0xB37B1C3: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*,
JS::Value*) (jsinterp.h:131)
==18357== by 0xB3CBA63: js::BaseProxyHandler::call(JSContext*, JSObject*,
unsigned int, JS::Value*) (jsproxy.cpp:271)
==18357== by 0xB46AB37: js::Wrapper::call(JSContext*, JSObject*, unsigned
int, JS::Value*) (jswrapper.cpp:283)
==18357== by 0xB46DBDC: js::CrossCompartmentWrapper::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(jswrapper.cpp:616)
==18357== by 0xB3D17D5: js::Proxy::call(JSContext*, JSObject*, unsigned int,
JS::Value*) (jsproxy.cpp:2457)
==18357== by 0xB3D1850: proxy_Call(JSContext*, unsigned int, JS::Value*)
(jsproxy.cpp:3015)
==18357== by 0xB36D5A1: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs
const&) (jscntxtinlines.h:327)
==18357== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==18357==
{
<insert_a_suppression_name_here>
Memcheck:Addr4
fun:_ZN2js16GCThingTraceKindEPv
fun:_ZL13TraceJSObjectPvPKcS_
fun:_ZN17nsJSEventListener15cycleCollection9TraceImplEPvPFvS1_PKcS1_ES1_
fun:_ZL13TraceJSHolderPvRP20nsScriptObjectTracerS_
fun:_ZN15nsBaseHashtableI12nsPtrHashKeyIvEP20nsScriptObjectTracerS3_E10s_EnumStubEP12PLDHashTableP15PLDHashEntryHdrjPv
fun:PL_DHashTableEnumerate
fun:_ZN12XPCJSRuntime19TraceXPConnectRootsEP8JSTracer
fun:_ZN12XPCJSRuntime11TraceGrayJSEP8JSTracerPv
fun:_ZN2js2gc15BufferGrayRootsEPNS_8GCMarkerE
fun:_ZL14BeginMarkPhaseP9JSRuntime
fun:_ZL23IncrementalCollectSliceP9JSRuntimexN2JS8gcreason6ReasonEN2js18JSGCInvocationKindE
fun:_ZL7GCCycleP9JSRuntimebxN2js18JSGCInvocationKindEN2JS8gcreason6ReasonE
fun:_ZL7CollectP9JSRuntimebxN2js18JSGCInvocationKindEN2JS8gcreason6ReasonE
fun:_ZN2js7GCSliceEP9JSRuntimeNS_18JSGCInvocationKindEN2JS8gcreason6ReasonEx
fun:_ZN2JS13IncrementalGCEP9JSRuntimeNS_8gcreason6ReasonEx
fun:_ZN11nsJSContext17GarbageCollectNowEN2JS8gcreason6ReasonENS_13IsIncrementalENS_13IsCompartmentENS_11IsShrinkingEx
fun:_Z12GCTimerFiredP8nsITimerPv
fun:_ZN11nsTimerImpl4FireEv
fun:_ZN12nsTimerEvent3RunEv
fun:_ZN8nsThread16ProcessNextEventEbPb
fun:NS_InvokeByIndex_P
fun:_ZN16CallMethodHelper4CallEv
fun:_ZN16XPCWrappedNative10CallMethodER14XPCCallContextNS_8CallModeE
fun:_Z17XPC_WN_CallMethodP9JSContextjPN2JS5ValueE
}
Program
/home/ishikawa/TB-NEW/TB-3HG/objdir-tb3/mozilla/dist/bin/thunderbird-bin (pid =
18357) received signal 11.
[COMMENT: Below is the stack trace dumpbed by TB itself.
It was converted into using symbolic values by
${MOZ_SRCDIR}/mozilla/tools/rb/fix-linux-stack.pl ]
Stack:
__restore_rt (sigaction.c:0)
TraceJSObject
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCJSRuntime.cpp:385)
[Comment: This TraceJSObject calls GCThingTraceKind()
(this isinlined), and in there there is a check
using JS_ASSERT() and TB bombed out.]
static void
TraceJSObject(void *aScriptThing, const char *name, void *aClosure)
{
385=> JS_CALL_TRACER(static_cast<JSTracer*>(aClosure), aScriptThing,
js::GCThingTraceKind(aScriptThing), name);
}
nsJSEventListener::cycleCollection::TraceImpl(void*, void (*)(void*, char const*, void*), void*)
(/TB-NEW/TB-3HG/new-src/mozilla/dom/src/events/nsJSEventListener.cpp:107)
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(nsJSEventListener)
==> NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mScopeObject)
NS_IMPL_CYCLE_COLLECTION_TRACE_END
TraceJSHolder
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCJSRuntime.cpp:395)
static PLDHashOperator
TraceJSHolder(void *holder, nsScriptObjectTracer *&tracer, void *arg)
{
tracer->Trace(holder, TraceJSObject, arg);
return PL_DHASH_NEXT;
}
nsBaseHashtable<nsPtrHashKey<void>, nsScriptObjectTracer*, nsScriptObjectTracer*>::s_EnumStub(PLDHashTable*,
PLDHashEntryHdr*, unsigned int, void*)
(/TB-NEW/TB-3HG/objdir-tb3/mozilla/js/xpconnect/src/../../../dist/include/nsBaseHashtable.h:420)
PL_DHashTableEnumerate
(/TB-NEW/TB-3HG/objdir-tb3/mozilla/xpcom/build/pldhash.cpp:717)
~XPCAutoLock (/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/xpcprivate.h:377)
XPCJSRuntime::TraceGrayJS(JSTracer*, void*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCJSRuntime.cpp:380)
js::gc::BufferGrayRoots(js::GCMarker*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/gc/RootMarking.cpp:791)
BeginMarkPhase (/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsgc.cpp:2816)
IncrementalCollectSlice (/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsgc.cpp:4158)
GCCycle (/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsgc.cpp:4344)
Collect (/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsgc.cpp:4470)
js::GCSlice(JSRuntime*, js::JSGCInvocationKind, JS::gcreason::Reason, long long)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsgc.cpp:4507)
JS::IncrementalGC(JSRuntime*, JS::gcreason::Reason, long long)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsfriendapi.cpp:188)
nsJSContext::GarbageCollectNow(JS::gcreason::Reason, nsJSContext::IsIncremental, nsJSContext::IsCompartment,
nsJSContext::IsShrinking, long long) (/TB-NEW/TB-3HG/new-src/mozilla/dom/base/nsJSEnvironment.cpp:2605)
GCTimerFired(nsITimer*, void*)
(/TB-NEW/TB-3HG/new-src/mozilla/dom/base/nsJSEnvironment.cpp:2905)
nsTimerImpl::Fire()
(/TB-NEW/TB-3HG/new-src/mozilla/xpcom/threads/nsTimerImpl.cpp:504)
nsTimerEvent::Run()
(/TB-NEW/TB-3HG/new-src/mozilla/xpcom/threads/nsTimerImpl.cpp:586)
nsThread::ProcessNextEvent(bool, bool*)
(/TB-NEW/TB-3HG/new-src/mozilla/xpcom/threads/nsThread.cpp:625)
NS_InvokeByIndex_P (/TB-NEW/TB-3HG/objdir-tb3/mozilla/dist/bin/libxul.so)
CallMethodHelper::Invoke()
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCWrappedNative.cpp:3084)
XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode)
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCWrappedNative.cpp:2384)
XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCWrappedNativeJSOps.cpp:1488)
js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jscntxtinlines.h:327)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:377)
js::Interpret(JSContext*, js::StackFrame*, js::InterpMode)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:2363)
js::RunScript(JSContext*, js::StackFrame*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:334)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:391)
js::CallArgsList::setInactive()
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/vm/Stack.h:187)
js::BaseProxyHandler::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:272)
js::Wrapper::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jswrapper.cpp:284)
js::CrossCompartmentWrapper::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jswrapper.cpp:616)
js::Proxy::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:2458)
proxy_Call (/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:3015)
js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jscntxtinlines.h:327)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:370)
js::Interpret(JSContext*, js::StackFrame*, js::InterpMode)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:2363)
js::RunScript(JSContext*, js::StackFrame*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:334)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:391)
js::CallArgsList::setInactive()
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/vm/Stack.h:187)
js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jscntxtinlines.h:327)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:377)
js::CallArgsList::setInactive()
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/vm/Stack.h:187)
js::BaseProxyHandler::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:272)
js::Wrapper::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jswrapper.cpp:284)
js::CrossCompartmentWrapper::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jswrapper.cpp:616)
js::Proxy::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:2458)
proxy_Call (/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:3015)
js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jscntxtinlines.h:327)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:370)
js::Interpret(JSContext*, js::StackFrame*, js::InterpMode)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:2363)
js::RunScript(JSContext*, js::StackFrame*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:334)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:391)
js::CallArgsList::setInactive()
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/vm/Stack.h:187)
js::BaseProxyHandler::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:272)
js::Wrapper::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jswrapper.cpp:284)
js::CrossCompartmentWrapper::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jswrapper.cpp:616)
js::Proxy::call(JSContext*, JSObject*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:2458)
proxy_Call (/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsproxy.cpp:3015)
js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jscntxtinlines.h:327)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:370)
js::Interpret(JSContext*, js::StackFrame*, js::InterpMode)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:2363)
js::RunScript(JSContext*, js::StackFrame*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:334)
js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr,
JS::Value*) (/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:522)
~GuardObjectNotificationReceiver
(/TB-NEW/TB-3HG/objdir-tb3/mozilla/js/src/./../../dist/include/mozilla/GuardObjects.h:100)
JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsapi.cpp:5542)
xpc_EvalInSandbox(JSContext*, JSObject*, nsAString_internal const&, char const*, int, JSVersion, bool, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCComponents.cpp:3930)
nsXPCComponents_Utils::EvalInSandbox(nsAString_internal const&, JS::Value const&, JS::Value const&, JS::Value const&,
int, JSContext*, unsigned char, JS::Value*) (/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCComponents.cpp:3858)
NS_InvokeByIndex_P (/TB-NEW/TB-3HG/objdir-tb3/mozilla/dist/bin/libxul.so)
CallMethodHelper::Invoke()
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCWrappedNative.cpp:3084)
XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode)
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCWrappedNative.cpp:2384)
XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCWrappedNativeJSOps.cpp:1488)
js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jscntxtinlines.h:327)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:377)
js::Interpret(JSContext*, js::StackFrame*, js::InterpMode)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:2363)
js::RunScript(JSContext*, js::StackFrame*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:334)
js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsinterp.cpp:391)
js::CallArgsList::setInactive()
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/vm/Stack.h:187)
JS_CallFunctionValue(JSContext*, JSObject*, JS::Value, unsigned int, JS::Value*, JS::Value*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/src/jsapi.cpp:5723)
nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS*, unsigned short, XPTMethodDescriptor const*, nsXPTCMiniVariant*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCWrappedJSClass.cpp:1432)
nsXPCWrappedJS::CallMethod(unsigned short, XPTMethodDescriptor const*, nsXPTCMiniVariant*)
(/TB-NEW/TB-3HG/new-src/mozilla/js/xpconnect/src/XPCWrappedJS.cpp:579)
PrepareAndDispatch
(/TB-NEW/TB-3HG/new-src/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_gcc_x86_unix.cpp:60)
nsInputStreamPump::OnStateTransfer()
(/TB-NEW/TB-3HG/new-src/mozilla/netwerk/base/src/nsInputStreamPump.cpp:484)
nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
(/TB-NEW/TB-3HG/new-src/mozilla/netwerk/base/src/nsInputStreamPump.cpp:373)
nsCOMPtr<nsIInputStreamCallback>::operator=(nsIInputStreamCallback*)
(/TB-NEW/TB-3HG/objdir-tb3/mozilla/xpcom/io/../../dist/include/nsCOMPtr.h:624)
nsThread::ProcessNextEvent(bool, bool*)
(/TB-NEW/TB-3HG/new-src/mozilla/xpcom/threads/nsThread.cpp:625)
NS_ProcessNextEvent_P(nsIThread*, bool)
(/TB-NEW/TB-3HG/objdir-tb3/mozilla/xpcom/build/nsThreadUtils.cpp:238)
mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*)
(/TB-NEW/TB-3HG/new-src/mozilla/ipc/glue/MessagePump.cpp:82)
MessageLoop::RunInternal()
(/TB-NEW/TB-3HG/new-src/mozilla/ipc/chromium/src/base/message_loop.cc:216)
MessageLoop::RunHandler()
(/TB-NEW/TB-3HG/new-src/mozilla/ipc/chromium/src/base/message_loop.cc:209)
MessageLoop::Run()
(/TB-NEW/TB-3HG/new-src/mozilla/ipc/chromium/src/base/message_loop.cc:182)
nsBaseAppShell::Run()
(/TB-NEW/TB-3HG/new-src/mozilla/widget/xpwidgets/nsBaseAppShell.cpp:165)
nsAppStartup::Run()
(/TB-NEW/TB-3HG/new-src/mozilla/toolkit/components/startup/nsAppStartup.cpp:289)
XREMain::XRE_mainRun()
(/TB-NEW/TB-3HG/new-src/mozilla/toolkit/xre/nsAppRunner.cpp:3826)
XREMain::XRE_main(int, char**, nsXREAppData const*)
(/TB-NEW/TB-3HG/new-src/mozilla/toolkit/xre/nsAppRunner.cpp:3893)
XRE_main (/TB-NEW/TB-3HG/new-src/mozilla/toolkit/xre/nsAppRunner.cpp:4096)
do_main (/TB-NEW/TB-3HG/new-src/mail/app/nsMailApp.cpp:111)
__libc_start_main
(/build/buildd-eglibc_2.13-37-i386-XPf1lI/eglibc-2.13/csu/libc-start.c:260)
Sleeping for 300 seconds.
Type 'gdb /home/ishikawa/TB-NEW/TB-3HG/objdir-tb3/mozilla/dist/bin/thunderbird-bin 18357' to attach your debugger to
this thread.
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
(pkix_CacheCert_Add: PKIX_PL_HashTable_Add for Certs skipped: entry existed
Done sleeping...
==18357==
==18357== HEAP SUMMARY:
==18357== in use at exit: 38,919,537 bytes in 217,253 blocks
==18357== total heap usage: 1,102,802 allocs, 885,549 frees, 485,639,819
bytes allocated
==18357==
==18357== 64 bytes in 1 blocks are definitely lost in loss record 28,534 of
49,721
==18357== at 0x40273B8: malloc (vg_replace_malloc.c:270)
==18357== by 0x40126CA: dl_open_worker (dl-open.c:457)
==18357== by 0x400DDE5: _dl_catch_error (dl-error.c:178)
==18357== by 0x4011B05: _dl_open (dl-open.c:633)
==18357== by 0x4068C2A: dlopen_doit (dlopen.c:67)
==18357== by 0x400DDE5: _dl_catch_error (dl-error.c:178)
==18357== by 0x40690BB: _dlerror_run (dlerror.c:164)
==18357== by 0x4068B60: dlopen@@GLIBC_2.1 (dlopen.c:88)
==18357== by 0x471309C: pr_LoadLibraryByPathname (prlink.c:803)
==18357== by 0x47135E1: PR_LoadLibraryWithFlags (prlink.c:418)
==18357== by 0xADBAB46:
nsNativeModuleLoader::LoadModule(mozilla::FileLocation&)
(nsNativeComponentLoader.cpp:147)
==18357== by 0xADB36F5:
nsComponentManagerImpl::ManifestBinaryComponent(nsComponentManagerImpl::ManifestProcessingContext&, int, char* const*)
(nsComponentManager.cpp:542)
==18357== by 0xADB9A5E: ParseManifest(NSLocationType,
mozilla::FileLocation&, char*, bool) (ManifestParser.cpp:646)
==18357== by 0xADAF564: nsComponentManagerImpl::RegisterManifest(NSLocationType, mozilla::FileLocation&, bool)
(nsComponentManager.cpp:505)
==18357== by 0xADAF6D2: nsComponentManagerImpl::ManifestManifest(nsComponentManagerImpl::ManifestProcessingContext&,
int, char* const*) (nsComponentManager.cpp:518)
==18357== by 0xADB9A5E: ParseManifest(NSLocationType,
mozilla::FileLocation&, char*, bool) (ManifestParser.cpp:646)
==18357== by 0xADAF564: nsComponentManagerImpl::RegisterManifest(NSLocationType, mozilla::FileLocation&, bool)
(nsComponentManager.cpp:505)
==18357== by 0xADAF665: nsComponentManagerImpl::RereadChromeManifests(bool)
(nsComponentManager.cpp:673)
==18357== by 0xADB51E4: nsComponentManagerImpl::Init()
(nsComponentManager.cpp:364)
==18357== by 0xAD51F0A: NS_InitXPCOM2_P (nsXPComInit.cpp:446)
==18357== by 0x8B1CE2E: ScopedXPCOMStartup::Initialize()
(nsAppRunner.cpp:1186)
==18357== by 0x8B28E44: XREMain::XRE_main(int, char**, nsXREAppData const*)
(nsAppRunner.cpp:3889)
==18357== by 0x8B29232: XRE_main (nsAppRunner.cpp:4096)
==18357== by 0x8049AC0: main (nsMailApp.cpp:111)
==18357==
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:dl_open_worker
fun:_dl_catch_error
fun:_dl_open
fun:dlopen_doit
fun:_dl_catch_error
fun:_dlerror_run
fun:dlopen@@GLIBC_2.1
fun:pr_LoadLibraryByPathname
fun:PR_LoadLibraryWithFlags
fun:_ZN20nsNativeModuleLoader10LoadModuleERN7mozilla12FileLocationE
fun:_ZN22nsComponentManagerImpl23ManifestBinaryComponentERNS_25ManifestProcessingContextEiPKPc
fun:_Z13ParseManifest14NSLocationTypeRN7mozilla12FileLocationEPcb
fun:_ZN22nsComponentManagerImpl16RegisterManifestE14NSLocationTypeRN7mozilla12FileLocationEb
fun:_ZN22nsComponentManagerImpl16ManifestManifestERNS_25ManifestProcessingContextEiPKPc
fun:_Z13ParseManifest14NSLocationTypeRN7mozilla12FileLocationEPcb
fun:_ZN22nsComponentManagerImpl16RegisterManifestE14NSLocationTypeRN7mozilla12FileLocationEb
fun:_ZN22nsComponentManagerImpl21RereadChromeManifestsEb
fun:_ZN22nsComponentManagerImpl4InitEv
fun:NS_InitXPCOM2_P
fun:_ZN18ScopedXPCOMStartup10InitializeEv
fun:_ZN7XREMain8XRE_mainEiPPcPK12nsXREAppData
fun:XRE_main
fun:main
}
==18357== 69 bytes in 1 blocks are definitely lost in loss record 28,973 of
49,721
ishikawa@debian-vm:~/bin/TAMAGO-DIR$
TIA
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform