Bug 147935

Summary: [Win] Some JSC Flakiness, perhaps after switch to VS2015
Product: WebKit Reporter: Brent Fulgham <bfulgham>
Component: JavaScriptCoreAssignee: Mark Lam <mark.lam>
Status: RESOLVED DUPLICATE    
Severity: Normal CC: bfulgham, ggaren, mark.lam, msaboff
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: All   

Description Brent Fulgham 2015-08-12 10:10:00 PDT
I'm noticing the following sporadic failures in the jsscore-test suite:

FAIL: script did not time out as expected.
FAIL: script timeout callback was not called.
FAIL: TerminatedExecutionException was not thrown.

The failures occur in both Debug and Release builds.
Comment 1 Brent Fulgham 2015-08-12 10:13:04 PDT
Full log:

(view as text)
perl ./Tools/Scripts/run-javascriptcore-tests --no-build --release
 in dir /home/buildbot/slave/win-release-tests/build (timeout 1200 secs)
 watching logfiles {}
 argv: ['perl', './Tools/Scripts/run-javascriptcore-tests', '--no-build', '--release']
 environment:
   _NT_SYMBOL_PATH=SRV*http://msdl.microsoft.com/download/symbols;SRV*c:\symbols*http://developer.apple.com/internet/safari/windows_symbols
  !C:=C:\Windows\System32
  ALLUSERSPROFILE=C:\ProgramData
  APPDATA=C:\Users\buildbot\AppData\Roaming
  COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files
  COMPUTERNAME=BOT511
  COMSPEC=C:\Windows\system32\cmd.exe
  CYGWIN=tty
  CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
  CommonProgramW6432=C:\Program Files\Common Files
  DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\
  FP_NO_HOST_CHECK=NO
  HOME=/home/buildbot
  HOMEDRIVE=C:
  HOMEPATH=\Users\buildbot
  HOSTNAME=bot511
  INFOPATH=/usr/local/info:/usr/share/info:/usr/info
  LANG=en_US.UTF-8
  LOCALAPPDATA=C:\Users\buildbot\AppData\Local
  LOGONSERVER=\\BOT511
  NUMBER_OF_PROCESSORS=8
  OLDPWD=/home/buildbot
  ORIGINAL_PATH=/cygdrive/c/Perl64/site/bin:/cygdrive/c/Perl64/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Common Files/Apple/Apple Application Support:/cygdrive/c/xampp/apache/bin:/cygdrive/c/Program Files (x86)/WinMerge
  OS=Windows_NT
  PATH=/usr/local/bin:/usr/bin:/cygdrive/c/Perl64/site/bin:/cygdrive/c/Perl64/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Common Files/Apple/Apple Application Support:/cygdrive/c/xampp/apache/bin:/cygdrive/c/Program Files (x86)/WinMerge
  PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
  PRINTER=Microsoft XPS Document Writer
  PROCESSOR_ARCHITECTURE=x86
  PROCESSOR_ARCHITEW6432=AMD64
  PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
  PROCESSOR_LEVEL=6
  PROCESSOR_REVISION=2a07
  PROFILEREAD=true
  PROGRAMFILES=C:\Program Files (x86)
  PROMPT=$P$G
  PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
  PUBLIC=C:\Users\Public
  PWD=/home/buildbot/slave/win-release-tests/build
  ProgramData=C:\ProgramData
  ProgramFiles(x86)=C:\Program Files (x86)
  ProgramW6432=C:\Program Files
  SESSIONNAME=Console
  SHELL=/bin/bash
  SHLVL=1
  SYSTEMDRIVE=C:
  SYSTEMROOT=C:\Windows
  TEMP=/tmp
  TERM=cygwin
  TMP=/tmp
  TZ=America/Los_Angeles
  USER=buildbot
  USERDOMAIN=BOT511
  USERNAME=buildbot
  USERPROFILE=C:\Users\buildbot
  WEBKIT_LIBRARIES=C:\cygwin\home\buildbot\slave\win-release-tests\build\WebKitLibraries\win
  WEBKIT_OUTPUTDIR=C:\cygwin\home\buildbot\slave\win-release-tests\build\WebKitBuild
  WEBKIT_TESTFONTS=C:\cygwin\home\buildbot\slave\WebKitTestFonts
  WINDIR=C:\Windows
  _=/usr/bin/buildslave
  __COMPAT_LAYER=RunAsAdmin
  asl.log=Destination=file
 using PTY: False
