After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 400709 - Userr should be able to navigate the gnome panels (top and bottom).
Userr should be able to navigate the gnome panels (top and bottom).
Status: RESOLVED FIXED
Product: at-spi
Classification: Platform
Component: general
0.0.1
Other All
: High critical
: ---
Assigned To: Li Yuan
Li Yuan
Depends on:
Blocks:
 
 
Reported: 2007-01-25 18:20 UTC by Rich Burridge
Modified: 2007-02-26 02:09 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
this patch should fix things (warning, *untested* patch which builds OK) (1.43 KB, patch)
2007-01-29 16:14 UTC, bill.haneman
committed Details | Review
at-spi-registryd crash file from /var/crash/ (748.24 KB, text/plain)
2007-01-30 14:39 UTC, Joanmarie Diggs (IRC: joanie)
  Details

Description Rich Burridge 2007-01-25 18:20:59 UTC
This is probably a bug in gnome-panel and this bug will be turned into a
"blocked" bug depending on that.
Comment 1 Joanmarie Diggs (IRC: joanie) 2007-01-25 18:51:42 UTC
This may be a two-parter (or more than that, but I'm only aware of two significant issues).

Part 1: You can get trapped in the notification area (whether you're using Orca or not).

Part 2: Something happened to the applets in Feisty (GNOME 2.17 in general??).

Re part 2:  I've been doing some digging, but I suspect it's not directly a bug in gnome-panel, but rather a side effect of something else.  Here's what I (think I) know so far:

In Edgy, navigating to an embedded component causes Orca to speak the name of the embedded component if present (e.g. "GNOME Weather") or its description (e.g. "x items in trash").  In Feisty, this no longer occurs.  

I tried at-poking the top and bottom panels in Feisty and did not see any information regarding the embedded components -- only the panel that contained them.  It turns out you need to install libgail-gnome-common (and perhaps libgail-gnome-dev) to have access to that.  HOWEVER, that only causes them to show up in at-poke; they're still not spoken.  

Further digging reveals that all of the non-standard applets no longer give us an object:state-changed:focused event -- as they do in Edgy.  We should be able to script around this if push comes to shove because we still get an object:state-changed:focused for the item that gave up focus and, with libgail-gnome-common/dev installed, we can obtain the details of the embedded component that gained focus.  As an aside, perhaps we want to have a special gnome-panel.py anyway to provide more compelling access (e.g. we could be speaking the location, temperature, and current conditions instead of merely "GNOME weather").  Regardless....

In an attempt to figure out where things broke, I started with a fresh (fully-upgraded) install of Edgy and then installed the Feisty versions of gnome-panel and gnome-applets (along with all of their dependencies, of course).  Orca still speaks those items as expected which is why I don't think the bug lies there.  I've subsequently upgraded various and sundry packages and libraries that seemed relevant, and there still was not a problem.  When I attempted to upgrade to the latest at-spi (without doing a full dist-upgrade), a number of things broke.  So there is apparently a functional dependency that is not an official dependency -- and without knowing what that is, I cannot continue in my "let's see what broke gnome-panel" quest.

Phew!  My plan was to dig a bit further, but since this was entered, I figured I'd comment. :-) 

Comment 2 Joanmarie Diggs (IRC: joanie) 2007-01-25 19:14:55 UTC
Follow-up:   I just at-poked at this again (there have been quite a few Feisty updates the past couple of days).  It seems we now *are* getting the object:state-changed:focused event for the embedded component that gained focus -- but it's the panel that is claiming focus rather than the embedded component.

I bet it wouldn't take too much to create a compelling gnome-panel.py that provided compelling access (without "scripting around" bugs).... What do y'all think?
Comment 3 Joanmarie Diggs (IRC: joanie) 2007-01-27 20:59:51 UTC
More follow-up:  Since I cannot seem to go progressively forward (updating slowly but surely from 2.16.x to 2.17.x) I gave backwards a shot. :-)

*Something* that changed in at-spi between revisions 858 and 868 seems to be responsible for two significant problems w.r.t the accessibility of the applets in gnome-panel:

1. The aforementioned lack of object:state-changed:focused events for the majority of the applets.* 

2. Nearly a complete lack of events for the context menus associated with those applets (which renders them inaccessible as well).

Using rev 858 on Feisty, access to the applets and context menus is the same as on Edgy.

I'll try to narrow down the exact change.  Stay tuned!

* Note:  It turns out that in Feisty, we don't get the needed events for the embedded component -- even for the panel -- without "tickling"/poking the hierarchy.
Comment 4 Joanmarie Diggs (IRC: joanie) 2007-01-27 23:49:21 UTC
Methinks it's the patch to bug #163132.  Having applied that patch to revision 858, I see problems #1 and #2 from my previous comment along with another problem which I didn't notice earlier:  

3. A lack of events when an applet displays tooltips (either when you hover the mouse pointer over an applet or move focus to the applet and then press Control F1).

Pre-patch, we get those events....

I guess the question now is:  Does the patch expose a bug in gnome-panel, or is the patch itself the problem?
Comment 5 Harry Lu 2007-01-28 02:38:22 UTC
Add cc to gnome-a11y-bugs-ext@sun.com
Comment 6 bill.haneman 2007-01-29 16:06:44 UTC
OK, the following patch to bridge.c was incorrect:

   else
     {
-      spi_atk_bridge_do_registration ();
+      success = spi_atk_bridge_do_registration ();
+    }
+  if (success) 
+    {
+      spi_atk_register_event_listeners ();
+      spi_atk_bridge_init_event_type_consts ();
+    }
+  else
+    {
+      atk_bridge_initialized = FALSE;
     }
-  spi_atk_register_event_listeners ();
-  spi_atk_bridge_init_event_type_consts ();
- 
 
The spi_atk_register_event_listeners() and
spi_atk_bridge_init_event_type_consts() calls should NOT have been moved into a conditional, since embedded widgets (i.e. things that don't register as fullblown applications until they pop up a toplevel window) don't call spi_atk_bridge_do_registration().

However, reverting the above change also means that we need to use a different mechanism for avoiding a crash if the registry IOR is not present on the root window - otherwise when dispatching the event notification we will segv.

So really, the 'success' boolean should depend on whether the registry IOR was present, and it should be checked and set even if we don't call spi_atk_bridge_register_application.  

Bill
Comment 7 bill.haneman 2007-01-29 16:14:33 UTC
Created attachment 81443 [details] [review]
this patch should fix things (warning, *untested* patch which builds OK)
Comment 8 Joanmarie Diggs (IRC: joanie) 2007-01-29 16:58:56 UTC
Hi Bill.  Thanks so much for doing this!  I tested it on two of my machines.

The good news:  All of the events are back, which means Orca is providing access to the applets and menus again.  

The less-than-ideal news:  On one of my machines, I got a registry crash -- and this being a fresh install, I hadn't gotten around to installing debug libraries yet.  So.... I'll install those libraries on both boxes and get you a stack trace when and if it happens again.

Thanks again!
Comment 9 Li Yuan 2007-01-30 10:24:27 UTC
Bill,
I will test your patch when I get time.
Joanmarie,
It would be great you can give us trace with debug symbols. You can tell me the trace without debug symbols first. Maybe I can find the problem.
Comment 10 Joanmarie Diggs (IRC: joanie) 2007-01-30 14:39:31 UTC
Created attachment 81515 [details]
at-spi-registryd crash file from /var/crash/

Hi Li.  I cannot yet cause the registry crash to happen at will, so I haven't been able to toss gdb at it.  It did crash a couple more times though.   In the spirit of "maybe it will help," I've attached the at-spi-registryd crash file from the last crash.  If that's what you need, great; otherwise, I'll keep trying to find a way to reproduce the problem reliably.

What I can tell you, however, is that each time the crash occurred after I quit Orca:  Once was immediately; the other times were very shortly thereafter.  It has never crashed while I was using Orca, nor does it usually crash when I quit Orca.

Hope this helps.  Thanks for looking into it!
Comment 11 Li Yuan 2007-01-31 09:18:27 UTC
Thank you for reporting this. I have found the trace:
  • #0 get_c_method
    at poa.c line 2562
  • #1 ORBit_c_stub_invoke
    at poa.c line 2615
  • #2 Accessibility_EventListener_notifyEvent
    at Accessibility-stubs.c line 321
  • #3 notify_listeners_cb
    at registry.c line 641
  • #4 spi_re_entrant_list_foreach
    at util.c line 109
  • #5 registry_emit_event
    at registry.c line 666
  • #6 impl_registry_notify_event
    at registry.c line 921
  • #7 _ORBIT_skel_small_Accessibility_EventListener_notifyEvent
    at Accessibility-common.c line 196
  • #8 ORBit_POAObject_invoke
    at poa.c line 1142
  • #9 ORBit_OAObject_invoke
    at orbit-adaptor.c line 336
  • #10 ORBit_small_invoke_adaptor
    at orbit-small.c line 844
  • #11 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #12 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #13 ORBit_POA_handle_request
    at poa.c line 1643
  • #14 ORBit_handle_request
    at orbit-adaptor.c line 296
  • #15 giop_connection_handle_input
    at giop-recv-buffer.c line 1308
  • #16 link_connection_io_handler
    at linc-connection.c line 1387
  • #17 link_source_dispatch
    at linc-source.c line 159
  • #18 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #19 ??
    from /usr/lib/libglib-2.0.so.0
  • #20 ??
  • #21 ??

Comment 12 Li Yuan 2007-01-31 09:24:53 UTC
Seems the listener in at-spi-registryd's list has some bad values (probably orca, because orca is the only at I ran). And the signal is "window:destroy" (orca's window). So I guess the problem is Orca destroyed its data before it deregister its event listener?
Comment 13 Li Yuan 2007-01-31 10:38:39 UTC
Hi Bill, I tested your patch. at-poke can only receive "focus" signal the first time these embedded component get focus. I am trying to figure out why.
Comment 14 Li Yuan 2007-01-31 10:43:32 UTC
Oh, but for object:state-changed:focused, at-poke can receive every time.
Comment 15 bill.haneman 2007-01-31 10:46:16 UTC
Hi Li: All my patch does is revert a change introduced by bug 163132.  Maybe some other part of the code is responsible for the problem you are seeing?  Or even the panel (libpanelapplet?).

The 'focus:' problem sounds familiar to me, maybe this remaining issue is a duplicate of an existing bug...
Comment 16 Willie Walker 2007-01-31 14:54:40 UTC
(In reply to comment #12)
> Seems the listener in at-spi-registryd's list has some bad values (probably
> orca, because orca is the only at I ran). And the signal is "window:destroy"
> (orca's window). So I guess the problem is Orca destroyed its data before it
> deregister its event listener?
> 

In Orca, we're attempting to deregister all listeners before stopping the registry.  In the event that something terribly bad has happened, it may not be able to do so.

Do you think the thing described above would happen during normal operation of Orca?  That is, the bug in question happens while Orca is running and the user is attempting to navigate the top or bottom panels.  Would the thing described above happen during this scenario, or would it only happen when Orca quits?
Comment 17 Joanmarie Diggs (IRC: joanie) 2007-01-31 15:23:18 UTC
> Do you think the thing described above would happen during normal 
> operation of Orca?  That is, the bug in question happens while Orca is 
> running and the user is attempting to navigate the top or bottom 
> panels.  Would the thing described above happen during this scenario, 
> or would it only happen when Orca quits?

I myself can only speak from experience, but it has never happened while using Orca, nor do the problems seem tied to navigating the panels.  While the first crash did occur after having used the panels (and then done some other things), that was not the case the other two times.
Comment 18 Joanmarie Diggs (IRC: joanie) 2007-02-15 08:48:27 UTC
To follow-up on this:

The problem *seems* to have been introduced in at-spi revision 882.  I haven't narrowed it down further as it's pushing 4 AM and I really should sleep before work. :-)

Two tests: With revision 882 (or later) installed

1. Launch Orca, quit Orca, and try to launch at-poke.  at-poke won't launch.  ('Error initialising SPI').  BUT if you launch Orca again, you can then get at-poke to launch.

2a. Launch Orca from the Applications menu
2b. Launch Gedit and type "this is a test"
2c. Press KP_5 to flat review the current word. (Orca should say "test" and draw a rectangle around it)
2d. Quit Orca. 
2e. With the Gedit window focused, launch Orca from the Applications menu.  Type some additional text into Gedit and try KP_5 again.  Orca won't flat review the text as before. (If you Alt Tab out of the Gedit window and back into it, flat review resumes working).

With revision 881, I do not have the problems launching at-poke or using flat review.