Issue 80589 - [a11y] OOo simpress crashes when trying to change view modes.
Summary: [a11y] OOo simpress crashes when trying to change view modes.
Status: CLOSED FIXED
Alias: None
Product: Impress
Classification: Application
Component: ui (show other issues)
Version: 680m223
Hardware: All Unix, all
: P2 Trivial (vote)
Target Milestone: OOo 2.3
Assignee: wolframgarten
QA Contact: issues@graphics
URL:
Keywords: accessibility, regression
Depends on:
Blocks: 80294
  Show dependency tree
 
Reported: 2007-08-10 17:57 UTC by richburridge
Modified: 2008-05-22 11:46 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description richburridge 2007-08-10 17:57:13 UTC
See also Orca bug #465449, which is blocked by this issue.
http://bugzilla.gnome.org/show_bug.cgi?id=465449

(There doesn't seem to be a "Found in version:" entry for OOo-dev 2.3.0
on this bug report web page).

This is with OOo-dev 2.3.0 (build #223) Linux RPMs on Ubuntu Gutsy
(with all the latest updates and with Orca from SVN HEAD).

I've been working through the simpress tutorial at:

http://www.ischool.utexas.edu/technology/tutorials/office/impress/

I got as far as the instructions on:

http://www.ischool.utexas.edu/technology/tutorials/office/impress/01c_alt_view.html

The slide presentation area has tabs for

Normal, Outline, Notes, Handout and Slide Sorter.

By default, the Normal view is shown.

I was trying to change the view to outline mode via the View->Outline menu ite.
simpress crashed:

** ERROR **: file base.c: line 74 (spi_base_construct): assertion failed:
(G_IS_OBJECT (gobject))
aborting...


Fatal exception: Signal 5
Stack:
/opt/ooo-dev2.3/program/libuno_sal.so.3[0xb726abc8]
/opt/ooo-dev2.3/program/libuno_sal.so.3[0xb726acf2]
/opt/ooo-dev2.3/program/libuno_sal.so.3[0xb726ad9f]
[0xffffe420]
/usr/lib/libglib-2.0.so.0(g_log+0x29)[0xb52ddfa9]
/usr/lib/libglib-2.0.so.0(g_assert_warning+0x76)[0xb52de026]
/usr/lib/libspi.so.0[0xb4edf667]
/usr/lib/libspi.so.0(spi_state_set_new+0x63)[0xb4ee3bb3]
/usr/lib/libspi.so.0[0xb4ede5a8]
/usr/lib/libspi.so.0(_ORBIT_skel_small_Accessibility_Accessible_getState+0x16)[0xb4eda8c6]
/usr/lib/libORBit-2.so.0[0xb4e16d37]
/usr/lib/libORBit-2.so.0(ORBit_OAObject_invoke+0x35)[0xb4e1cea5]
/usr/lib/libORBit-2.so.0(ORBit_small_invoke_adaptor+0x53c)[0xb4e09fcc]
/usr/lib/libORBit-2.so.0[0xb4e1ab46]
/usr/lib/libORBit-2.so.0[0xb4e1b1f2]
/usr/lib/libORBit-2.so.0[0xb4e1bc63]
/usr/lib/libORBit-2.so.0(ORBit_handle_request+0xa2)[0xb4e1d042]
/usr/lib/libORBit-2.so.0(giop_connection_handle_input+0x2c7)[0xb4e06257]
/usr/lib/libORBit-2.so.0[0xb4e23d8d]
/usr/lib/libORBit-2.so.0[0xb4e26c8e]
/usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x17c)[0xb52d518c]
/usr/lib/libglib-2.0.so.0[0xb52d85cf]
/usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x65)[0xb52d8b35]
/usr/lib/libORBit-2.so.0(link_main_iteration+0x27)[0xb4e224e7]
/usr/lib/libORBit-2.so.0(giop_recv_buffer_get+0x5e)[0xb4e059ae]
/usr/lib/libORBit-2.so.0(ORBit_small_invoke_stub+0x118)[0xb4e0a558]
/usr/lib/libORBit-2.so.0(ORBit_small_invoke_stub_n+0x7e)[0xb4e0a77e]
/usr/lib/libORBit-2.so.0(ORBit_c_stub_invoke+0x182)[0xb4e16f62]
/usr/lib/libspi.so.0(Accessibility_EventListener_notifyEvent+0x74)[0xb4ecb624]
/usr/lib/gtk-2.0/modules/libatk-bridge.so[0xb4f97fc8]
/usr/lib/gtk-2.0/modules/libatk-bridge.so[0xb4f98fdc]
/usr/lib/libgobject-2.0.so.0[0xb53864a1]
/usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x823)[0xb5387b83]
/usr/lib/libgobject-2.0.so.0(g_signal_emit+0x29)[0xb5387e29]
/usr/lib/libatk-1.0.so.0(atk_object_notify_state_change+0x87)[0xb54154d7]
/opt/ooo-dev2.3/program/libvclplug_gtk680li.so(_ZN11AtkListener9disposingERKN3com3sun4star4lang11EventObjectE+0x3d)[0xb58958dd]
/opt/ooo-dev2.3/program/libuno_cppuhelpergcc3.so.3(_ZN4cppu25OInterfaceContainerHelper15disposeAndClearERKN3com3sun4star4lang11EventObjectE+0xef)[0xb7481f77]
/opt/ooo-dev2.3/program/libcomphelp4gcc3.so(_ZN10comphelper23AccessibleEventNotifier27revokeClientNotifyDisposingEmRKN3com3sun4star3uno9ReferenceINS4_10XInterfaceEEE+0x1cd)[0xb75f9545]
/opt/ooo-dev2.3/program/libcomphelp4gcc3.so(_ZN10comphelper24OAccessibleContextHelper9disposingEv+0x4c)[0xb75e6362]
/opt/ooo-dev2.3/program/libtk680li.so(_ZN23VCLXAccessibleComponent9disposingEv+0x66)[0xb70d9bde]
/opt/ooo-dev2.3/program/libacc680li.so[0xae1f63cb]
/opt/ooo-dev2.3/program/libuno_cppuhelpergcc3.so.3(_ZN4cppu30WeakAggComponentImplHelperBase7disposeEv+0x8a)[0xb746d3e8]
/opt/ooo-dev2.3/program/libtk680li.so(_ZN10VCLXWindow7disposeEv+0x1f0)[0xb70fafea]
/opt/ooo-dev2.3/program/libvcl680li.so(_ZN6WindowD2Ev+0x7d0)[0xb7e46644]
/opt/ooo-dev2.3/program/libvcl680li.so(_ZN13DockingWindowD2Ev+0x68)[0xb7df0162]
/opt/ooo-dev2.3/program/libvcl680li.so(_ZN7ToolBoxD2Ev+0x196)[0xb7e1ea9a]
/opt/ooo-dev2.3/program/libfwk680li.so[0xb1a18ea8]
/opt/ooo-dev2.3/program/libfwk680li.so[0xb1a07676]
/opt/ooo-dev2.3/program/libfwk680li.so[0xb1a0d98a]
/opt/ooo-dev2.3/program/libfwk680li.so[0xb1a0624d]
/opt/ooo-dev2.3/program/libfwk680li.so[0xb1958530]
/opt/ooo-dev2.3/program/libsd680li.so[0xb054254c]
/opt/ooo-dev2.3/program/libsd680li.so[0xb05426c3]
/opt/ooo-dev2.3/program/libsd680li.so[0xb080172d]
/opt/ooo-dev2.3/program/libsd680li.so[0xb07e195c]
/opt/ooo-dev2.3/program/libsd680li.so[0xb07e202f]
/opt/ooo-dev2.3/program/libsd680li.so[0xb07e21f0]
/opt/ooo-dev2.3/program/libsd680li.so[0xb07e28f6]
/opt/ooo-dev2.3/program/libsd680li.so[0xb07d6e95]
/opt/ooo-dev2.3/program/libsd680li.so[0xb07d6ef8]
/opt/ooo-dev2.3/program/libvcl680li.so[0xb7e4b9ca]
/opt/ooo-dev2.3/program/libvclplug_gen680li.so(_ZN10SalDisplay21DispatchInternalEventEv+0xb6)[0xb526aef6]
/opt/ooo-dev2.3/program/libvclplug_gtk680li.so[0xb5891c63]
/opt/ooo-dev2.3/program/libvclplug_gtk680li.so[0xb5891c8d]
/usr/lib/libglib-2.0.so.0[0xb52d35c1]
/usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x17c)[0xb52d518c]
/usr/lib/libglib-2.0.so.0[0xb52d85cf]
/usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x65)[0xb52d8b35]
/opt/ooo-dev2.3/program/libvclplug_gtk680li.so[0xb58910d6]
/opt/ooo-dev2.3/program/libvclplug_gen680li.so(_ZN14X11SalInstance5YieldEbb+0x2c)[0xb52724a6]
/opt/ooo-dev2.3/program/libvcl680li.so(_ZN11Application5YieldEb+0x5f)[0xb7c84113]
/opt/ooo-dev2.3/program/libvcl680li.so(_ZN11Application7ExecuteEv+0x2f)[0xb7c84165]
/opt/ooo-dev2.3/program/soffice.bin(_ZN7desktop7Desktop4MainEv+0x2124)[0x806c4d8]
/opt/ooo-dev2.3/program/libvcl680li.so[0xb7c89ac8]
/opt/ooo-dev2.3/program/libvcl680li.so(_Z6SVMainv+0x29)[0xb7c89c53]
/opt/ooo-dev2.3/program/soffice.bin(main+0xe2)[0x805ed76]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb6c26050]
/opt/ooo-dev2.3/program/soffice.bin(_ZN6Window11RequestHelpERK9HelpEvent+0x39)[0x805ec01]
Comment 1 maand 2007-08-11 19:54:52 UTC
There is no stabile build of 2.3 yet. The version, you found that bug first, 
has to be set to 680m223. I change the version.
Comment 2 eric.savary 2007-08-13 11:37:33 UTC
Reassigned
Comment 3 wolframgarten 2007-08-13 12:13:25 UTC
This works here in m222 but crashes m225 and also OOG-m1. Lowered prio to p2.
This seems to be a showstopper...
Comment 4 wolframgarten 2007-08-13 12:54:57 UTC
The ID of the error report is r9mtfn.
Comment 5 groucho266 2007-08-17 10:20:53 UTC
It took some time but I know now what happens.

