Closed
Bug 400705
Opened 18 years ago
Closed 18 years ago
[FIX]Crash [@ js_StopResolving] with groupbox, removing binding and field that removes window
Categories
(Core :: XBL, defect, P1)
Core
XBL
Tracking
()
VERIFIED
FIXED
mozilla1.9beta1
People
(Reporter: martijn.martijn, Assigned: bzbarsky)
References
Details
(Keywords: crash, regression, testcase, Whiteboard: [sg:critical?] regression from 372769)
Crash Data
Attachments
(4 files)
|
587 bytes,
application/vnd.mozilla.xul+xml
|
Details | |
|
298 bytes,
text/html
|
Details | |
|
1.19 KB,
text/html
|
Details | |
|
7.06 KB,
patch
|
sicking
:
review+
sicking
:
superreview+
beltzner
:
approvalM9+
beltzner
:
approval1.9+
|
Details | Diff | Splinter Review |
See testcase, which crashes current trunk and branch builds after 100ms, so I'm marking it security sensitive for now.
http://crash-stats.mozilla.com/report/index/f0ebc0f0-80c0-11dc-9225-001a4bd46e84
0 js_StopResolving mozilla/js/src/jscntxt.c:585
1 js_LookupPropertyWithFlags mozilla/js/src/jsobj.c:3422
2 js_LookupProperty mozilla/js/src/jsobj.c:3268
3 js_DeleteProperty mozilla/js/src/jsobj.c:3941
4 JS_DeleteUCProperty2 mozilla/js/src/jsapi.c:3561
5 nsXBLProtoImpl::UndefineFields(JSContext*, JSObject*) mozilla/content/xbl/src/nsXBLProtoImpl.cpp:266
6 nsXBLBinding::ChangeDocument(nsIDocument*, nsIDocument*) mozilla/content/xbl/src/nsXBLBinding.cpp:1065
7 nsXBLService::FlushStyleBindings(nsIContent*) mozilla/content/xbl/src/nsXBLService.cpp:618
8 nsXBLService::LoadBindings(nsIContent*, nsIURI*, nsIPrincipal*, int, nsXBLBinding**, int*) mozilla/content/xbl/src/nsXBLService.cpp:522
9 nsCSSFrameConstructor::ConstructFrameInternal(nsFrameConstructorState&, nsIContent*, nsIFrame*, nsIAtom*, int, nsStyleContext*, nsFrameItems&, int) mozilla/layout/base/nsCSSFrameConstructor.cpp:7639
10 nsCSSFrameConstructor::ConstructFrame(nsFrameConstructorState&, nsIContent*, nsIFrame*, nsFrameItems&) mozilla/layout/base/nsCSSFrameConstructor.cpp:7594
etc...
| Reporter | ||
Comment 1•18 years ago
|
||
| Reporter | ||
Comment 2•18 years ago
|
||
Apparently, it doesn't crash online. It crashes however, when you close the tab, and then do "undo close tab".
Probably, using data urls, would make it crash online, directly.
| Reporter | ||
Comment 3•18 years ago
|
||
| Assignee | ||
Comment 4•18 years ago
|
||
For what it's worth, branch and trunk have to be crashing for somewhat different reasons: the code in the stack in comment 0 doesn't exist on branch.
Blocks: 400780
| Assignee | ||
Comment 5•18 years ago
|
||
OK, so on branch, we're crashing because the initial binding attachment blows away the content. That's bug 372769.
On trunk, binding _attachment_ is ok, but binding _detachment_ can run script because deleting a property resolves it. I'll put up a fix for that.
| Assignee | ||
Comment 6•18 years ago
|
||
Assignee: nobody → bzbarsky
Status: NEW → ASSIGNED
Attachment #285837 -
Flags: superreview?(jonas)
Attachment #285837 -
Flags: review?(jonas)
| Assignee | ||
Comment 7•18 years ago
|
||
That fixes bug 400780 too. Or rather the testcase in that bug.
Flags: blocking1.9?
OS: Windows XP → All
Priority: -- → P1
Hardware: PC → All
Summary: Crash [@ js_StopResolving] with groupbox, removing binding and field that removes window → [FIX]Crash [@ js_StopResolving] with groupbox, removing binding and field that removes window
Target Milestone: --- → mozilla1.9 M10
| Assignee | ||
Updated•18 years ago
|
Attachment #285837 -
Flags: approval1.9?
Comment on attachment 285837 [details] [diff] [review]
Like so
Alternatively, could you instead check if the property is set before undefining it? Or would that be a perf problem?
Attachment #285837 -
Flags: superreview?(jonas)
Attachment #285837 -
Flags: superreview+
Attachment #285837 -
Flags: review?(jonas)
Attachment #285837 -
Flags: review+
| Assignee | ||
Comment 9•18 years ago
|
||
Checking whether the property is set means trying to resolve it, which means executing the field in the case of fields.
There is no public JS API for checking whether a property is set in just the scope of the object in question (which is ideally exactly what we would do).
Comment 10•18 years ago
|
||
(In reply to comment #9)
> Checking whether the property is set means trying to resolve it, which means
> executing the field in the case of fields.
>
> There is no public JS API for checking whether a property is set in just the
> scope of the object in question (which is ideally exactly what we would do).
So you want JS_HasOwnProperty, etc. Please file a JS engine bug and a followup XBL bug blocked by it.
/be
| Assignee | ||
Comment 11•18 years ago
|
||
Filed bug 400793 and bug 400794.
| Assignee | ||
Comment 12•18 years ago
|
||
Comment on attachment 285837 [details] [diff] [review]
Like so
Fixes crash regression from the "actually detach bindings" change. Also makes us not execute fields when we tear down the binding, which can only be a good thing.
Risk is very low, I think.
Attachment #285837 -
Flags: approvalM9?
Comment 13•18 years ago
|
||
Comment on attachment 285837 [details] [diff] [review]
Like so
a=endgame drivers for M9 landing
Attachment #285837 -
Flags: approvalM9?
Attachment #285837 -
Flags: approvalM9+
Attachment #285837 -
Flags: approval1.9?
Attachment #285837 -
Flags: approval1.9+
Updated•18 years ago
|
Flags: blocking1.9? → blocking1.9+
| Assignee | ||
Comment 14•18 years ago
|
||
Checked in.
Status: ASSIGNED → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Target Milestone: mozilla1.9 M10 → mozilla1.9 M9
Comment 15•18 years ago
|
||
verified fixed 1.9.0 linux/macppc/winxp on attachment 285745 [details] and attachment 285746 [details].
Status: RESOLVED → VERIFIED
Comment 16•18 years ago
|
||
Flags: in-testsuite+
Updated•18 years ago
|
Whiteboard: [sg:critical?]
Comment 17•18 years ago
|
||
Given comment 5, do we only need bug 372769 on the 1.8 branch or will we need this fix as well?
Flags: wanted1.8.1.x?
Flags: blocking1.8.1.12?
| Assignee | ||
Comment 18•18 years ago
|
||
It depends on how we fix bug 372769... If we take sicking's fix (which does all the implementation-attachment stuff in EndUpdate) we shouldn't need this change.
Comment 19•18 years ago
|
||
(In reply to comment #18)
> It depends on how we fix bug 372769...
Given still-open regressions we're unlikely to take the fix in bug 372769 on the branch any time soon. Can we take this one instead?
| Assignee | ||
Comment 20•18 years ago
|
||
I think I failed to communicate there...
The patch in this bug fixes a regression from bug 372769. That was the trunk crash.
The branch crash is just a duplicate of bug 372769.
So we only need this patch on branch if we take bug 372769 on branch (which I agree we shouldn't do).
Updated•18 years ago
|
Flags: blocking1.8.1.12?
Keywords: regression
Whiteboard: [sg:critical?] → [sg:critical?] regression from 372769
Updated•15 years ago
|
Crash Signature: [@ js_StopResolving]
Updated•10 years ago
|
Group: core-security → core-security-release
Updated•10 years ago
|
Group: core-security-release
You need to log in
before you can comment on or make changes to this bug.
Description
•