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 465103 - Desktop objects sometimes have null children
Desktop objects sometimes have null children
Status: RESOLVED OBSOLETE
Product: at-spi
Classification: Platform
Component: general
1.18.x
Other Linux
: Urgent critical
: ---
Assigned To: At-spi maintainer(s)
At-spi maintainer(s)
: 441000 488995 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2007-08-09 17:13 UTC by Zack Cerza
Modified: 2014-11-14 21:54 UTC
See Also:
GNOME target: ---
GNOME version: 2.17/2.18



Description Zack Cerza 2007-08-09 17:13:19 UTC
I'm going to illustrate this using pyatspi, but I've seen it with the C bindings as well.

>>> from pyatspi import *
>>> d=Registry.getDesktop(0)
>>> for a in d: print a
[application | gnome-settings-daemon]
[application | gnome-session]
[application | gnome-panel]
[application | gnome-volume-manager]
[application | nautilus]
[application | metacity]
[application | bluetooth-applet]
[application | krb5-auth-dialog]
[application | gnome-power-manager]
[application | nm-applet]
[application | pam-panel-icon]
None <=== Lies!
[application | puplet]
[application | sealert]
[application | mugshot]
[application | Firefox]
[application | wnck-applet]
[application | Thunderbird]
[application | xchat-gnome]
[application | gnome-terminal]

I realize that the root of this problem is most likely a buggy application, but after spending literally hours trying to chase down which app is causing this, I'm still empty-handed. 

