Issue 80589 - [a11y] OOo simpress crashes when trying to change view modes.
Summary: [a11y] OOo simpress crashes when trying to change view modes.
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
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: ---


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.

(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:

I got as far as the instructions on:

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))

Fatal exception: Signal 5
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
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 .
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