Hi, all that follows is related to WebKit branch 536.26.
After using JSCore library in a multi-threaded environment, we get an ASSERT
(see traceback at the end of the mail).
Since the different comments in JSCore and WTF are difficult to interpret, I'd
like to have opinions regarding the following questions:
-can a JSCore context be (sequentially) used in several threads (I think the
answer is yes) ?
-why should the m_owningThread be the one that destroys the JSContext (checked
in ThreadRestrictionVerifier) -> the last thread that owns the JSContext should
be the more appropriate? In other words, why should the
construction/destruction of JSContexts be done by the same thread? By the way,
the m_owningThread is set to the second thread that uses the JSContext (not
the first one) -> is this done at will?
-regarding our problem which is related to a DateInstance: would a
turnOffVerification for this specific be a pertinent way of avoiding the ASSERT
thanks for your answers
BR
GH
ntdll.dll!77b015de()
[Frames below may be incorrect and/or missing, no symbols loaded for
ntdll.dll]
ntdll.dll!77b015de()
ntdll.dll!77af014e()
msvcr90d.dll!_free_dbg(void * pUserData=0x00000000, int nBlockUse=0x00000001)
Line 1260 + 0xc bytes C++
msvcr90d.dll!free(void * pUserData=0x59210d82) Line 49 + 0xb bytes C++
JavaScriptCore_Debug.dll!WTFPrintBacktrace(void * * stack=0x0000001f, int
size=0x00000004) Line 334 + 0xc bytes C++
JavaScriptCore_Debug.dll!WTFReportBacktrace() Line 297 + 0xf bytes C++
JavaScriptCore_Debug.dll!WTF::RefCountedBase::derefBase() Line 129 + 0x38
bytes C++
JavaScriptCore_Debug.dll!WTF::RefCounted<JSC::DateInstanceData>::deref()
Line 189 + 0x8 bytes C++
JavaScriptCore_Debug.dll!WTF::derefIfNotNull<JSC::DateInstanceData>(JSC::DateInstanceData
* ptr=0xffe28f30) Line 53 C++
JavaScriptCore_Debug.dll!WTF::RefPtr<JSC::DateInstanceData>::~RefPtr<JSC::DateInstanceData>()
Line 56 + 0x19 bytes C++
JavaScriptCore_Debug.dll!JSC::DateInstance::~DateInstance() + 0x46 bytes C++
> JavaScriptCore_Debug.dll!JSC::DateInstance::destroy(JSC::JSCell *
> cell=0x11f7d380) Line 59 C++
JavaScriptCore_Debug.dll!JSC::MarkedBlock::callDestructor(JSC::JSCell *
cell=0x11f7d380) Line 74 + 0x12 bytes C++
JavaScriptCore_Debug.dll!JSC::MarkedBlock::specializedSweep<3,1,1>() Line
101 C++
JavaScriptCore_Debug.dll!JSC::MarkedBlock::sweepHelper<1>(JSC::MarkedBlock::SweepMode
sweepMode=SweepToFreeList) Line 142 + 0x12 bytes C++
JavaScriptCore_Debug.dll!JSC::MarkedBlock::sweep(JSC::MarkedBlock::SweepMode
sweepMode=SweepToFreeList) Line 121 + 0x10 bytes C++
JavaScriptCore_Debug.dll!JSC::MarkedAllocator::tryAllocateHelper() Line 33 +
0x10 bytes C++
JavaScriptCore_Debug.dll!JSC::MarkedAllocator::tryAllocate() Line 52 + 0x8
bytes C++
JavaScriptCore_Debug.dll!JSC::MarkedAllocator::allocateSlowCase() Line 68 +
0x8 bytes C++
JavaScriptCore_Debug.dll!JSC::MarkedAllocator::allocate() Line 77 + 0x8
bytes C++
JavaScriptCore_Debug.dll!JSC::MarkedSpace::allocateWithDestructor(unsigned
int bytes=0x00000040) Line 160 C++
JavaScriptCore_Debug.dll!JSC::Heap::allocateWithDestructor(unsigned int
bytes=0x00000040) Line 355 C++
JavaScriptCore_Debug.dll!JSC::allocateCell<JSC::JSFinalObject>(JSC::Heap &
heap={...}) Line 336 + 0xa bytes C++
JavaScriptCore_Debug.dll!JSC::JSFinalObject::create(JSC::ExecState *
exec=0x144e0318, JSC::Structure * structure=0x11eef420) Line 395 + 0xe bytes
C++
JavaScriptCore_Debug.dll!JSC::constructEmptyObject(JSC::ExecState *
exec=0x144e0318, JSC::Structure * structure=0x11eef420) Line 466 + 0xd bytes
C++
JavaScriptCore_Debug.dll!JSC::constructEmptyObject(JSC::ExecState *
exec=0x144e0318, JSC::JSGlobalObject * globalObject=0x11f0fc40) Line 431 +
0x12 bytes C++
JavaScriptCore_Debug.dll!JSC::constructEmptyObject(JSC::ExecState *
exec=0x144e0318) Line 436 + 0x12 bytes C++
JavaScriptCore_Debug.dll!cti_op_new_object(void * * args=0x11a9f580) Line
1382 + 0xc bytes C++
JavaScriptCore_Debug.dll!@cti_op_create_this@4<mailto:JavaScriptCore_Debug.dll!@cti_op_create_this@4>()
+ 0x20f bytes C++
JavaScriptCore_Debug.dll!JSC::JITCode::execute(JSC::RegisterFile *
registerFile=0xffda2bdc, JSC::ExecState * callFrame=0x144e0048,
JSC::JSGlobalData * globalData=0xffd9b400) Line 127 + 0x2d bytes C++
JavaScriptCore_Debug.dll!JSC::Interpreter::executeCall(JSC::ExecState *
callFrame=0x11f0fcb8, JSC::JSObject * function=0x11f7d600, JSC::CallType
callType=CallTypeJS, const JSC::CallData & callData={...}, JSC::JSValue
thisValue={...}, const JSC::ArgList & args={...}) Line 1342 + 0x2a bytes C++
JavaScriptCore_Debug.dll!JSC::call(JSC::ExecState * exec=0x11f0fcb8,
JSC::JSValue functionObject={...}, JSC::CallType callType=CallTypeJS, const
JSC::CallData & callData={...}, JSC::JSValue thisValue={...}, const
JSC::ArgList & args={...}) Line 67 + 0x3c bytes C++
JavaScriptCore_Debug.dll!JSObjectCallAsFunction(const OpaqueJSContext *
ctx=0x11f0fcb8, OpaqueJSValue * object=0x11f7d600, OpaqueJSValue *
thisObject=0x11f0fc40, unsigned int argumentCount=0x00000002, const
OpaqueJSValue * const * arguments=0x0f615ce8, const OpaqueJSValue * *
exception=0x11a9f904) Line 497 + 0x5c bytes C++
4DJavaScriptDebug.dll!xbox::VJSObject::CallFunction(const xbox::VJSObject &
inFunctionObject={...}, const
std::vector<xbox::VJSValue,std::allocator<xbox::VJSValue> > *
inValues=[0x00000002]({fContext=0x11f0fcb8 fValue=0x11f71c40
},{fContext=0x11f0fcb8 fValue=0x11f71c00 }), xbox::VJSValue *
outResult=0x11a9facc, const OpaqueJSValue * * outException=0x11a9f9cc, const
xbox::VFilePath * inFullPath=0x00000000) Line 470 + 0x30 bytes C++
4DJavaScriptDebug.dll!xbox::VJSObject::CallMemberFunction(const xbox::VString
& inFunctionName={...}, const
std::vector<xbox::VJSValue,std::allocator<xbox::VJSValue> > *
inValues=[0x00000002]({fContext=0x11f0fcb8 fValue=0x11f71c40
},{fContext=0x11f0fcb8 fValue=0x11f71c00 }), xbox::VJSValue *
outResult=0x11a9facc, const OpaqueJSValue * * outException=0x11a9f9cc, const
xbox::VFilePath * inFullPath=0x00000000) Line 203 + 0x40 bytes C++
Wakanda Server.exe!VRIAJSCallbackGlobalFunction::Call(xbox::VJSContext &
inContext={...}, const
std::vector<xbox::VJSValue,std::allocator<xbox::VJSValue> > *
inParameters=[0x00000002]({fContext=0x11f0fcb8 fValue=0x11f71c40
},{fContext=0x11f0fcb8 fValue=0x11f71c00 }), xbox::VJSValue *
outResult=0x11a9facc) Line 1236 + 0x1e bytes C++
Wakanda Server.exe!VJSRequestHandler::HandleRequest(IHTTPResponse *
inResponse=0x0f4ac724) Line 116 + 0x28 bytes C++
...
[cid:[email protected]]
Guy Hermann
Développeur Senior
Email : [email protected]<mailto:[email protected]>
Web : www.4D.com<http://www.4D.com>
4D SAS
60, rue d'Alsace
92110 Clichy -
Standard : +33 1 40 87 92 00
<<inline: 349732.png>>
_______________________________________________ webkit-help mailing list [email protected] http://lists.webkit.org/mailman/listinfo/webkit-help
