-
Notifications
You must be signed in to change notification settings - Fork 35
Description
So this is a bit of tricky one, and I'm not sure if it's this add or ember-page-title causing it.
Basically, under a very specific set of circumstances, a rendering error (i.e. trying to invoke a non-existent helper) will trigger an infinite loop of errors in FastBoot that ends up spiking the entire fastboot-app-server.
I've put together a minimal reproduction. Clone the repo down, ember s, and hit localhost:4200 to see it in action. As a heads up - once it starts dumping the error in a loop, it stops responding to SIGTERMs (Ctrl-C), so you'll need to forcibly kill the process (i.e. "Force Quit" on Mac or SIGKILL with kill -9).
I'm at a loss as to what might cause this - the errors being dumped aren't super helpful. After the initial error about being unable to find the helper, it just starts dumping this repeatededly:
Details
TypeError: Cannot read property 'syscall' of null
at AppendOpcodes.evaluate (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@glimmer/runtime.js:69:1)
at LowLevelVM.evaluateSyscall (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@glimmer/runtime.js:3269:1)
at LowLevelVM.evaluateInner (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@glimmer/runtime.js:3215:1)
at LowLevelVM.evaluateOuter (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@glimmer/runtime.js:3207:1)
at VM.next (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@glimmer/runtime.js:5262:1)
at TemplateIteratorImpl.next (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@glimmer/runtime.js:5298:1)
at RootState.render (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@ember/-internals/glimmer.js:5883:1)
at TransactionRunner.runInTransaction (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@ember/-internals/metal.js:593:1)
at runInTransaction (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@ember/-internals/metal.js:728:1)
at InertRenderer._renderRoots (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@ember/-internals/glimmer.js:6179:1)
at InertRenderer._renderRootsTransaction (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@ember/-internals/glimmer.js:6216:1)
at InertRenderer._revalidate (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@ember/-internals/glimmer.js:6262:1)
at invokeWithOnError (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/backburner.js:344:1)
at Queue.flush (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/backburner.js:226:1)
at DeferredActionQueues.flush (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/backburner.js:423:1)
at Backburner._end (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/backburner.js:957:1)
at Backburner.end (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/backburner.js:707:1)
at Backburner._run (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/backburner.js:1006:1)
at Backburner._join (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/backburner.js:986:1)
at Backburner.join (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/backburner.js:757:1)
at Array.loopEnd (/var/folders/p4/2wqjhkg160sfdr7pykp6f3ch0000gn/T/broccoli-72882ZYE8RoqN9B1E/out-221-broccoli_merge_trees/assets/@ember/-internals/glimmer.js:6008:1)
[...snip ~100 more lines of repetitive backburner frames...]
Some observations I've made (not sure of the relevance). The problem only seems to occur if:
- the non-existent helper is invoked in a child template. If I move the invocation from
index.hbsintoapplication.hbs, it's fine. - both
{{head-layout}}and{{title}}invocations are present, and they both occur before the{{outlet}}invocation. Remove either, or move either below the{{outlet}}, and it's fine.
Things that don't seem to matter:
- the order of invocation for
{{head-layout}}and{{title}}. Either one first, still hit the problem. - the contents of
head.hbs. I can comment out the entire file and it still occurs.