Closed Bug 844074 Opened 12 years ago Closed 7 years ago

crash in nsAccessibilityService::CreateAccessibleForDeckChild

Categories

(Core :: Disability Access APIs, defect)

19 Branch
All
Linux
defect
Not set
critical

Tracking

()

RESOLVED WORKSFORME
Tracking Status
firefox19 --- affected

People

(Reporter: scoobidiver, Unassigned)

References

Details

(Keywords: crash)

Crash Data

There are a few crashes in 19.0 (throttle of 10%).

Signature 	nsAccessibilityService::CreateAccessibleForDeckChild(nsIFrame*, nsIContent*, mozilla::a11y::DocAccessible*) More Reports Search
UUID	21710411-5fa2-4fa0-ad32-f81b32130220
Date Processed	2013-02-20 11:38:44
Uptime	1909
Last Crash	more than 3 months before submission
Install Age	31.8 minutes since version was first installed.
Install Time	2013-02-20 11:06:01
Product	Firefox
Version	19.0
Build ID	20130218165021
Release Channel	release
OS	Linux
OS Version	0.0.0 Linux 2.6.32-45-generic #103-Ubuntu SMP Thu Feb 7 22:19:08 UTC 2013 x86_64
Build Architecture	amd64
Build Architecture Info	family 15 model 35 stepping 2
Crash Reason	SIGSEGV
Crash Address	0x0
User Comments	Crashed while running multiple audio stream players
App Notes 	
OpenGL: Advanced Micro Devices, Inc. -- Mesa DRI R600 (RV630 9589) 20090101  TCL -- 1.5 Mesa 7.7.1 -- texture_from_pixmap
Processor Notes 	sp-processor05.phx1.mozilla.com_30511:2008; exploitablity tool: ERROR: unable to analyze dump
EMCheckCompatibility	True	
Accessibility	Active

Frame 	Module 	Signature 	Source
0 	libxul.so 	nsAccessibilityService::CreateAccessibleForDeckChild 	nsAccessibilityService.cpp:1511
1 	libxul.so 	nsAccessibilityService::GetOrCreateAccessible 	nsAccessibilityService.cpp:926
2 	libxul.so 	mozilla::a11y::TreeWalker::NextChildInternal 	TreeWalker.cpp:90
3 	libxul.so 	mozilla::a11y::Accessible::CacheChildren 	TreeWalker.h:38
4 	libxul.so 	mozilla::a11y::Accessible::EnsureChildren 	Accessible.cpp:2996
5 	libxul.so 	mozilla::a11y::DocAccessible::ProcessContentInserted 	DocAccessible.cpp:1823
6 	libxul.so 	mozilla::a11y::NotificationController::ContentInsertion::Process 	NotificationController.cpp:887
7 	libxul.so 	mozilla::a11y::NotificationController::WillRefresh 	NotificationController.cpp:232
8 	libxul.so 	nsRefreshDriver::Notify 	nsRefreshDriver.cpp:347
9 	libxul.so 	nsTimerImpl::Fire 	nsTimerImpl.cpp:485
10 	libxul.so 	nsTimerEvent::Run 	nsTimerImpl.cpp:565
11 	libxul.so 	nsThread::ProcessNextEvent 	nsThread.cpp:627
12 	libxul.so 	NS_ProcessNextEvent_P 	nsThreadUtils.cpp:238
13 	libxul.so 	mozilla::ipc::MessagePump::Run 	MessagePump.cpp:82
14 	libxul.so 	MessageLoop::Run 	message_loop.cc:208
15 	libxul.so 	nsBaseAppShell::Run 	nsBaseAppShell.cpp:163
16 	libxul.so 	nsAppStartup::Run 	nsAppStartup.cpp:290
17 	libxul.so 	XREMain::XRE_mainRun 	nsAppRunner.cpp:3823
18 	libxul.so 	XREMain::XRE_main 	nsAppRunner.cpp:3890
19 	libxul.so 	XRE_main 	nsAppRunner.cpp:4084
20 	firefox 	main 	nsBrowserApp.cpp:174 

