Bug 143407 - Web Inspector: Unresponsive Console prompt
Summary: Web Inspector: Unresponsive Console prompt
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Inspector (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P1 Blocker
Assignee: Mark Lam
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2015-04-04 18:50 PDT by Nikita Vasilyev
Modified: 2015-04-13 11:30 PDT (History)
14 users (show)

See Also:


Attachments
Screencast (1.20 MB, video/mp4)
2015-04-04 18:51 PDT, Nikita Vasilyev
no flags Details
[TEST] Test Case (1011 bytes, text/html)
2015-04-08 20:54 PDT, Joseph Pecoraro
no flags Details
the patch. (6.25 KB, patch)
2015-04-11 14:52 PDT, Mark Lam
fpizlo: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Nikita Vasilyev 2015-04-04 18:50:21 PDT
I experience this problem once every other week.

Last few errors:

[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	patchDisplay (codemirror.js, line 761)
	updateDisplayInner (codemirror.js, line 633)
	updateDisplay (codemirror.js, line 549)
	endOperation (codemirror.js, line 1926)
	(anonymous function) (codemirror.js, line 1994)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	runInOp (codemirror.js, line 1986)
	highlightWorker (codemirror.js, line 1398)
	(anonymous function) (codemirror.js, line 7089)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	patchDisplay (codemirror.js, line 761)
	updateDisplayInner (codemirror.js, line 633)
	updateDisplay (codemirror.js, line 549)
	endOperation (codemirror.js, line 1926)
	(anonymous function) (codemirror.js, line 1994)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	patchDisplay (codemirror.js, line 761)
	updateDisplayInner (codemirror.js, line 633)
	updateDisplay (codemirror.js, line 549)
	endOperation (codemirror.js, line 1926)
	readInput (codemirror.js, line 2312)
	p (codemirror.js, line 2223)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	runInOp (codemirror.js, line 1986)
	highlightWorker (codemirror.js, line 1398)
	(anonymous function) (codemirror.js, line 7089)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	patchDisplay (codemirror.js, line 761)
	updateDisplayInner (codemirror.js, line 633)
	updateDisplay (codemirror.js, line 549)
	endOperation (codemirror.js, line 1926)
	readInput (codemirror.js, line 2312)
	p (codemirror.js, line 2223)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	patchDisplay (codemirror.js, line 761)
	updateDisplayInner (codemirror.js, line 633)
	updateDisplay (codemirror.js, line 549)
	endOperation (codemirror.js, line 1926)
	(anonymous function) (codemirror.js, line 1994)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	runInOp (codemirror.js, line 1986)
	highlightWorker (codemirror.js, line 1398)
	(anonymous function) (codemirror.js, line 7089)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	patchDisplay (codemirror.js, line 761)
	updateDisplayInner (codemirror.js, line 633)
	updateDisplay (codemirror.js, line 549)
	endOperation (codemirror.js, line 1926)
	readInput (codemirror.js, line 2312)
	p (codemirror.js, line 2223)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	runInOp (codemirror.js, line 1986)
	highlightWorker (codemirror.js, line 1398)
	(anonymous function) (codemirror.js, line 7089)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	patchDisplay (codemirror.js, line 761)
	updateDisplayInner (codemirror.js, line 633)
	updateDisplay (codemirror.js, line 549)
	endOperation (codemirror.js, line 1926)
	readInput (codemirror.js, line 2312)
	p (codemirror.js, line 2223)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	runInOp (codemirror.js, line 1986)
	highlightWorker (codemirror.js, line 1398)
	(anonymous function) (codemirror.js, line 7089)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	patchDisplay (codemirror.js, line 761)
	updateDisplayInner (codemirror.js, line 633)
	updateDisplay (codemirror.js, line 549)
	endOperation (codemirror.js, line 1926)
	(anonymous function) (codemirror.js, line 1994)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	runInOp (codemirror.js, line 1986)
	highlightWorker (codemirror.js, line 1398)
	(anonymous function) (codemirror.js, line 7089)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	cont (javascript.js, line 265)
	maybeoperatorNoComma (javascript.js, line 401)
	maybeoperatorComma (javascript.js, line 386)
	parseJS (javascript.js, line 248)
	token (javascript.js, line 610)
	extendedToken (CodeMirrorAdditions.js, line 235)
	readToken (codemirror.js, line 5620)
	runMode (codemirror.js, line 5640)
	highlightLine (codemirror.js, line 5669)
	getLineStyles (codemirror.js, line 5704)
	buildLineContent (codemirror.js, line 5762)
	getLineContent (codemirror.js, line 822)
	updateLineText (codemirror.js, line 830)
	updateLineForChanges (codemirror.js, line 780)
	prepareMeasureForLine (codemirror.js, line 1548)
	measureChar (codemirror.js, line 1525)
	charCoords (codemirror.js, line 1732)
	coords (codemirror.js, line 1317)
	(anonymous function) (codemirror.js, line 1321)
	iterateBidiSections (codemirror.js, line 7323)
	drawForLine (codemirror.js, line 1320)
	drawSelectionRange (codemirror.js, line 1350)
	updateSelection (codemirror.js, line 1259)
	endOperation (codemirror.js, line 1930)
	(anonymous function) (codemirror.js, line 1994)
[Error] TypeError: pass.apply is not a function. (In 'pass.apply(null, arguments)', 'pass.apply' is undefined)
	(anonymous function) (codemirror.js, line 1994)
Comment 1 Radar WebKit Bug Importer 2015-04-04 18:50:33 PDT
<rdar://problem/20427980>
Comment 2 Nikita Vasilyev 2015-04-04 18:51:15 PDT
Created attachment 250142 [details]
Screencast
Comment 3 Joseph Pecoraro 2015-04-05 19:02:41 PDT
I've been seeing this as well. This is a serious issue. It is likely surfacing because we have moved a lot of our code to ES6 classes which made them strict mode, so this may have been a pre-existing issue in JSC.

Given the unusual nature of the runtime error, because the code in the immediate vicinity appears valid and straightforward, it makes me think this is a JavaScriptCore issue. If we can come up with really solid steps to reproduce, we should be able to verify it is caused by JIT/DFG/FTL, create a reduction, and pass off to JavaScriptCore engineers.
Comment 4 Joseph Pecoraro 2015-04-08 20:54:05 PDT
Created attachment 250409 [details]
[TEST] Test Case

Test case for reproducing.
Comment 5 Joseph Pecoraro 2015-04-08 21:11:11 PDT
With a reproducible test I bisected this to: r181993
http://trac.webkit.org/changeset/181993

* STEPS TO REPRODUCE
1. Open attached HTML test case
2. Open Inspector and view the html Source Code (triggers CodeMirror code highlighting)
  => Uncaught exceptions in Inspector Window, visible by inspecting the inspector

* NOTES
- Disabling the JIT (JSC_useJIT=0) this doesn't reproduce, so seems JIT related
- I'll see if I can create a reduction or something since on its own, this isn't very useful.
Comment 6 Mark Lam 2015-04-10 15:59:36 PDT
<rdar://problem/20415532>

This issue happens to be a dup of a bug that was already tracked by <rdar://problem/20415532>.  Will relate this bug to that rdar.
Comment 7 Mark Lam 2015-04-11 14:52:19 PDT
Created attachment 250585 [details]
the patch.
Comment 8 Mark Lam 2015-04-13 11:10:42 PDT
Thanks for the review.  Landed in r182745: <http://trac.webkit.org/r182745>.
Comment 9 Geoffrey Garen 2015-04-13 11:30:52 PDT
👍