When the views are switched toolbars are exchanged. Some are disposed while
others are created and displayed.  For some reason, maybe a due to a timing
problem, one of the just disposed toolbars (or one that is being disposed (not
yet finished)) is asked by GTK accessibility for its state set.

This leads to a call to wrapper_ref_state_set() in
vcl/unx/gtk/a11y/atkwrapper.cxx.  An AtkStateSet object is created to be filled
with the appropriate values. Calling getAccessibleStateSet() at the
accessibility object of the toolbar, however, leads to a DisposedException being
thrown. This exception is caught, but not the empty state set object is returned
but a NULL pointer (empty reference).

Although this seems to be a valid return value for
_AtkObjectClass.ref_state_set, the returned NULL pointer is not handled
gracefully by imp_accessibility_accessible_get_state() in
at-spi-1.*/libspi/accessible.c.  Instead of handling it like a missing object it
is passed to spi_state_set_new() and then to spi_base_construct() where a
g_assert(G_IS_OBJECT(gobject)) leads to a sudden termination.


Possible fixes are:

1. wrapper_ref_state_set() should not return a NULL pointer but an empty
AtkStateSet instead.

2. imp_accessibility_accessible_get_state() should handle the NULL pointer
(without crashing) instead of just passing it on.
Comment 6 nospam4obr 2007-08-17 11:46:45 UTC
I'll try to change the OOo code to returns a state set with DEFUNCT state only,
which is probably the right thing to do here.

But as libspi should not cause the application to crash, I filed
http://bugzilla.gnome.org/show_bug.cgi?id=467612 .
Comment 7 nospam4obr 2007-08-17 13:03:27 UTC
Fix commited in CWS atkbridge7.
Comment 8 nospam4obr 2007-08-17 14:25:38 UTC
please verify.
Comment 9 wolframgarten 2007-08-27 09:45:25 UTC
Verified in CWS.
Comment 10 wolframgarten 2008-05-22 11:46:54 UTC
Closed.