More reports at:
https://crash-stats.mozilla.com/report/list?signature=nsAccessibilityService%3A%3ACreateAccessibleForDeckChild%28nsIFrame*%2C+nsIContent*%2C+mozilla%3A%3Aa11y%3A%3ADocAccessible*%29
technically we can't trust nsAccessibilityService::CreateAccessibleByType since it gets nsIAccessibleProvider which is implemented by XBL binding and calls accessibleType property. It doesn't necessary with this crash but that's something we need to rethink to be on safe side.
(In reply to alexander :surkov from comment #2)
> technically we can't trust nsAccessibilityService::CreateAccessibleByType
> since it gets nsIAccessibleProvider which is implemented by XBL binding and
> calls accessibleType property. It doesn't necessary with this crash but

not necessarily what's at fault, but it seems like a good guess.

> that's something we need to rethink to be on safe side.

I'm really not sure what to do here, making it safe to call into js here sounds like a pretty bad / expensive thing to do.  The tag for xul elements is somehow magically set by the binding right?  can we just use that and kill the nsIAccessibleProvider stuff?
(In reply to Trevor Saunders (:tbsaunde) from comment #3)
> (In reply to alexander :surkov from comment #2)
> > technically we can't trust nsAccessibilityService::CreateAccessibleByType
> > since it gets nsIAccessibleProvider which is implemented by XBL binding and
> > calls accessibleType property. It doesn't necessary with this crash but
> 
> not necessarily what's at fault, but it seems like a good guess.

afaik our toolkit is safe but those crash reports has bunch of addons, so it could be

> > that's something we need to rethink to be on safe side.
> 
> I'm really not sure what to do here, making it safe to call into js here
> sounds like a pretty bad / expensive thing to do.  The tag for xul elements
> is somehow magically set by the binding right?  can we just use that and
> kill the nsIAccessibleProvider stuff?

I think it could be easy: replace nsIAccessibleProvider::accessibleType to attributes like @role="xul:alert". If that's a good idea to mix with ARIA.
(In reply to alexander :surkov from comment #4)
> (In reply to Trevor Saunders (:tbsaunde) from comment #3)
> > (In reply to alexander :surkov from comment #2)
> > > technically we can't trust nsAccessibilityService::CreateAccessibleByType
> > > since it gets nsIAccessibleProvider which is implemented by XBL binding and
> > > calls accessibleType property. It doesn't necessary with this crash but
> > 
> > not necessarily what's at fault, but it seems like a good guess.
> 
> afaik our toolkit is safe but those crash reports has bunch of addons, so it
> could be

well, I guess it might also be the xul tree stuff in bug 809871

> > > that's something we need to rethink to be on safe side.
> > 
> > I'm really not sure what to do here, making it safe to call into js here
> > sounds like a pretty bad / expensive thing to do.  The tag for xul elements
> > is somehow magically set by the binding right?  can we just use that and
> > kill the nsIAccessibleProvider stuff?
> 
> I think it could be easy: replace nsIAccessibleProvider::accessibleType to
> attributes like @role="xul:alert". If that's a good idea to mix with ARIA.

hm, if you only do that for xul stuff so that content can't do it that seems fine.
(In reply to Trevor Saunders (:tbsaunde) from comment #5)

> well, I guess it might also be the xul tree stuff in bug 809871

true, it's not assigned to you but you have patches. Do you work on it/have plans?

> > I think it could be easy: replace nsIAccessibleProvider::accessibleType to
> > attributes like @role="xul:alert". If that's a good idea to mix with ARIA.
> 
> hm, if you only do that for xul stuff so that content can't do it that seems
> fine.

having it visible from content might be not so bad.
(In reply to Scoobidiver from comment #0)
> There are a few crashes in 19.0 (throttle of 10%).

Does this appear to be related to any particular addons?
Flags: needinfo?(scoobidiver)
(In reply to alexander :surkov from comment #6)
> (In reply to Trevor Saunders (:tbsaunde) from comment #5)
> 
> > well, I guess it might also be the xul tree stuff in bug 809871
> 
> true, it's not assigned to you but you have patches. Do you work on it/have
> plans?

not particularly, I could work on it but I also have the doc cache thing and reviews to do so probably not for a day or two.

> > > I think it could be easy: replace nsIAccessibleProvider::accessibleType to
> > > attributes like @role="xul:alert". If that's a good idea to mix with ARIA.
> > 
> > hm, if you only do that for xul stuff so that content can't do it that seems
> > fine.
> 
> having it visible from content might be not so bad.

maybbe, we sort of already do as aria grid and cell.  In any case the only time nsIAccessibleProvider appears to be used is for xul so we can worry about content later.
(In reply to Trevor Saunders (:tbsaunde) from comment #8)

> > true, it's not assigned to you but you have patches. Do you work on it/have
> > plans?
> 
> not particularly, I could work on it but I also have the doc cache thing and
> reviews to do so probably not for a day or two.

this is fine, if you can finish them in Firefox 21 timeframe then it'd be great.

> > > > I think it could be easy: replace nsIAccessibleProvider::accessibleType to
> > > > attributes like @role="xul:alert". If that's a good idea to mix with ARIA.
> > > 
> > > hm, if you only do that for xul stuff so that content can't do it that seems
> > > fine.
> > 
> > having it visible from content might be not so bad.
> 
> maybbe, we sort of already do as aria grid and cell.  In any case the only
> time nsIAccessibleProvider appears to be used is for xul so we can worry
> about content later.

right. I'll file a bug.
(In reply to Trevor Saunders (:tbsaunde) from comment #7)
> Does this appear to be related to any particular addons?
With such a low volume per day (no correlations per week), correlations are not representative and are often caused by duplicates:
     42% (5/12) vs.  16% (154/937) {b9db16a4-6edc-47ec-a1f4-b86292ed211d} (Video DownloadHelper, https://addons.mozilla.org/addon/3006)
     42% (5/12) vs.  18% (170/937) langpack-fr@firefox.mozilla.org
     25% (3/12) vs.  13% (121/937) langpack-zh-CN@firefox.mozilla.org
     17% (2/12) vs.   5% (47/937) {c0c9a2c7-2e5c-4447-bc53-97718bc91e1b} (Easy YouTube Video Downloader, https://addons.mozilla.org/addon/10137)
     83% (10/12) vs.  72% (673/937) globalmenu@ubuntu.com
     92% (11/12) vs.  82% (771/937) ubufox@ubuntu.com
Flags: needinfo?(scoobidiver)
(In reply to Scoobidiver from comment #10)
> (Video DownloadHelper, https://addons.mozilla.org/addon/3006)

this one contains a lot of XUL trees
Depends on: 809871
Crash Signature: [@ nsAccessibilityService::CreateAccessibleForDeckChild(nsIFrame*, nsIContent*, mozilla::a11y::DocAccessible*)] → [@ nsAccessibilityService::CreateAccessibleForDeckChild(nsIFrame*, nsIContent*, mozilla::a11y::DocAccessible*)] [@ nsAccessibilityService::CreateAccessibleForDeckChild]
there's no such method any longer, closing as wfm
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.