Closed Bug 874210 Opened 11 years ago Closed 11 years ago

pymake hits recursion limit (frequently during PGO builds of WebIDL)

Categories

(Firefox Build System :: General, defect)

x86_64
Windows 7
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED FIXED
mozilla28

People

(Reporter: gps, Assigned: ziga.seilnacht)

References

Details

Attachments

(4 files)

Cloning to hopefully one day fix the underlying issue instead of wallpapering over it.

+++ This bug was initially created as a clone of Bug #872856 +++

This contributed to a long tree closure today, and I know it's also contributed to backouts in the past. As spontaneously as it appeared, it seems to have disappeared again. However, I figured we'd at least want an official bug on file for it.

https://tbpl.mozilla.org/php/getParsedLog.php?id=22999366&tree=Mozilla-Inbound

WINNT 5.2 mozilla-inbound pgo-build on 2013-05-15 14:10:42 PDT for push 060dd308b234
slave: w64-ix-slave110

evaluation from e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\config\rules.mk:1674:4:4:0$ nsinstall nsinstall -t -m 644 "AnimationEventBinding.h" "../../dist/include/mozilla/dom"
make.py[8]: Leaving directory 'e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\obj-firefox\dom\system\windows'
make.py[8]: Entering directory 'e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\obj-firefox\dom\system\tests'
make.py[8]: Leaving directory 'e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\obj-firefox\dom\system\tests'
make.py[7]: Leaving directory 'e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\obj-firefox\dom\system'
Traceback (most recent call last):
  File "e:/builds/moz2_slave/m-in-w32-pgo-00000000000000000/build/build/pymake/make.py", line 21, in <module>
    pymake.process.ParallelContext.spin()
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\process.py", line 526, in spin
    c.run()
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\process.py", line 456, in run
    cb(*args, **kwargs)
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 868, in _depfinishedparallel
    self.resolvecb(error=self.error, didanything=self.didanything)
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 762, in resolvecb
    self.runnext()
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 782, in runnext
    self.rlist.pop(0).runcommands(self.indent, self.commandscb)
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 910, in runcommands
    cb(error=False)
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 792, in commandscb
    self.runnext()
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 782, in runnext
    self.rlist.pop(0).runcommands(self.indent, self.commandscb)

...and then the 910, 792, 782 repeated until it eventually dies.

  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 910, in runcommands
    cb(error=False)
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 792, in commandscb
    self.runnext()
  File "e:\builds\moz2_slave\m-in-w32-pgo-00000000000000000\build\build\pymake\pymake\data.py", line 775, in runnext
    self.target.notifydone(self.makefile)
RuntimeError: maximum recursion depth exceeded
program finished with exit code 1
Depends on: 921198
The attached patch reduces pymake's maximum stack depth from 505 to 131 for me (stack depth for PGO build was the same as for regular build for me). Not sure who to flag for review, this part of pymake seems a bit brittle and I'm not sure if the patch doesn't change some silent invariant in the code.

In any case, clobber and pgo builds completed successfully with this patch, pymake's tests also pass.
Attachment #828545 - Flags: review?
I used the attached patch to measure pymake's stack depth. It's only useful for debugging purposes, it includes a hardcoded absolute path for output.
Comment on attachment 828545 [details] [diff] [review]
fix pymake stack depth issues when many targets and prerequisites are present

(Setting explicit review for Ziga)

(In reply to Ziga Seilnacht from comment #1)
> The attached patch reduces pymake's maximum stack depth from 505 to 131 for
> me (stack depth for PGO build was the same as for regular build for me). Not
> sure who to flag for review, this part of pymake seems a bit brittle and I'm
> not sure if the patch doesn't change some silent invariant in the code.
> 
> In any case, clobber and pgo builds completed successfully with this patch,
> pymake's tests also pass.
Attachment #828545 - Flags: review?(mh+mozilla)
Attachment #828545 - Flags: review?(benjamin)
Attachment #828545 - Flags: review?
Comment on attachment 828545 [details] [diff] [review]
fix pymake stack depth issues when many targets and prerequisites are present

Greg knows this part better than i do.
Attachment #828545 - Flags: review?(mh+mozilla) → review?(gps)
Comment on attachment 828545 [details] [diff] [review]
fix pymake stack depth issues when many targets and prerequisites are present

Review of attachment 828545 [details] [diff] [review]:
-----------------------------------------------------------------

I would expect things to blow up loudly if this change is wrong. Since apparently things don't blow up, it should be safe :)

Thanks for looking into this.
Attachment #828545 - Flags: review?(gps)
Attachment #828545 - Flags: review?(benjamin)
Attachment #828545 - Flags: review+
Same as for bug 782037 and bug 935050, could someone please check these two patches in, or set the checkin-needed flag. The [pymake] patch needs to land in
https://hg.mozilla.org/users/bsmedberg_mozilla.com/pymake.
Attachment #828979 - Flags: checkin?
Attachment #828978 - Flags: checkin? → checkin+
Attachment #828979 - Flags: checkin? → checkin+
https://hg.mozilla.org/mozilla-central/rev/41bec0e7bc30
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla28
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: