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 353226 - at-spi-registryd Crashes frequently
at-spi-registryd Crashes frequently
Status: RESOLVED FIXED
Product: at-spi
Classification: Platform
Component: registry
1.7.x
Other Linux
: Normal critical
: ---
Assigned To: bill.haneman
bill.haneman
Depends on:
Blocks:
 
 
Reported: 2006-08-28 12:13 UTC by Daniel Holbach
Modified: 2006-09-25 11:27 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16


Attachments
patch to prevent ref/unref of defunct application object when an app is removed from the desktop's accessible children list (1.14 KB, patch)
2006-09-18 21:10 UTC, bill.haneman
committed Details | Review

Description Daniel Holbach 2006-08-28 12:13:29 UTC
Forwarded from: https://launchpad.net/distros/ubuntu/+source/at-spi/+bug/56452

'at-spi_at-spi-registryd' crashes when trying to start an AT application like gnopernicus.

Program received signal SIGSEGV, Segmentation fault.

Thread NaN (LWP 7815)

  • #0 ORBit_c_stub_invoke
    from /usr/lib/libORBit-2.so.0
  • #1 Bonobo_Unknown_unref
    from /usr/lib/libbonobo-activation.so.4
  • #2 desktop_remove_application
    at registry.c line 156
  • #3 IA__g_cclosure_marshal_VOID__UINT
    at gmarshal.c line 251
  • #4 IA__g_closure_invoke
    at gclosure.c line 490
  • #5 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #6 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #7 IA__g_signal_emit
    at gsignal.c line 2241
  • #8 spi_desktop_remove_application
    at desktop.c line 353
  • #9 abnormal_application_termination
    at desktop.c line 278
  • #10 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #11 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #12 link_connection_disconnect
    from /usr/lib/libORBit-2.so.0
  • #13 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #14 giop_connection_handle_input
    from /usr/lib/libORBit-2.so.0
  • #15 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #16 link_io_add_watch_fd
    from /usr/lib/libORBit-2.so.0
  • #17 IA__g_main_context_dispatch
    at gmain.c line 2043
  • #18 g_main_context_iterate
    at gmain.c line 2675
  • #19 IA__g_main_context_iteration
    at gmain.c line 2734
  • #20 link_main_iteration
    from /usr/lib/libORBit-2.so.0
  • #21 giop_recv_buffer_get
    from /usr/lib/libORBit-2.so.0
  • #22 ORBit_small_invoke_stub
    from /usr/lib/libORBit-2.so.0
  • #23 ORBit_small_invoke_stub_n
    from /usr/lib/libORBit-2.so.0
  • #24 ORBit_c_stub_invoke
    from /usr/lib/libORBit-2.so.0
  • #25 Bonobo_Unknown_ref
    from /usr/lib/libbonobo-activation.so.4
  • #26 bonobo_object_dup_ref
    from /usr/lib/libbonobo-2.so.0
  • #27 impl_desktop_get_child_at_index
    at desktop.c line 200
  • #28 _ORBIT_skel_small_Accessibility_Accessible_getChildAtIndex
    at Accessibility-common.c line 120
  • #29 ORBit_c_stub_invoke
    from /usr/lib/libORBit-2.so.0
  • #30 Accessibility_Accessible_getChildAtIndex
    at Accessibility-stubs.c line 189
  • #31 desktop_remove_application
    at registry.c line 147
  • #32 IA__g_cclosure_marshal_VOID__UINT
    at gmarshal.c line 251
  • #33 IA__g_closure_invoke
    at gclosure.c line 490
  • #34 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #35 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #36 IA__g_signal_emit
    at gsignal.c line 2241
  • #37 spi_desktop_remove_application
    at desktop.c line 353
  • #38 abnormal_application_termination
    at desktop.c line 278
  • #39 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #40 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #41 link_connection_disconnect
    from /usr/lib/libORBit-2.so.0
  • #42 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #43 giop_connection_handle_input
    from /usr/lib/libORBit-2.so.0
  • #44 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #45 link_io_add_watch_fd
    from /usr/lib/libORBit-2.so.0
  • #46 IA__g_main_context_dispatch
    at gmain.c line 2043
  • #47 g_main_context_iterate
    at gmain.c line 2675
  • #48 IA__g_main_loop_run
    at gmain.c line 2879
  • #49 bonobo_main
    from /usr/lib/libbonobo-2.so.0
  • #50 main
    at registry-main.c line 82

