Bug 74127 - [Windows, WinCairo] testapi crashes in Release Build
Summary: [Windows, WinCairo] testapi crashes in Release Build
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Windows XP
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2011-12-08 14:33 PST by Brent Fulgham
Modified: 2012-01-12 08:52 PST (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brent Fulgham 2011-12-08 14:33:57 PST
The 'testapi' test program will fail when running with default arguments (causing it to execute the "testapi.js" script) under Release builds.

Test program output is as follows:

PASS: Set private property.
PASS: Did not allow JSObjectSetPrivateProperty on a non-API object.
PASS: Retrieved private property.
PASS: JSObjectGetPrivateProperty return NULL.
PASS: Cannot access private property through ordinary property lookup.
PASS: Private property does not appear to have been collected.
PASS: Set private property to NULL.
PASS: Retrieved private property.
PASS: Parsed valid JSON string.
PASS: Correctly returned null for invalid JSON data.
PASS: Correctly serialised with indent of 0.
PASS: Correctly serialised with indent of 4.
PASS: returned null when attempting to serialize unserializable value.
PASS: returned null when attempting to serialize unserializable value.
PASS: set exception on serialisation error
PASS: globalStaticValue should be 3 and is.
PASS: globalStaticFunction() should be 4 and is.
PASS: typeof MyObject should be function and is.
PASS: MyObject.cantFind should be undefined and is.
PASS: MyObject.regularType should be 1 and is.
PASS: MyObject.alwaysOne should be 1 and is.
PASS: MyObject.cantDelete should be 1 and is.
PASS: delete MyObject.throwOnDelete should be an exception and is.
PASS: MyObject.cantSet should be undefined and is.
PASS: MyObject.throwOnGet should be an exception and is.
PASS: MyObject.throwOnSet = 5 should be an exception and is.
PASS: MyObject('throwOnCall') should be an exception and is.
PASS: new MyObject('throwOnConstruct') should be an exception and is.
PASS: 'throwOnHasInstance' instanceof MyObject should be an exception and is.
PASS: MyObject.nullGetForwardSet should be 1 and is.
PASS: MyObject.myPropertyName was enumerated
PASS: MyObject.regularType was enumerated
PASS: typeof alwaysOneDescriptor should be object and is.
PASS: alwaysOneDescriptor.value should be 1 and is.
PASS: alwaysOneDescriptor.configurable should be true and is.
PASS: alwaysOneDescriptor.enumerable should be false and is.
PASS: typeof cantFindDescriptor should be object and is.
PASS: cantFindDescriptor.value should be undefined and is.
PASS: cantFindDescriptor.configurable should be true and is.
PASS: cantFindDescriptor.enumerable should be false and is.
PASS: getting property descriptor of throwOnGet threw exception
PASS: typeof myPropertyNameDescriptor should be object and is.
PASS: myPropertyNameDescriptor.value should be 1 and is.
PASS: myPropertyNameDescriptor.configurable should be true and is.
PASS: myPropertyNameDescriptor.enumerable should be false and is.
PASS: Object.getOwnPropertyDescriptor(MyObject, "doesNotExist") should be undefi
ned and is.
PASS: delete MyObject.regularType should be true and is.
PASS: MyObject.regularType should be undefined and is.
PASS: MyObject(0) should be 1 and is.
PASS: MyObject() should be undefined and is.
PASS: typeof myObject should be object and is.
PASS: MyObject ? 1 : 0 should be true and is.
PASS: +MyObject should be 1 and is.
PASS: (Object.prototype.toString.call(MyObject)) should be [object MyObject] and is.
PASS: (MyObject.toString()) should be MyObjectAsString and is.
PASS: String(MyObject) should be MyObjectAsString and is.
PASS: MyObject - 0 should be 1 and is.
PASS: MyObject.valueOf() should be 1 and is.
PASS: typeof MyConstructor should be object and is.
PASS: typeof constructedObject should be object and is.
PASS: constructedObject.value should be 1 and is.
PASS: myObject instanceof MyObject should be true and is.
PASS: (new Object()) instanceof MyObject should be false and is.
PASS: MyObject.nullGetSet should be 1 and is.
<<< CRASH >>>

Stack trace:

 	fffffffd()	
>	JavaScriptCore.dll!JSC::JSCallbackObject<JSC::JSNonFinalObject>::getOwnPropertySlot(JSC::JSCell * cell=0x003d2f70, JSC::ExecState * exec=0x02850128, const JSC::Identifier & propertyName={...}, JSC::PropertySlot & slot={...})  Line 141 + 0x9 bytes	C++
 	JavaScriptCore.dll!JSC::JSObject::hasProperty(JSC::ExecState * exec=0x02850128, const JSC::Identifier & propertyName={...})  Line 222 + 0x117 bytes	C++
 	JavaScriptCore.dll!JSC::hasErrorInfo(JSC::ExecState * exec=0x02850128, JSC::JSObject * error=0x003d2f70)  Line 144 + 0x37 bytes	C++
 	JavaScriptCore.dll!JSC::Interpreter::throwException(JSC::ExecState * & callFrame=0x02850128, JSC::JSValue & exceptionValue={...}, unsigned int bytecodeOffset=0x00000007)  Line 799 + 0x21 bytes	C++
 	JavaScriptCore.dll!JSC::jitThrow(JSC::JSGlobalData * globalData=0x00000000, JSC::ExecState * callFrame=0x02850128, JSC::JSValue exceptionValue={...}, JSC::ReturnAddressPtr faultLocation={...})  Line 1049	C++
 	JavaScriptCore.dll!cti_vm_throw(void * * args=0x00000000)  Line 3720 + 0x1e bytes	C++
 	JavaScriptCore.dll!ctiVMThrowTrampoline()  Line 245	C++
 	JavaScriptCore.dll!JSC::Interpreter::execute(JSC::EvalExecutable * eval=0x7ee9414c, JSC::ExecState * callFrame=0x02850128, JSC::JSValue thisValue={...}, JSC::ScopeChainNode * scopeChain=0x7ee97800, int globalRegisterOffset=0x0034f5f4)  Line 1388 + 0x1f bytes	C++
 	JavaScriptCore.dll!JSC::Interpreter::execute(JSC::EvalExecutable * eval=0x02002810, JSC::ExecState * callFrame=0x7ef43dc0, JSC::JSValue thisValue={...}, JSC::ScopeChainNode * scopeChain=0x7ee97800, int globalRegisterOffset=0x00000025)  Line 1388 + 0x1f bytes	C++
 	JavaScriptCore.dll!JSC::eval(JSC::ExecState * callFrame=0x7ee94f50)  Line 469 + 0x20 bytes	C++
 	JavaScriptCore.dll!cti_op_call_eval(void * * args=0x00000000)  Line 3369	C++
 	002026e0()	
 	JavaScriptCore.dll!JSC::JITCode::execute(JSC::RegisterFile * registerFile=0x7ee9414c, JSC::ExecState * callFrame=0x02850038, JSC::JSGlobalData * globalData=0x7ee97800)  Line 115 + 0x1c bytes	C++
 	JavaScriptCore.dll!JSC::Interpreter::execute(JSC::ProgramExecutable * program=, JSC::ExecState * callFrame=, JSC::ScopeChainNode * scopeChain=, JSC::JSObject * thisObj=)  Line 1002 + 0x24 bytes	C++
 	JavaScriptCore.dll!JSC::evaluate(JSC::ExecState * exec=0x00213d28, JSC::ScopeChainNode * scopeChain=0x00243fd0, const JSC::SourceCode & source={...}, JSC::JSValue thisValue={...}, JSC::JSValue * returnedException=0x0034fcf0)  Line 72	C++
 	JavaScriptCore.dll!JSEvaluateScript(const OpaqueJSContext * ctx=0x7eec6000, OpaqueJSString * script=0x7ee93680, OpaqueJSValue * thisObject=0x00000000, OpaqueJSString * sourceURL=0x00000000, int startingLineNumber=0x00000000, const OpaqueJSValue * * exception=0x0034ff0c)  Line 58	C++
 	testapi.exe!main(int argc=0x021f48a8, char * * argv=0x0022e0c0)  Line 1505 + 0x1c bytes	C++
 	testapi.exe!__tmainCRTStartup()  Line 597 + 0x17 bytes	C
Comment 1 Radar WebKit Bug Importer 2011-12-08 14:47:33 PST
<rdar://problem/10551809>
Comment 2 Brent Fulgham 2012-01-11 17:04:33 PST
Fixed by a commit a week or two ago.  These tests now work again.
Comment 3 David Kilzer (:ddkilzer) 2012-01-12 08:43:16 PST

*** This bug has been marked as a duplicate of bug 66521 ***
Comment 4 Adam Roben (:aroben) 2012-01-12 08:52:10 PST
testapi != TestWebKitAPI