It seems like AT-SPI should either provide a useful way to uncover the broken app so we can get it fixed (could be very hard, I don't know), or work around it more gracefully, or both. That would make the life of AT and pseudo-AT developers like myself easier :)
Comment 1 Zack Cerza 2007-08-09 21:12:57 UTC
To add to the suspense...

>>> for i in range(d.childCount): print d[i]
[application | gnome-settings-daemon]
[application | gnome-session]
[application | gnome-panel]
[application | gnome-volume-manager]
[application | nautilus]
[application | metacity]
[application | bluetooth-applet]
[application | krb5-auth-dialog]
[application | gnome-power-manager]
[application | nm-applet]
[application | pam-panel-icon]
Traceback (most recent call last):
  • File "<stdin>", line 1 in <module>
  • File "accessible.py", line 426 in __getitem__
  • File "accessible.py", line 189 in _inner
    LookupError

:(
Comment 2 Zack Cerza 2007-08-09 21:13:58 UTC
*** Bug 441000 has been marked as a duplicate of this bug. ***
Comment 3 Li Yuan 2007-08-23 07:43:43 UTC
I got a crash.

  • #0 IOP_mem_hash
    at iop-profiles.c line 324
  • #1 IOP_ObjectKey_hash
    at iop-profiles.c line 332
  • #2 g_CORBA_Object_hash
    at corba-object.c line 31
  • #3 g_hash_table_insert
    from /usr/lib/libglib-2.0.so.0
  • #4 ORBit_register_objref
    at corba-object.c line 84
  • #5 ORBit_marshal_object
    at corba-object.c line 574
  • #6 ORBit_marshal_value
    at corba-any.c line 161
  • #7 ORBit_marshal_arg
    at corba-any.c line 373
  • #8 ORBit_small_invoke_adaptor
    at orbit-small.c line 900
  • #9 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #10 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #11 ORBit_POA_handle_request
    at poa.c line 1643
  • #12 ORBit_handle_request
    at orbit-adaptor.c line 298
  • #13 giop_connection_handle_input
    at giop-recv-buffer.c line 1309
  • #14 link_connection_io_handler
    at linc-connection.c line 1412
  • #15 link_source_dispatch
    at linc-source.c line 159
  • #16 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #17 ??
    from /usr/lib/libglib-2.0.so.0
  • #18 g_main_context_iteration
    from /usr/lib/libglib-2.0.so.0
  • #19 link_main_iteration
    at linc.c line 285
  • #20 giop_recv_buffer_get
    at giop-recv-buffer.c line 727
  • #21 ORBit_small_invoke_stub
    at orbit-small.c line 658
  • #22 ORBit_small_invoke_stub_n
    at orbit-small.c line 575
  • #23 ORBit_c_stub_invoke
    at poa.c line 2643
  • #24 Bonobo_Unknown_ref
    from /usr/lib/libbonobo-activation.so.4
  • #25 bonobo_object_dup_ref
    from /usr/lib/libbonobo-2.so.0
  • #26 impl_desktop_get_child_at_index
    at desktop.c line 200
  • #27 _ORBIT_skel_small_Accessibility_Accessible_getChildAtIndex
    at Accessibility-common.c line 120
  • #28 ORBit_POAObject_invoke
    at poa.c line 1142
  • #29 ORBit_OAObject_invoke
    at orbit-adaptor.c line 338
  • #30 ORBit_small_invoke_adaptor
    at orbit-small.c line 844
  • #31 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #32 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #33 ORBit_POA_handle_request
    at poa.c line 1643
  • #34 ORBit_handle_request
    at orbit-adaptor.c line 298
  • #35 giop_connection_handle_input
    at giop-recv-buffer.c line 1309
  • #36 link_connection_io_handler
    at linc-connection.c line 1412
  • #37 link_source_dispatch
    at linc-source.c line 159
  • #38 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0

Comment 4 Li Yuan 2007-08-23 07:46:21 UTC
Seems impl_desktop_get_child_at_index return a wrong object for some reason. I think the root causes of the crash and the "NULL" children are same.
Comment 5 Zack Cerza 2007-10-18 17:21:25 UTC
I get an ABORT.

  • #0 __kernel_vsyscall
  • #1 *__GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #2 *__GI_abort
    at abort.c line 88
  • #3 IA__g_logv
    at gmessages.c line 497
  • #4 IA__g_log
    at gmessages.c line 517
  • #5 ORBit_marshal_object
    at corba-object.c line 564
  • #6 ORBit_marshal_value
    at corba-any.c line 152
  • #7 ORBit_marshal_arg
    at corba-any.c line 364
  • #8 ORBit_small_invoke_adaptor
    at orbit-small.c line 906
  • #9 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #10 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #11 ORBit_POA_handle_request
    at poa.c line 1643
  • #12 ORBit_handle_request
    at orbit-adaptor.c line 298
  • #13 giop_connection_handle_input
    at giop-recv-buffer.c line 1308
  • #14 link_connection_io_handler
    at linc-connection.c line 1387
  • #15 link_source_dispatch
    at linc-source.c line 159
  • #16 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #17 g_main_context_iterate
    at gmain.c line 2677
  • #18 IA__g_main_context_iteration
    at gmain.c line 2736
  • #19 link_main_iteration
    at linc.c line 288
  • #20 giop_recv_buffer_get
    at giop-recv-buffer.c line 738
  • #21 ORBit_small_invoke_stub
    at orbit-small.c line 658
  • #22 ORBit_small_invoke_stub_n
    at orbit-small.c line 575
  • #23 ORBit_c_stub_invoke
    at poa.c line 2643
  • #24 Bonobo_Unknown_ref
    at Bonobo_Unknown-stubs.c line 10
  • #25 bonobo_object_dup_ref
    at bonobo-object.c line 515
  • #26 impl_desktop_get_child_at_index
    at desktop.c line 200
  • #27 _ORBIT_skel_small_Accessibility_Accessible_getChildAtIndex
    at Accessibility-common.c line 120
  • #28 ORBit_POAObject_invoke
    at poa.c line 1142
  • #29 ORBit_OAObject_invoke
    at orbit-adaptor.c line 338
  • #30 ORBit_small_invoke_adaptor
    at orbit-small.c line 844
  • #31 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #32 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #33 ORBit_POA_handle_request
    at poa.c line 1643
  • #34 ORBit_handle_request
    at orbit-adaptor.c line 298
  • #35 giop_connection_handle_input
    at giop-recv-buffer.c line 1308
  • #36 link_connection_io_handler
    at linc-connection.c line 1387
  • #37 link_source_dispatch
    at linc-source.c line 159
  • #38 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #39 g_main_context_iterate
    at gmain.c line 2677
  • #40 IA__g_main_loop_run
    at gmain.c line 2881
  • #41 bonobo_main
    at bonobo-main.c line 311
  • #42 main
    at registry-main.c line 83

Comment 6 Eitan Isaacson 2008-02-28 07:47:52 UTC
*** Bug 488995 has been marked as a duplicate of this bug. ***
Comment 7 André Klapper 2012-02-26 10:43:14 UTC
[Resetting QA Contact to newly introduced "at-spi-maint@gnome.bugs". 
Reason: So far it was impossible to watch changes in at-spi bug reports without following all the specific persons (Li Yuan, Bill Haneman, Jeff Wai, ...) and also their activity outside of at-spi reports.

IMPORTANT: Anyone interested in following all bug activity (including all maintainers) must watch the "at-spi-maint@gnome.bugs" dummy user by adding it to the 'Users to watch' list under Preferences->Email preferences. This is also the default procedure nowadays in GNOME when setting up new products.]
Comment 8 André Klapper 2013-08-14 10:06:12 UTC
[Mass-resetting default assignee, see bug 705890. Please reclaim this bug report by setting the assignee to yourself if you still plan to work on this. Thanks!]
Comment 9 Magdalen Berns (irc magpie) 2014-11-14 21:54:29 UTC
I'm going to go ahead and close this because it concerns a very old version.
Feel free to open a new bug if the problem persists.