Thread 1 (Thread -1219672400 (LWP 7815))

  • #0 ORBit_c_stub_invoke
    from /usr/lib/libORBit-2.so.0
  • #1 Bonobo_Unknown_unref
    from /usr/lib/libbonobo-activation.so.4
  • #2 desktop_remove_application
    at registry.c line 156
  • #3 IA__g_cclosure_marshal_VOID__UINT
    at gmarshal.c line 251
  • #4 IA__g_closure_invoke
    at gclosure.c line 490
  • #5 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #6 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #7 IA__g_signal_emit
    at gsignal.c line 2241
  • #8 spi_desktop_remove_application
    at desktop.c line 353
  • #9 abnormal_application_termination
    at desktop.c line 278
  • #10 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #11 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #12 link_connection_disconnect
    from /usr/lib/libORBit-2.so.0
  • #13 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #14 giop_connection_handle_input
    from /usr/lib/libORBit-2.so.0
  • #15 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #16 link_io_add_watch_fd
    from /usr/lib/libORBit-2.so.0
  • #17 IA__g_main_context_dispatch
    at gmain.c line 2043
  • #18 g_main_context_iterate
    at gmain.c line 2675
  • #19 IA__g_main_context_iteration
    at gmain.c line 2734
  • #20 link_main_iteration
    from /usr/lib/libORBit-2.so.0
  • #21 giop_recv_buffer_get
    from /usr/lib/libORBit-2.so.0
  • #22 ORBit_small_invoke_stub
    from /usr/lib/libORBit-2.so.0
  • #23 ORBit_small_invoke_stub_n
    from /usr/lib/libORBit-2.so.0
  • #24 ORBit_c_stub_invoke
    from /usr/lib/libORBit-2.so.0
  • #25 Bonobo_Unknown_ref
    from /usr/lib/libbonobo-activation.so.4
  • #26 bonobo_object_dup_ref
    from /usr/lib/libbonobo-2.so.0
  • #27 impl_desktop_get_child_at_index
    at desktop.c line 200
  • #28 _ORBIT_skel_small_Accessibility_Accessible_getChildAtIndex
    at Accessibility-common.c line 120
  • #29 ORBit_c_stub_invoke
    from /usr/lib/libORBit-2.so.0
  • #30 Accessibility_Accessible_getChildAtIndex
    at Accessibility-stubs.c line 189
  • #31 desktop_remove_application
    at registry.c line 147
  • #32 IA__g_cclosure_marshal_VOID__UINT
    at gmarshal.c line 251
  • #33 IA__g_closure_invoke
    at gclosure.c line 490
  • #34 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #35 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #36 IA__g_signal_emit
    at gsignal.c line 2241
  • #37 spi_desktop_remove_application
    at desktop.c line 353
  • #38 abnormal_application_termination
    at desktop.c line 278
  • #39 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #40 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #41 link_connection_disconnect
    from /usr/lib/libORBit-2.so.0
  • #42 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #43 giop_connection_handle_input
    from /usr/lib/libORBit-2.so.0
  • #44 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #45 link_io_add_watch_fd
    from /usr/lib/libORBit-2.so.0
  • #46 IA__g_main_context_dispatch
    at gmain.c line 2043
  • #47 g_main_context_iterate
    at gmain.c line 2675
  • #48 IA__g_main_loop_run
    at gmain.c line 2879
  • #49 bonobo_main
    from /usr/lib/libbonobo-2.so.0
  • #50 main
    at registry-main.c line 82

Comment 1 bill.haneman 2006-08-28 13:29:01 UTC
Look at this fragment (from above):

  • #7 IA__g_signal_emit
    at gsignal.c line 2241
  • #8 spi_desktop_remove_application
    at desktop.c line 353
  • #9 abnormal_application_termination
    at desktop.c line 278
  • #10 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #11 link_connection_get_type
    from /usr/lib/libORBit-2.so.0
  • #12 link_connection_disconnect
    from /usr/lib/libORBit-2.so.0
  • #13 link_connection_state_changed
    from /usr/lib/libORBit-2.so.0
  • #14 giop_connection_handle_input
    from /usr/lib/libORBit-2.so.0
  • #15 link_connection_state_changed