Starting 5 threads for CompareAndSwap test.  Test should complete without hanging.
   started Thread 0
   started Thread 1
   started Thread 2
Waiting for 5 threads to join
   started Thread 3
   finished Thread 2
   finished Thread 1
   finished Thread 0
   finished Thread 3
   started Thread 4
   finished Thread 4
PASS: CompareAndSwap test completed without a hang
PASS: returned private data when set by JSObjectSetPrivate().
PASS: returned null when accessing character pointer of a null String.
PASS: returned empty when accessing character pointer of an empty String.
PASS: returned 0 length for null String.
PASS: returned 0 length for empty String.
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 null String as JSON correctly.
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: this.globalStaticFunction() should be 4 and is.
PASS: globalStaticFunction2(); should be 10 and is.
PASS: globalStaticFunction2(); should be 20 and is.
PASS: this.globalStaticFunction2(); should be 20 and is.
PASS: iAmNotAStaticFunction(); should be 10 and is.
PASS: iAmNotAStaticFunction(); should be 20 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: getting property descriptor of hasPropertyLie threw exception
PASS: Object.getOwnPropertyDescriptor(MyObject, "doesNotExist") should be undefined 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 [object MyObject] 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: new MyBadConstructor() threw: TypeError: Type error
PASS: MyObject.nullGetSet should be 1 and is.
PASS: MyObject.nullCall() threw: ReferenceError: Static function property defined with NULL callAsFunction callback.
PASS: MyObject.hasPropertyLie threw: ReferenceError: hasProperty callback returned true for a property that doesn't exist.
PASS: derived instanceof Derived should be true and is.
PASS: derived instanceof Base should be true and is.
PASS: derived.baseProtoDup() should be 2 and is.
PASS: derived.baseProto() should be 1 and is.
PASS: derived.baseDup should be 2 and is.
PASS: derived.baseOnly should be 1 and is.
PASS: derived.protoOnly() should be 2 and is.
PASS: derived.protoDup should be 2 and is.
PASS: derived.derivedOnly should be 2 and is.
PASS: derived.baseHardNull() should be undefined and is.
PASS: derived.baseDup = 0 should be 2 and is.
PASS: derived.baseOnly = 0 should be 1 and is.
PASS: derived.derivedOnly = 0 should be 2 and is.
PASS: derived.protoDup = 0 should be 2 and is.
PASS: derived2 instanceof Derived2 should be true and is.
PASS: derived2 instanceof Derived should be true and is.
PASS: derived2 instanceof Base should be true and is.
PASS: derived2.baseProtoDup() should be 2 and is.
PASS: derived2.baseProto() should be 1 and is.
PASS: derived2.baseDup should be 2 and is.
PASS: derived2.baseOnly should be 1 and is.
PASS: derived2.protoOnly() should be 2 and is.
PASS: derived2.protoDup should be 2 and is.
PASS: derived2.derivedOnly should be 2 and is.
PASS: derived2.baseDup = 0 should be 2 and is.
PASS: derived2.baseOnly = 0 should be 1 and is.
PASS: derived2.derivedOnly = 0 should be 2 and is.
PASS: derived2.protoDup = 0 should be 2 and is.
PASS: Object.getOwnPropertyDescriptor(derived, "baseProto") should be undefined and is.
PASS: Object.getOwnPropertyDescriptor(derived, "baseProtoDup") should be undefined and is.
PASS: typeof baseDupDescriptor should be object and is.
PASS: baseDupDescriptor.value should be 2 and is.
PASS: baseDupDescriptor.configurable should be true and is.
PASS: baseDupDescriptor.enumerable should be false and is.
PASS: typeof baseOnlyDescriptor should be object and is.
PASS: baseOnlyDescriptor.value should be 1 and is.
PASS: baseOnlyDescriptor.configurable should be true and is.
PASS: baseOnlyDescriptor.enumerable should be false and is.
PASS: Object.getOwnPropertyDescriptor(derived, "protoOnly") should be undefined and is.
PASS: typeof protoDupDescriptor should be object and is.
PASS: protoDupDescriptor.value should be 2 and is.
PASS: protoDupDescriptor.configurable should be true and is.
PASS: protoDupDescriptor.enumerable should be false and is.
PASS: typeof derivedOnlyDescriptor should be object and is.
PASS: derivedOnlyDescriptor.value should be 2 and is.
PASS: derivedOnlyDescriptor.configurable should be true and is.
PASS: derivedOnlyDescriptor.enumerable should be false and is.
PASS: undefined instanceof MyObject should be false and is.
PASS: undefined instanceof EvilExceptionObject threw: RangeError: Maximum call stack size exceeded.
PASS: undefined instanceof EvilExceptionObject should be true and is.
PASS: EvilExceptionObject*5 threw: RangeError: Maximum call stack size exceeded.
PASS: String(EvilExceptionObject) threw: RangeError: Maximum call stack size exceeded.
PASS: console should be [object Console] and is.
PASS: typeof console.log should be function and is.
PASS: EmptyObject should be [object CallbackObject] and is.
PASS: PropertyCatchalls.x should be 4 and is.
PASS: x should be null and is.
PASS: PropertyCatchalls[make_throw]=1 threw: 5
PASS: PropertyCatchalls[make_throw]=1 threw: 5
PASS: y should be null and is.
PASS: z should be null and is.
PASS: Test script executed successfully.
PASS: Promise is exposed under JSContext API.
FAIL: script did not time out as expected.
FAIL: script timeout callback was not called.
FAIL: TerminatedExecutionException was not thrown.
PASS: TerminatedExecutionException was not catchable as expected.
PASS: script timed out as expected when no callback is specified.
PASS: script timeout was cancelled as expected.
PASS: script timeout was extended as expected.
PASS: JSGlobalContextRef called its JSClassRef finalizer as expected.
PASS: Infinite prototype chain does not occur.
PASS: A cycle in a prototype chain can't be created.
PASS: throwException did not crash when handling an error with appendMessageToError set and no codeBlock available.
PASS: global context name behaves as expected.
FAIL: Some tests failed.
testAPI completed with rc=256 (1)
program finished with exit code 1
elapsedTime=1.248002
Comment 2 Mark Lam 2015-08-12 10:19:04 PDT
(In reply to comment #1)
...
> PASS: Promise is exposed under JSContext API.
> FAIL: script did not time out as expected.
> FAIL: script timeout callback was not called.
> FAIL: TerminatedExecutionException was not thrown.
> PASS: TerminatedExecutionException was not catchable as expected.
> PASS: script timed out as expected when no callback is specified.
...

Those 3 failures are just a single test that failed to time out.  As a result, it failed 3 checks that relied on that timeout.  I'll look into it.
Comment 3 Brent Fulgham 2016-04-29 12:57:09 PDT
Is this still happening, or was it fixed?
Comment 4 Mark Lam 2016-04-29 13:03:04 PDT
This should have been fixed in r192390: <http://trac.webkit.org/changeset/192390> due to https://bugs.webkit.org/show_bug.cgi?id=151223.  I'll dup this bug.

*** This bug has been marked as a duplicate of bug 151223 ***