Closed
Bug 1257308
Opened 7 years ago
Closed 7 years ago
Too much recursion 64 bit Windows, 64 bit Firefox 45
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: narayanan.vinod, Unassigned)
References
Details
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 Steps to reproduce: Ran the codebase on firefox 64 bit (version 45) Actual results: Too much recursion error shows up Expected results: Code should have run fine like in 32 bit. It runs fine on firefox 45...32 bit version today.
Comment 1•7 years ago
|
||
What is the codebase? Can you post some standalone testcase?
Flags: needinfo?(narayanan.vinod)
Reporter | ||
Comment 2•7 years ago
|
||
The codebase uses sencha extjs 3.4. Basically opening a dialog with a lot of items (panels) in it causes the issue. Unfortunately i don't think it is easy to create standalone code out of this.
Flags: needinfo?(narayanan.vinod)
Comment 3•7 years ago
|
||
Is there any public page that can reproduce the issue?
Flags: needinfo?(narayanan.vinod)
Reporter | ||
Comment 4•7 years ago
|
||
(In reply to Tooru Fujisawa [:arai] from comment #3) > Is there any public page that can reproduce the issue? Unfortunately not. I would have to create something heavy and expose it on fiddle to reproduce the bug and not sure if I'll be successful. Is there some stack or troubleshooting information from firefox exported out that would help?
Flags: needinfo?(narayanan.vinod)
Comment 5•7 years ago
|
||
Vinod, is it using a recursive algorithm? If it fails, is it possible there are more than, say, 1000 JS frames on the stack? Earlier today I landed a patch to bump the stack limit on Windows a bit (bug 1256306). Does it still reproduce with the build below? https://archive.mozilla.org/pub/firefox/tinderbox-builds/mozilla-inbound-win64-pgo/1458149515/firefox-48.0a1.en-US.win64.zip
Blocks: 1257234
Updated•7 years ago
|
Flags: needinfo?(narayanan.vinod)
Reporter | ||
Comment 6•7 years ago
|
||
(In reply to Jan de Mooij [:jandem] from comment #5) > Vinod, is it using a recursive algorithm? If it fails, is it possible there > are more than, say, 1000 JS frames on the stack? > > Earlier today I landed a patch to bump the stack limit on Windows a bit (bug > 1256306). Does it still reproduce with the build below? > > https://archive.mozilla.org/pub/firefox/tinderbox-builds/mozilla-inbound- > win64-pgo/1458149515/firefox-48.0a1.en-US.win64.zip The issue still happens when I tried the linked build. This is the stack I see on the js console when I hit the error...and the error text is "too much recursion". EXTUTIL.Event.prototype.isListening() Observable.js:460 EXTUTIL.Event.prototype.addListener() Observable.js:410 EXTUTIL.Observable.prototype.addListener() Observable.js:244 EXTUTIL.Observable.prototype.addListener() Observable.js:235 EXTUTIL.Observable() Observable.js:113 Ext.Component() Component.js:275 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 Ext.extend</</sb<() extoverride.js:19 Ext.extend</</sb<() extoverride.js:19 Pan.appframework.modelview.PanRecordFormViewer<.constructor() PanRecordFormViewer.js:18 Ext.extend</</sb<() extoverride.js:19 Pan.monitor.log.CommonDetailedLogPropertyWidget<.constructor() LogDetailWidget.js:50 Ext.ComponentMgr</<.create() ComponentMgr.js:131 Pan.appframework.modelview.PanCompositeViewer<.recreatePortal() PanCompositeViewer.js:98 Pan.appframework.modelview.PanCompositeViewer<.initComponent() PanCompositeViewer.js:21 Pan.monitor.log.CommonDetailedLogCompositeViewer<.initComponent() LogDetailComposite.js:30 Ext.Component() Component.js:281 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 Pan.base.container.Container<.constructor() Container.js:14 Ext.extend</</sb<() extoverride.js:19 Ext.extend</</sb<() extoverride.js:19 Ext.ComponentMgr</<.create() ComponentMgr.js:131 Ext.Container<.createComponent() Container.js:764 Ext.Container<.lookupComponent() Container.js:752 Ext.Container<.add() Container.js:565 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.add/<() Container.js:561 .each() ext-base-debug.js:445 Ext.Container<.add() Container.js:560 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.initComponent() Container.js:451 Ext.Container.prototype.initComponent<() GridRecordField.js:221 util.createExtension/rv() util.js:196 Ext.Component() Component.js:281 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 Pan.base.container.Container<.constructor() Container.js:14 Ext.ComponentMgr</<.create() ComponentMgr.js:131 Ext.Container<.createComponent() Container.js:764 Ext.Container<.lookupComponent() Container.js:752 Ext.Container<.add() Container.js:565 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.add/<() Container.js:561 .each() ext-base-debug.js:445 Ext.Container<.add() Container.js:560 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.initComponent() Container.js:451 Ext.Container.prototype.initComponent<() GridRecordField.js:221 util.createExtension/rv() util.js:196 Ext.Panel<.initComponent() Panel.js:688 Ext.TabPanel<.initComponent() TabPanel.js:259 Pan.base.container.TabPanel<.initComponent() TabPanel.js:78 Ext.Component() Component.js:281 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 util.cextend</</ctor() util.js:275 Ext.ComponentMgr</<.create() ComponentMgr.js:131 Ext.Container<.createComponent() Container.js:764 Ext.Container<.lookupComponent() Container.js:752 Ext.Container<.add() Container.js:565 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.add/<() Container.js:561 .each() ext-base-debug.js:445 Ext.Container<.add() Container.js:560 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.initComponent() Container.js:451 Ext.Container.prototype.initComponent<() GridRecordField.js:221 util.createExtension/rv() util.js:196 Pan.monitor.log.DetailViewer<.initComponent() LogDetailViewer.js:90 Ext.Component() Component.js:281 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 Pan.base.container.Container<.constructor() Container.js:14 Pan.monitor.log.DetailViewer<.constructor() LogDetailViewer.js:87 Ext.ComponentMgr</<.create() ComponentMgr.js:131 Ext.Container<.createComponent() Container.js:764 Ext.Container<.lookupComponent() Container.js:752 Ext.Container<.add() Container.js:565 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.add/<() Container.js:561 .each() ext-base-debug.js:445 Ext.Container<.add() Container.js:560 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.initComponent() Container.js:451 Ext.Container.prototype.initComponent<() GridRecordField.js:221 util.createExtension/rv() util.js:196 Ext.Component() Component.js:281 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 Pan.base.container.Container<.constructor() Container.js:14 Ext.ComponentMgr</<.create() ComponentMgr.js:131 Ext.Container<.createComponent() Container.js:764 Ext.Container<.lookupComponent() Container.js:752 Ext.Container<.add() Container.js:565 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.add/<() Container.js:561 .each() ext-base-debug.js:445 Ext.Container<.add() Container.js:560 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196 Ext.Container<.initComponent() Container.js:451 Ext.Container.prototype.initComponent<() GridRecordField.js:221 util.createExtension/rv() util.js:196 Ext.Component() Component.js:281 .extend</</sb<() ext-base-debug.js:233 .extend</</sb<() ext-base-debug.js:233 Pan.base.container.Container<.constructor() Container.js:14 Ext.ComponentMgr</<.create() ComponentMgr.js:131 Ext.Container<.createComponent() Container.js:764 Ext.Container<.lookupComponent() Container.js:752 Ext.Container<.add() Container.js:565 Ext.Container.prototype.add<() GridRecordField.js:237 util.createExtension/rv() util.js:196
Flags: needinfo?(narayanan.vinod)
Reporter | ||
Comment 7•7 years ago
|
||
Also what is the recursion limit in 32 bit and 64 bit firefox? Just trying to get a sense of how drastically different it is. Also, this is happening not just in 1 page, but many pages in our UI (usually the more complex UIs where the stack could be longer than usual). The simple ones show up fine. On 32 bit no problem whatsoever. Thanks!
Comment 8•7 years ago
|
||
(In reply to Vinod Narayanan from comment #7) > Also what is the recursion limit in 32 bit and 64 bit firefox? Just trying > to get a sense of how drastically different it is. On Windows we get a 1 MB stack for both 32-bit and 64-bit builds, but 64-bit builds use more stack space (pointers are 8 bytes instead of 4, more volatile registers to save, etc.). I want to see if we can use a larger stack, like 4 MB, that's bug 1257234.
Comment 9•7 years ago
|
||
Would you mind trying the build below? https://archive.mozilla.org/pub/firefox/tinderbox-builds/mozilla-central-win64-pgo/1458408680/firefox-48.0a1.en-US.win64.zip That should have the patch for bug 1257234, to use a 2 MB stack limit instead of 1 MB.
Flags: needinfo?(narayanan.vinod)
Reporter | ||
Comment 10•7 years ago
|
||
(In reply to Jan de Mooij [:jandem] from comment #9) > Would you mind trying the build below? > > https://archive.mozilla.org/pub/firefox/tinderbox-builds/mozilla-central- > win64-pgo/1458408680/firefox-48.0a1.en-US.win64.zip > > That should have the patch for bug 1257234, to use a 2 MB stack limit > instead of 1 MB. Thanks guys. It seems to work fine with the build in the link. Could I know which official build this fix would go in.
Flags: needinfo?(narayanan.vinod)
Comment 11•7 years ago
|
||
(In reply to Vinod Narayanan from comment #10) > Thanks guys. It seems to work fine with the build in the link. Could I know > which official build this fix would go in. The fix is currently in Firefox 48. I want to get it in Firefox 46 (beta) and 47 (aurora) too, but that decision is up to our release managers. See bug 1257234.
Status: UNCONFIRMED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•