Looks like some other app is crashing weirdly with a bad connection to at-spi-registryd.  What app is that?

This problem seems like it's distro-specific, I suspect a config problem, as no similar crashing behavior is reported.
Comment 2 Daniel Holbach 2006-08-28 13:34:16 UTC
The reporter said it was gnopernicus crashing, some other reporter mentioned orca. We have no relevant patches to at-spi in Edgy.
Comment 3 bill.haneman 2006-08-28 13:57:27 UTC
Hi Daniel:

Yes we've heard that Edgy has problems with a11y but we don't know what's wrong yet.  The "application" crash I refer to doesn't appear to be an assistive technology but it might be, hard to know.  But in any case I doubt that the stack trace above points to the root cause.
Comment 4 Sebastien Bacher 2006-09-15 13:19:41 UTC
Similar backtrace on edgy when opening a test user desktop and closing it without having user or started any application:

"Program received signal SIGSEGV, Segmentation fault.

Thread 47467472851152 (LWP 5097)

  • #0 get_c_method
    at poa.c line 2562
  • #1 ORBit_c_stub_invoke
    at poa.c line 2615
  • #2 Bonobo_Unknown_unref
    at Bonobo_Unknown-stubs.c line 15
  • #3 desktop_remove_application
    at registry.c line 156
  • #4 IA__g_closure_invoke
    at gclosure.c line 490
  • #5 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #6 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #7 IA__g_signal_emit
    at gsignal.c line 2241
  • #8 spi_desktop_remove_application
    at desktop.c line 353
  • #9 abnormal_application_termination
    at desktop.c line 278
  • #10 link_connection_emit_broken
    at linc-connection.c line 141
  • #11 dispatch_callbacks_drop_lock
    at linc-connection.c line 230
  • #12 link_connection_state_changed_T_R
    at linc-connection.c line 308
  • #13 link_connection_state_changed
    at linc-connection.c line 804
  • #14 giop_connection_handle_input
    at giop-recv-buffer.c line 1332
  • #15 link_connection_io_handler
    at linc-connection.c line 1417
  • #16 link_source_dispatch
    at linc-source.c line 159
  • #17 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #18 g_main_context_iterate
    at gmain.c line 2677
  • #19 IA__g_main_context_iteration
    at gmain.c line 2736
  • #20 link_main_iteration
    at linc.c line 285
  • #21 giop_recv_buffer_get
    at giop-recv-buffer.c line 718
  • #22 ORBit_small_invoke_stub
    at orbit-small.c line 657
  • #23 ORBit_small_invoke_stub_n
    at orbit-small.c line 575
  • #24 ORBit_c_stub_invoke
    at poa.c line 2643
  • #25 Bonobo_Unknown_unref
    at Bonobo_Unknown-stubs.c line 15
  • #26 bonobo_object_release_unref
    at bonobo-object.c line 574
  • #27 spi_desktop_remove_application
    at desktop.c line 350
  • #28 impl_accessibility_registry_deregister_application
    at registry.c line 357
  • #29 _ORBIT_skel_small_Accessibility_Registry_deregisterApplication
  • #30 ORBit_POAObject_invoke
    at poa.c line 1142
  • #31 ORBit_OAObject_invoke
    at orbit-adaptor.c line 336
  • #32 ORBit_small_invoke_adaptor
    at orbit-small.c line 835
  • #33 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #34 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #35 ORBit_POA_handle_request
    at poa.c line 1643
  • #36 ORBit_handle_request
    at orbit-adaptor.c line 296
  • #37 giop_connection_handle_input
    at giop-recv-buffer.c line 1288
  • #38 link_connection_io_handler
    at linc-connection.c line 1417
  • #39 link_source_dispatch
    at linc-source.c line 159
  • #40 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #41 g_main_context_iterate
    at gmain.c line 2677
  • #42 IA__g_main_context_iteration
    at gmain.c line 2736
  • #43 link_main_iteration
    at linc.c line 285
  • #44 giop_recv_buffer_get
    at giop-recv-buffer.c line 718
  • #45 ORBit_small_invoke_stub
    at orbit-small.c line 657
  • #46 ORBit_small_invoke_stub_n
    at orbit-small.c line 575
  • #47 ORBit_c_stub_invoke
    at poa.c line 2643
  • #48 Accessibility_EventListener_notifyEvent
    at Accessibility-stubs.c line 321
  • #49 notify_listeners_cb
    at registry.c line 641
  • #50 spi_re_entrant_list_foreach
    at util.c line 109
  • #51 registry_emit_event
    at registry.c line 666
  • #52 impl_registry_notify_event
    at registry.c line 932
  • #53 _ORBIT_skel_small_Accessibility_EventListener_notifyEvent
    at Accessibility-common.c line 196
  • #54 ORBit_POAObject_invoke
    at poa.c line 1142
  • #55 ORBit_OAObject_invoke
    at orbit-adaptor.c line 336
  • #56 ORBit_small_invoke_adaptor
  • #57 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #58 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #59 ORBit_POA_handle_request
    at poa.c line 1643
  • #60 ORBit_handle_request
    at orbit-adaptor.c line 296
  • #61 giop_connection_handle_input
    at giop-recv-buffer.c line 1288
  • #62 link_connection_io_handler
    at linc-connection.c line 1417
  • #63 link_source_dispatch
    at linc-source.c line 159
  • #64 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #65 g_main_context_iterate
    at gmain.c line 2677
  • #66 IA__g_main_loop_run
    at gmain.c line 2881
  • #67 bonobo_main
    at bonobo-main.c line 311
  • #68 main
    at registry-main.c line 82

