To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=93419
                 Issue #|93419
                 Summary|[a11y] Crash in calc opening a doc in a11y
               Component|Drawing
                 Version|DEV300m30
                Platform|All
                     URL|
              OS/Version|Linux
                  Status|NEW
       Status whiteboard|
                Keywords|
              Resolution|
              Issue type|PATCH
                Priority|P3
            Subcomponent|code
             Assigned to|ka
             Reported by|cmc





------- Additional comments from [EMAIL PROTECTED] Wed Sep  3 10:08:37 +0000 
2008 -------
The attached document crashes on load when a11y is enabled. 

valgrind shows....

==9009== Invalid write of size 8
==9009==    at 0x17E3E2F4:
accessibility::AccessibleGraphicShape::AccessibleGraphicShape(accessibility::AccessibleShapeInfo
const&, accessibility::AccessibleShapeTreeInfo const&)
(AccessibleGraphicShape.cxx:50)
==9009==    by 0x17E5CB92:
accessibility::CreateSvxAccessibleShape(accessibility::AccessibleShapeInfo
const&, accessibility::AccessibleShapeTreeInfo const&, int) 
(SvxShapeTypes.cxx:86)
==9009==    by 0x170644E5: ScChildrenShapes::Get(ScAccessibleShapeData const*)
const (AccessibleDocument.cxx:505)
==9009==    by 0x17065E3A: ScChildrenShapes::Get(int) const
(AccessibleDocument.cxx:528)
==9009==    by 0x170666CD: ScAccessibleDocument::getAccessibleChild(int)
(AccessibleDocument.cxx:1634)
==9009==    by 0xA394C70:
AtkListener::updateChildList(com::sun::star::accessibility::XAccessibleContext*)
(in /usr/lib64/openoffice.org/basis3.0/program/libvclplug_gtklx.so)
==9009==    by 0xA395A10: AtkListener::AtkListener(_AtkObjectWrapper*) (in
/usr/lib64/openoffice.org/basis3.0/program/libvclplug_gtklx.so)
==9009==    by 0xA3A2246: atk_object_wrapper_new (in
/usr/lib64/openoffice.org/basis3.0/program/libvclplug_gtklx.so)
==9009==    by 0xA395035:
AtkListener::handleChildAdded(com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessibleContext>
const&,
com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible>
const&) (in /usr/lib64/openoffice.org/basis3.0/program/libvclplug_gtklx.so)
==9009==    by 0xA3953AD:
AtkListener::notifyEvent(com::sun::star::accessibility::AccessibleEventObject
const&) (in /usr/lib64/openoffice.org/basis3.0/program/libvclplug_gtklx.so)
==9009==    by 0x354469039B:
comphelper::AccessibleEventNotifier::addEvent(unsigned,
com::sun::star::accessibility::AccessibleEventObject const&) (in
/usr/lib64/openoffice.org/basis3.0/program/libcomphelp4gcc3.so)
==9009==    by 0x354468DC48:
comphelper::OAccessibleContextHelper::NotifyAccessibleEvent(short,
com::sun::star::uno::Any const&, com::sun::star::uno::Any const&) (in
/usr/lib64/openoffice.org/basis3.0/program/libcomphelp4gcc3.so)
==9009==  Address 0xfc54b88 is 0 bytes inside a block of size 328 free'd
==9009==    at 0x4A0609F: free (vg_replace_malloc.c:323)
==9009==    by 0x17E361F4:
accessibility::AccessibleContextBase::CommitChange(short,
com::sun::star::uno::Any const&, com::sun::star::uno::Any const&)
(Reference.hxx:121)
==9009==    by 0x17E3676A:
accessibility::AccessibleContextBase::SetAccessibleName(rtl::OUString const&,
accessibility::AccessibleContextBase::StringOrigin) 
(AccessibleContextBase.cxx:635)
==9009==    by 0x17E3BBE9:
accessibility::AccessibleShape::UpdateNameAndDescription()
(AccessibleShape.cxx:1223)
==9009==    by 0x17E3C264:
accessibility::AccessibleShape::AccessibleShape(accessibility::AccessibleShapeInfo
const&, accessibility::AccessibleShapeTreeInfo const&) (AccessibleShape.cxx:126)
==9009==    by 0x17E3E2E8:
accessibility::AccessibleGraphicShape::AccessibleGraphicShape(accessibility::AccessibleShapeInfo
const&, accessibility::AccessibleShapeTreeInfo const&)
(AccessibleGraphicShape.cxx:50)
==9009==    by 0x17E5CB92:
accessibility::CreateSvxAccessibleShape(accessibility::AccessibleShapeInfo
const&, accessibility::AccessibleShapeTreeInfo const&, int) 
(SvxShapeTypes.cxx:86)
==9009==    by 0x170644E5: ScChildrenShapes::Get(ScAccessibleShapeData const*)
const (AccessibleDocument.cxx:505)
==9009==    by 0x17065E3A: ScChildrenShapes::Get(int) const
(AccessibleDocument.cxx:528)
==9009==    by 0x170666CD: ScAccessibleDocument::getAccessibleChild(int)
(AccessibleDocument.cxx:1634)
==9009==    by 0xA394C70:
AtkListener::updateChildList(com::sun::star::accessibility::XAccessibleContext*)
(in /usr/lib64/openoffice.org/basis3.0/program/libvclplug_gtklx.so)
==9009==    by 0xA395A10: AtkListener::AtkListener(_AtkObjectWrapper*) (in
/usr/lib64/openoffice.org/basis3.0/program/libvclplug_gtklx.so)

What I see is that the ctor of AccessibleShape calls
AccessibleShape::UpdateNameAndDescription which calls some fireEvents which take
a reference to the object. So during construction the object isn't finialized so
when the new references are destroyed, so is the object that is being 
constructed.

So it doesn't look safe to call UpdateNameAndDescription when the object has not
been constructed yet. Patch attached to add a new "SetInitialName..." etc. for
use during construction, that doesn't fire a changed event. Crash goes away
afterwards

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to