Hi all,
all that follows is related to WebKit branch 536.26.
We are currently using JSCore/WTF in a multi-threaded environment and are 
facing an ASSERT (see backtrace below) mainly due to the fact that 
DateInstanceData inherits from RefCounted which contains a 
ThreadRestrictionVerifier (which isSafeToUse method returns false in our case).
This ThreadRestrictionVerifier has only one constructor and that constructor 
sets (by default) its internal mode to SingleThreadVerificationMode: in other 
words, all the JSCore RefCounted (by inheritance) instances are assumed to work 
in a single-threaded environment; so JSCore as a whole is by default customized 
to work in a single-threaded environment.
Q1: Is JSCore able to work in a multi-threaded environment (with an unchanged 
codebase)?
Q2.1: if Q1 is yes, is there is a way to set all the RefCounted instances 
created by JSCore multi-thread compatible with only a slight modification of 
JSCore codebase. Indeed and as far as I can see, one would need to change the 
mode of all the  instanciated ThreadVerifiers to MutexVerificationMode.
Q2.2: if Q1 is yes, can NoVerificationMode be used in a multi-threaded 
environment (I don't think so)
thanks for your help

 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: 5c96d8.png>>

_______________________________________________
webkit-help mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-help

Reply via email to