The bug is NEEDINFO, what information ar you asking for?
Comment 5 bill.haneman 2006-09-18 15:47:05 UTC
Sebastien: your stack trace is interesting and may shed some light.  However it isn't severity==critical since it's crash-on-exit.  The initial report from Daniel is probably critical in severity since it doesn't seem to refer to shutting down the desktop (Note that the linc connections are being broken at the same time, in both examples.)

I still think the root cause is not shown in these stack traces, though.  
Comment 6 Daniel Holbach 2006-09-18 15:52:21 UTC
It'd be nice to hear if it crashes-on-exit in older versions and other distributions too. My personal guess is that it's not an "Edgy problem", but that in Edgy we just found out with apport catching the trace.
Comment 7 bill.haneman 2006-09-18 16:01:30 UTC
Hi Daniel: the problem you originally reported seems to be unique to Edgy, at least if I understood correctly that it happened while the desktop was active, when trying to launch gnopernicus or other AT.  Its stack trace does look a lot like the one Sebastien posted in comment #4 however.

We've been hearing about problems with Edgy on the list, but no one in Sun is seeing them on either Solaris or other distros we're testing, it seems.
Comment 8 bill.haneman 2006-09-18 20:44:11 UTC
At-spi-registryd receives a request to add an application to its list of accessible apps anytime an accessible app starts; this will happen in any accessible desktop session, even if no "productivity apps" are loaded, since nautilus, the panel, and other apps are still active.  When such a request is received, at-spi-registryd sets up a listener for the ORBit connection to that application via ORBit_small_listen_for_broken().  If the application's ORB connection is broken (usually indicating that the application has died, SEGV or similar), then the "abnormal_application_termination" function is called.

The stack traces above show that this is happenning, which means that some other apps are crashing and burning.  It's not clear why this is taking the registry down with it - possibly there is a codepath in the post-abnormal_application_termination logic in the registry that isn't as robust as we'd like... however it's still a smoking gun that indicates a serious problem elsewhere, outside of at-spi-registryd, otherwise those apps would not be breaking their ORBit2 connection...

I can investigate the former (why the registry goes down when this happens), but I can't tell anything from the info associated with this bug report about why the apps are dying in the first place (in the case of the initial comment's bug report).
Comment 9 bill.haneman 2006-09-18 21:10:44 UTC
Created attachment 73003 [details] [review]
patch to prevent ref/unref of defunct application object when an app is removed from the desktop's accessible children list
Comment 10 Daniel Holbach 2006-09-23 15:14:42 UTC
The reporters of the bug experience no crashes anymore with the bug applied.
Comment 11 Daniel Holbach 2006-09-25 10:59:47 UTC
Thanks for your work on this!
Comment 12 bill.haneman 2006-09-25 11:27:05 UTC
Daniel: thanks for your work in finding, testing, and obtaining stack traces.  It makes my work a lot easier/more effective!  Sorry about these lingering crashers, I hope we can flush them all out one by one.