Closed
Bug 757739
Opened 13 years ago
Closed 13 years ago
crash in nsAccUtils::MustPrune
Categories
(Core :: Disability Access APIs, defect)
Core
Disability Access APIs
Tracking
()
VERIFIED
FIXED
mozilla15
People
(Reporter: scoobidiver, Assigned: surkov)
References
Details
(Keywords: crash, regression, topcrash, Whiteboard: [native-crash])
Crash Data
Attachments
(1 file)
1006 bytes,
patch
|
tbsaunde
:
review+
davidb
:
review+
|
Details | Diff | Splinter Review |
There are three crashes from two different users.
Signature nsAccUtils::MustPrune More Reports Search
UUID 1eef3c8e-0e2a-4296-9813-bd9952120522
Date Processed 2012-05-22 18:42:07
Uptime 2219
Last Crash 2.3 days before submission
Install Age 37.0 minutes since version was first installed.
Install Time 2012-05-22 18:04:53
Product Firefox
Version 15.0a1
Build ID 20120522080220
Release Channel nightly
OS Mac OS X
OS Version 10.7.4 11E53
Build Architecture amd64
Build Architecture Info family 6 model 23 stepping 10
Crash Reason EXC_BAD_ACCESS / KERN_INVALID_ADDRESS
Crash Address 0x70
App Notes
AdapterVendorID: 0x10de, AdapterDeviceID: 0x 8a0GL Context? GL Context+ GL Layers? GL Layers+
EMCheckCompatibility True
Frame Module Signature Source
0 XUL nsAccUtils::MustPrune Accessible-inl.h:16
1 XUL nsAccessible::AppendTextTo nsAccessible.cpp:2486
2 XUL NotificationController::CreateTextChangeEventFor NotificationController.cpp:667
3 XUL NotificationController::QueueEvent NotificationController.cpp:117
4 XUL nsDocAccessible::UpdateTreeInternal nsDocAccessible.cpp:1717
5 XUL nsDocAccessible::UpdateTree nsDocAccessible.cpp:1810
6 XUL nsCSSFrameConstructor::ContentRemoved nsCSSFrameConstructor.cpp:7390
7 XUL nsCSSFrameConstructor::RecreateFramesForContent nsCSSFrameConstructor.cpp:9099
8 XUL nsCSSFrameConstructor::ProcessRestyledFrames nsCSSFrameConstructor.cpp:7906
9 XUL nsCSSFrameConstructor::RestyleElement nsCSSFrameConstructor.cpp:8052
10 XUL mozilla::css::RestyleTracker::DoProcessRestyles RestyleTracker.cpp:124
11 XUL nsCSSFrameConstructor::ProcessPendingRestyles RestyleTracker.h:68
12 XUL PresShell::FlushPendingNotifications nsPresShell.cpp:3800
13 XUL nsDocument::FlushPendingNotifications nsDocument.cpp:6336
14 XUL nsComputedDOMStyle::GetPropertyCSSValue nsComputedDOMStyle.cpp:460
15 XUL nsComputedDOMStyle::GetPropertyValue nsComputedDOMStyle.cpp:283
16 XUL nsIDOMCSSStyleDeclaration_GetPropertyValue dom_quickstubs.cpp:9949
...
More reports at:
https://crash-stats.mozilla.com/report/list?signature=nsAccUtils%3A%3AMustPrune
Comment 1•13 years ago
|
||
Sounds like a regression from bug 754869, but this landed only very recently.
Reporter | ||
Updated•13 years ago
|
Assignee | ||
Comment 2•13 years ago
|
||
since we process nsCSSFrameConstructor::ContentRemoved then we fire hide event (note, we do that before we unattach it from tree) so it must have a parent but it doesn't since MustPrune(Parent()) crashes. So if no other ideas then I'd suggest to null check Parent() and assert.
Version: 15 Branch → Trunk
Reporter | ||
Comment 3•13 years ago
|
||
I added another related signature. More reports at:
https://crash-stats.mozilla.com/report/list?signature=nsAccessible%3A%3ARole
Crash Signature: [@ nsAccUtils::MustPrune] → [@ nsAccUtils::MustPrune]
[@ nsAccessible::Role]
Reporter | ||
Comment 4•13 years ago
|
||
Here are Windows crashes: https://crash-stats.mozilla.com/report/list?signature=nsAccessible%3A%3ARole%28%29
Crash Signature: [@ nsAccUtils::MustPrune]
[@ nsAccessible::Role] → [@ nsAccUtils::MustPrune]
[@ nsAccessible::Role]
[@ nsAccessible::Role()]
OS: Mac OS X → All
Hardware: x86_64 → All
Assignee | ||
Comment 5•13 years ago
|
||
Assignee: nobody → surkov.alexander
Status: NEW → ASSIGNED
Attachment #626373 -
Flags: review?(trev.saunders)
Reporter | ||
Updated•13 years ago
|
Whiteboard: [native-crash]
Comment 6•13 years ago
|
||
Comment on attachment 626373 [details] [diff] [review]
patch
Review of attachment 626373 [details] [diff] [review]:
-----------------------------------------------------------------
r=me. I'd prefer no assert.
Attachment #626373 -
Flags: review+
Comment 7•13 years ago
|
||
(In reply to David Bolter [:davidb] from comment #6)
> Comment on attachment 626373 [details] [diff] [review]
> patch
>
> Review of attachment 626373 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> r=me. I'd prefer no assert.
why no assert? this really should never happen, ideally I'd rather not take this, if we can figure out what's going on here. However the stacks really don't give me any ideas either, do we have any urls or ideas how to reproduce? I suspect somehow we operate on bd tree, but I'm not sure how it got that wy off hand. crash-stats.m.o is just giving me 500s so I'm not really sure what all we know. I'm pretty sure I could cause the same crash if I removed nsAccessible::GetIndexOf() and replaced it with a direct call to IndexInParent() which seems like something we should do.
Comment 8•13 years ago
|
||
I should have explicitly added to file a follow up bug. I assumed we wouldn't be happy just null checking.
![]() |
||
Comment 9•13 years ago
|
||
(In reply to Trevor Saunders (:tbsaunde) from comment #7)
> crash-stats.m.o is just giving me 500s so I'm not
> really sure what all we know.
Should be temporary, work is being done on that. Try those for now:
https://crash-stats.mozilla.com/report/list?product=Firefox&signature=nsAccUtils%3A%3AMustPrune
https://crash-stats.mozilla.com/report/list?product=Firefox&signature=nsAccessible%3A%3ARole
https://crash-stats.mozilla.com/report/list?product=Firefox&signature=nsAccessible%3A%3ARole()
Comment 10•13 years ago
|
||
When is nsCSSFrameConstructor::ContentRemoved called with no aContainer?
Assignee | ||
Comment 11•13 years ago
|
||
(In reply to David Bolter [:davidb] from comment #10)
> When is nsCSSFrameConstructor::ContentRemoved called with no aContainer?
on document iirc
Assignee | ||
Comment 12•13 years ago
|
||
(In reply to Trevor Saunders (:tbsaunde) from comment #7)
> I'm pretty sure I could cause the same crash
> if I removed nsAccessible::GetIndexOf() and replaced it with a direct call
> to IndexInParent() which seems like something we should do.
can you elaborate that?
Assignee | ||
Comment 13•13 years ago
|
||
(In reply to David Bolter [:davidb] from comment #8)
> I should have explicitly added to file a follow up bug. I assumed we
> wouldn't be happy just null checking.
We aren't happy and if somebody have options/ideas then follow up bug makes sense if we don't put a fix right here. Otherwise I don't see a reason to have a follow up.
Comment 14•13 years ago
|
||
(In reply to alexander :surkov from comment #12)
> (In reply to Trevor Saunders (:tbsaunde) from comment #7)
> > I'm pretty sure I could cause the same crash
> > if I removed nsAccessible::GetIndexOf() and replaced it with a direct call
> > to IndexInParent() which seems like something we should do.
>
> can you elaborate that?
Well, I'm not actually sure what I was thinking... so, in NotificationController::CreateTextChangeEvent() we call ChildOffset() of the text accessible on the hyper text accessible. which starts by calling GetIndexOf(textAccessible) on the hyper text accessible. which should be changed to just textAccessible->IndexInParent(), but I don't see why tht would crash now just return wrong result.
Comment 15•13 years ago
|
||
Comment on attachment 626373 [details] [diff] [review]
patch
I'm sort of tempted to try adding
if (textAcc->Parent() != hyperTextAcc)
return
in CreateTextChangeEvent(), but I'm not having any luck trying to come up with an explanaition. so r=me I guess :(
Attachment #626373 -
Flags: review?(trev.saunders) → review+
Assignee | ||
Comment 16•13 years ago
|
||
(In reply to Trevor Saunders (:tbsaunde) from comment #15)
> if (textAcc->Parent() != hyperTextAcc)
> return
>
> in CreateTextChangeEvent()
if you meant
if (aEvent->mAccessible->Parent() != textAccessible)
then yes it helps since Parent() is null but in this case we don't hit the assertion I added. Did you mean something else?
Comment 17•13 years ago
|
||
(In reply to alexander :surkov from comment #16)
> (In reply to Trevor Saunders (:tbsaunde) from comment #15)
>
> > if (textAcc->Parent() != hyperTextAcc)
> > return
> >
> > in CreateTextChangeEvent()
>
> if you meant
> if (aEvent->mAccessible->Parent() != textAccessible)
>
> then yes it helps since Parent() is null but in this case we don't hit the
> assertion I added. Did you mean something else?
I think what I meant exactly was
if (aEvent->mAccessible->Parent() != hyperTextAcc)
return;
with an assert too. I mostly wanted to be more targeted in when we add computations we shouldn't need.
Assignee | ||
Comment 18•13 years ago
|
||
ok, that makes sense
Assignee | ||
Comment 19•13 years ago
|
||
(In reply to alexander :surkov from comment #18)
> ok, that makes sense
on the second glace, that check inside CreateTextChangeEvent makes us to not fire an event. I wouldn't do that since I don't understand what's going on here. Perhaps it's worth to go with original patch as is. Trevor?
Reporter | ||
Comment 20•13 years ago
|
||
It's #8 top crasher over the last 3 days.
tracking-firefox15:
--- → ?
Keywords: topcrash
Comment 21•13 years ago
|
||
(In reply to alexander :surkov from comment #19)
> (In reply to alexander :surkov from comment #18)
> > ok, that makes sense
>
> on the second glace, that check inside CreateTextChangeEvent makes us to not
> fire an event. I wouldn't do that since I don't understand what's going on
> here. Perhaps it's worth to go with original patch as is. Trevor?
sure, I'll land this with the Accessible stuff in a few minutes when try finishes getting green.
However I noticed one of the crash reports mentioned arte.tv where I can reliably reproduce the crash on linux 64 both non optamized and with debugging on.
Assignee | ||
Comment 22•13 years ago
|
||
(In reply to Trevor Saunders (:tbsaunde) from comment #21)
> However I noticed one of the crash reports mentioned arte.tv where I can
> reliably reproduce the crash on linux 64 both non optamized and with
> debugging on.
cool, we can fix it then. I'll try it out.
Comment 23•13 years ago
|
||
(In reply to alexander :surkov from comment #22)
> (In reply to Trevor Saunders (:tbsaunde) from comment #21)
>
> > However I noticed one of the crash reports mentioned arte.tv where I can
> > reliably reproduce the crash on linux 64 both non optamized and with
> > debugging on.
>
> cool, we can fix it then. I'll try it out.
nice, I looked a bit, I didn't get to far, but it seems textAccessibles children flags are eUninitializedChildren which I can only see being the case if aEvent->mAccessible was never added to it. I also saw aEvent->mAccessible->mContent->GetParent() == textAccessible->mContent if that helps.
Assignee | ||
Comment 24•13 years ago
|
||
I can reproduce it. So I'll debug it and land the existing patch to stop crashing.
Assignee | ||
Comment 25•13 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/563cb4e5d1d5
I'll file another bug for the issue when I get something.
Whiteboard: [native-crash] → [native-crash][leave-open]
Target Milestone: --- → mozilla15
Assignee | ||
Updated•13 years ago
|
Whiteboard: [native-crash][leave-open] → [native-crash]
Reporter | ||
Updated•13 years ago
|
Crash Signature: [@ nsAccUtils::MustPrune]
[@ nsAccessible::Role]
[@ nsAccessible::Role()] → [@ nsAccUtils::MustPrune]
[@ nsAccessible::Role]
[@ nsAccessible::Role()]
[@ Accessible::Role]
[@ Accessible::Role()]
Assignee | ||
Comment 26•13 years ago
|
||
I filed bug 759650 as follow up
Comment 27•13 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Updated•13 years ago
|
status-firefox15:
--- → fixed
Comment 29•13 years ago
|
||
Marco, can you please verify this bug is fixed in Firefox 15.0a2 Aurora?
Comment 30•13 years ago
|
||
Removing QAWANTED as this is currently being tracked in our verification queries through status/tracking flags. Alex, pleas re-add if there is something more then simple verification that you need.
Keywords: qawanted
Comment 31•13 years ago
|
||
This landed before the uplift of 15 to Aurora, so yeah should be fixed. I could never reproduce it myself, so have no manual means to verify, but from inspection, the patch is in Aurora.
Comment 32•13 years ago
|
||
I'm not seeing any recent crash reports with this signature. This in addition to comment 31 is the best we can do in terms of verification. We can re-open if this signature reappears.
Status: RESOLVED → VERIFIED
You need to log in
before you can comment on or make changes to this bug.
Description
•