Closed
Bug 1125442
Opened 9 years ago
Closed 9 years ago
e10s mysteriously gets force-disabled, because it thinks an accessibility tool is active (but I'm not knowingly running any such tool). This force-disables e10s via pref browser.tabs.remote.autostart.disabled-because-using-a11y
Categories
(Core :: Disability Access APIs, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 1115956
People
(Reporter: dholbert, Unassigned)
References
Details
STR: 0. (I'm using a completely fresh profile) 1. Start firefox. Make sure e10s is enabled. (Should be by default) 2. Perform STR for bug 1124821. 3. Crash (per that bug). Or, reload until you crash, if necessary. 4. Repeat steps 1-3 until you notice e10s being disabled. 5. Try to turn on e10s. ACTUAL RESULTS: For some reason, at some point, e10s is turned off & is grayed out in about:preferences (can't be enabled), with an explanation "(disabled: An accessibility tool is active)". I have no accessibilty tools active. This seems to indicate that the pref browser.tabs.remote.autostart.disabled-because-using-a11y has been set in my profile. I have no idea how/why. EXPECTED RESULTS: a11y pref shouldn't be mysteriously set; e10s should remain on until I turn it off myself.
Reporter | ||
Comment 1•9 years ago
|
||
It looks like this pref is set by the function "_showE10sAccessibilityWarning()", which is called in two places nsBrowserGlue.js: http://mxr.mozilla.org/mozilla-central/search?string=_showE10sAccessibilityWarning Those places are here: > 2518 checkStatus: function() { [...] > 2541 // e10s if a11y is enabled, now or in the future. > 2542 Services.obs.addObserver(this, "a11y-init-or-shutdown", true); > 2543 if (Services.appinfo.accessibilityEnabled) { > 2544 this._showE10sAccessibilityWarning(); > 2545 } ..and then in the observer for "a11y-init-or-shutdown" that's registered in the code above: > 2601 observe: function(subject, topic, data) { > 2602 if (topic == "a11y-init-or-shutdown" && data == "1") { > 2603 this._showE10sAccessibilityWarning(); > 2604 } Noe that in the first place, we check Services.appinfo.accessibilityEnabled -- but in the second place, we don't check that. So I'm guessing that I'm hitting this via the second place. (And we seem to register the observer, which triggers the second place, unconditionally.)
Reporter | ||
Comment 2•9 years ago
|
||
Bill, it looks like you added this code in bug 1047076. Do you know what might be going on here?
Depends on: 1047076
Flags: needinfo?(wmccloskey)
Reporter | ||
Comment 3•9 years ago
|
||
(This seems similar to bug 1115956, except in this case I never actually toggled any a11y software, as far as I'm aware. I simply started Firefox, visited a webpage, and crashed, several times in a row -- and then this bug was triggered. I've hit this several times, too, so it wasn't just a one-off.)
Well, we're enabling the accessibility service, and that's supposed to permanently disable e10s. I agree that the UI for this is pretty bad, but the theory is that it should be rare and we can remove it once a11y works in e10s. It sounds like you're not doing anything that you would expect would enable the a11y service. If so, could you break here in a debugger and paste the stack? http://mxr.mozilla.org/mozilla-central/source/accessible/base/nsAccessibilityService.cpp#1115 If there's JS in the stack, it would also help to "p DumpJSStack()" in gdb and include the output of that as well.
Flags: needinfo?(wmccloskey)
Reporter | ||
Comment 5•9 years ago
|
||
Actually, I can reproduce this simply with a fresh profile, with current Nightly. I immediately get a notification saying that e10s doesn't support accessibility features & will be disabled when I restart. It's possible I have some a11y tool installed that I forgot about, which is triggering the a11y service without me knowing it. I have used a screen-reader on this laptop in the past, though I had to install a Firefox add-on to get that working IIRC. Unfortunately I can't look around in gdb, because I can't reproduce this in my own local debug build. :-/ (my debug build does have accessibility enabled [the default], too.)
Reporter | ||
Comment 6•9 years ago
|
||
Bill and I poked at this nightly a bit together, in gdb (which let us break on function calls but won't display lines of code w/out debug symbols). It looks like mozilla::a11y::ShouldA11yBeEnabled() is returning true, likely via its DBUS code-path, but I'm not entirely sure how I can follow up on the exact DBUS setting it's checking & how to figure out why that is the way it is.
Reporter | ||
Updated•9 years ago
|
Summary: After a few crashes from bug 1124821, e10s mysteriously gets force-disabled, because "An accessibility tool is active" (and the pref browser.tabs.remote.autostart.disabled-because-using-a11y gets turned on in my profile) → e10s mysteriously gets force-disabled, because it thinks an accessibility tool is active (but I'm not knowingly running any such tool). This force-disables e10s via pref browser.tabs.remote.autostart.disabled-because-using-a11y
Comment 7•9 years ago
|
||
(In reply to Daniel Holbert [:dholbert] from comment #6) > Bill and I poked at this nightly a bit together, in gdb (which let us break > on function calls but won't display lines of code w/out debug symbols). It > looks like mozilla::a11y::ShouldA11yBeEnabled() is returning true, likely > via its DBUS code-path, but I'm not entirely sure how I can follow up on the > exact DBUS setting it's checking & how to figure out why that is the way it > is. you can query dbus directly with dbus-send passing it some munging of the arguments in a11y::ShouldA11yBeEnabled() I forget exactly what it is though. I imagine you can try and figure how stuff gets set with dbus-monitor, but I've never tried to use that one. I think the cause may be that the gnome people may have switched to a11y being enabled by default in gtk.
Reporter | ||
Comment 8•9 years ago
|
||
(In reply to Trevor Saunders (:tbsaunde) from comment #7) > I think the cause may be that the gnome > people may have switched to a11y being enabled by default in gtk. FWIW, I can reproduce this on a second machine now -- my linux desktop (in addition to my laptop, which I filed this bug for). I'm pretty sure I never installed any a11y-specific software here, so Trevor's theory (about this being switched on in gtk by default) seems believable, particularly if this might've been shipped in a recent package update [which I may have gotten on my laptop before updating my desktop]. > you can query dbus directly with dbus-send passing it some munging > of the arguments in a11y::ShouldA11yBeEnabled() It looks like the relevant invocation is in a11y::ShouldA11yBeEnabled()'s helper, a11y::PreInit() -- that has: > 270 static const char* iface = "org.a11y.Status"; > 271 static const char* member = "IsEnabled"; > 272 DBusMessage *message; > 273 message = dbus_message_new_method_call("org.a11y.Bus", "/org/a11y/bus", > 274 "org.freedesktop.DBus.Properties", > 275 "Get"); [...] > 279 dbus_message_append_args(message, DBUS_TYPE_STRING, &iface, > 280 DBUS_TYPE_STRING, &member, DBUS_TYPE_INVALID); http://mxr.mozilla.org/mozilla-central/source/accessible/atk/Platform.cpp#270 dbus_message_new_method_call's args are named as-follows: > dbus_message_new_method_call (const char *destination, > const char *path, > const char *iface, > const char *method) http://dbus.freedesktop.org/doc/api/html/group__DBusMessage.html I'm trying to compose a "dbus-send" message that includes the right configuration of args.
Reporter | ||
Comment 9•9 years ago
|
||
From poking at "man dbus-send", my first guesses for the right invocation would be: dbus-send --dest=org.a11y.Bus /org/a11y/bus org.freedesktop.DBus.Properties.IsEnabled or: dbus-send --dest=org.a11y.Bus /org/a11y/bus org.a11y.Status.IsEnabled or either of those with ".Get" appended at the end. But all of those commands just produce no output, so I have no idea if they actually did anything. (I'm unclear on whether dbus-send even reports back its results on the command line, or how to request that it do that.)
Reporter | ||
Comment 10•9 years ago
|
||
(Ah, ok -- I can add "--print-reply" towards the beginning, which gives me an error message instead of no output. That may help me progress & learn more.)
Reporter | ||
Comment 11•9 years ago
|
||
Actually, I found "dbus-monitor", which shows messages being sent to DBUS in real time (and the responses), so I just ran that after starting Firefox with a fresh profile, and that gave me: { method call sender=:1.246 -> dest=org.a11y.Bus serial=2 path=/org/a11y/bus; interface=org.freedesktop.DBus.Properties; member=Get string "org.a11y.Status" string "IsEnabled" method return sender=:1.6 -> dest=:1.246 reply_serial=2 variant boolean true } I still have no idea if there's any way I can discover *why* that's set, or if there's a way I can turn it off [I'll bet I could do it by issuing some DBUS command, but I'd prefer to discover a supported way in the system UI somewhere]. I'm using gnome-shell (gnome 3) instead of Ubuntu Unity, btw -- I suspect that's relevant to causing this. There are probably other folks in the same position hitting this same bug, I imagine.
Reporter | ||
Comment 12•9 years ago
|
||
I asked around on irc.gnome.org #a11y and found out that this DBUS a11y-enabled query is really just querying a piece of "gsettings" configuration -- effectively this command, which returns "true" for me:
> gsettings get org.gnome.desktop.interface toolkit-accessibility
Reporter | ||
Comment 13•9 years ago
|
||
...and I can drill down & toggle that gsettings pref visually, using the "dconf-editor" tool (which shows that the default value is "false"). mgorse in irc.gnome.org #a11y says that orca (the screen-reader tool) turns that pref on, and leaves it on -- so that's likely what happened on my laptop. I have no idea what happened on my desktop, because I have no recollection of running orca there (and yet that pref is on there). Anyway, bottom line, this is a dupe of bug 1115956, I think.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•