Closed Bug 708261 Opened 13 years ago Closed 13 years ago

findReferences crashes in shell js/tests (js1_8_5/extensions/findReferences-01.js et al)

Categories

(Core :: JavaScript Engine, defect)

Other Branch
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla11

People

(Reporter: jorendorff, Assigned: jorendorff)

References

Details

Attachments

(1 file)

REGRESSIONS
    js1_5/Regress/regress-96526-003.js
    js1_8/extensions/regress-422269.js
    js1_8/genexps/regress-380237-01.js
    js1_8_5/extensions/findReferences-01.js
    js1_8_5/extensions/findReferences-02.js
    js1_8_5/extensions/findReferences-03.js
    js1_8_5/extensions/findReferences-04.js
findReferences always crashes now.

The first bad revision is:
changeset:   81246:ff51ddfdf5d1
parent:      77573:44ef245b8706
user:        Brian Hackett <bhackett1024@gmail.com>
date:        Wed Sep 28 15:04:55 2011 -0700
summary:     Remove shape numbers and Shape::slotSpan, factor Shape getter/setter into BaseShape, bug 684505.
Attached patch v1Splinter Review
It was previously possible to get output containing the property id for getters and setters, but it seems this is no longer feasible, since the graph is like this:

  shape -> propid
  shape -> base -> getter

I think multiple properties with different names can share 'base'.
Assignee: general → jorendorff
Attachment #579876 - Flags: review?(jimb)
The above patch does not solve the problems with
    js1_5/Regress/regress-96526-003.js
    js1_8/extensions/regress-422269.js
    js1_8/genexps/regress-380237-01.js
all of which seem to be older issues, and perhaps only happen on Mac with the new compiler.
Blocks: 697479
So is the bug here that MarkChildren is passing PrintPropertyGetterOrSetter, which expects the debugArg to be a Shape *, but supplying a BaseShape * instead?
findReferences should just report the graph edges that the GC gives it; it needn't jump through hoops to try to get getter/setter names. So getting 'shape; base; getter' instead of 'shape; foo getter' is totally fine.
(In reply to Jim Blandy :jimb from comment #7)
> So is the bug here that MarkChildren is passing PrintPropertyGetterOrSetter,
> which expects the debugArg to be a Shape *, but supplying a BaseShape *
> instead?

Yes. However, since the BaseShape doesn't have the information PrintPropertyGetterOrSetter used to print, there's no point using a debugPrinter function there at all.

(In reply to Jim Blandy :jimb from comment #8)
> findReferences should just report the graph edges that the GC gives it; it
> needn't jump through hoops to try to get getter/setter names.

Great.
Comment on attachment 579876 [details] [diff] [review]
v1

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

Splendid, splendid. Thanks for sorting this out!
Attachment #579876 - Flags: review?(jimb) → review+
Blocks: 708838
https://hg.mozilla.org/integration/mozilla-inbound/rev/e7785a537e5d
Flags: in-testsuite+
Target Milestone: --- → mozilla11
Changing the description to be more specific. The rest of the failing tests will have to get their own bugs. I made one for the "too much recursion" stuff. In fact I made two, but bug 708862 is the better report.
Summary: A bunch of js/tests are failing (js1_5/Regress/regress-96526-003.js, js1_8/extensions/regress-422269.js, js1_8/genexps/regress-380237-01.js, js1_8_5/extensions/findReferences-01.js) → findReferences crashes in shell js/tests (js1_8_5/extensions/findReferences-01.js et al)
Target Milestone: mozilla11 → ---
https://hg.mozilla.org/mozilla-central/rev/e7785a537e5d
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla11
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: