UNO API doesn't work as expected when ATT enabled

Stephan Bergmann sbergman at redhat.com
Mon Oct 21 12:04:16 CEST 2013


On 10/19/2013 11:55 PM, Efe Gürkan YALAMAN wrote:
> I was trying to find the reason of the fdo#70465
> <https://bugs.freedesktop.org/show_bug.cgi?id=70465>. Reproduced the bug
> and debugged that.
>
> During the load page traverses the options recursively with
> CuiAboutConfigTabPage::FillItems method. Exit condition of this method
> is an exception thrown from this line:
> "Reference< XHierarchicalNameAccess >xNextHierarchicalNameAccess( aNode,
> uno::UNO_QUERY_THROW );"

...you mean "exit condition from the FillItems recursion," I assume.  In 
any event, it would arguably be better to not rely on an exception there 
to break the recursion.  Rather, stop once aNode does not reference an 
object implementing XHierarchicalNameAccess, by doing

> Reference<XHierarchicalNameAccess> xNextHierarchicalNameAccess(aNode, uno::UNO_QUERY);
> bIsLeafNode = !aNode.is();

However, I cannot reproduce the problem as you describe it below.  Given 
your backtrace contains "/home/efe/", I assume it is on Linux?

(What I can reproduce is the UI being unresponsive and CPU load being 
high for a very long time, see 
<https://bugs.freedesktop.org/show_bug.cgi?id=70465#c9>.)

> It works if Assistive Technology Tools disabled. But if it is enabled
> interestingly it jumps another declaration which has same type. Couldn't
> figure out what may cause the problem is because of this interesting
> behavior and how it is related to ATT. Any kind of help is appreciated.
>
>
>
> Here is some info:
>
> Exception is thrown from cui/source/options/optaboutconfig.cxx#n228
> <http://cgit.freedesktop.org/libreoffice/core/tree/cui/source/options/optaboutconfig.cxx#n228>
> normally, after exception thrown program jumps here and it try-catch
> block handles it.
>
> But instead, program jumps here
> cui/source/options/optaboutconfig.cxx::216
> <http://cgit.freedesktop.org/libreoffice/core/tree/cui/source/options/optaboutconfig.cxx#n216>
> which breaks program flow. And causes infinite recursion and lock's
> page. It explains reported 1.5 GB memory usage before crash.
>
>
> bt just before exception thrown from reference.
>
> #0  com::sun::star::uno::BaseReference::iquery_throw (pInterface=0x0,
> rType=...) at
> /home/efe/libreoffice/include/com/sun/star/uno/Reference.hxx:72
> #1  0x00002aaacaeb62e6 in
> com::sun::star::uno::Reference<com::sun::star::container::XHierarchicalNameAccess>::iquery_throw
> (pInterface=0x0) at
> /home/efe/libreoffice/include/com/sun/star/uno/Reference.hxx:84
> #2  0x00002aaacaeb56bf in
> com::sun::star::uno::Reference<com::sun::star::container::XHierarchicalNameAccess>::Reference
> (this=0x7fffffff0db0, rAny=...) at
> /home/efe/libreoffice/include/com/sun/star/uno/Reference.hxx:189
> #3  0x00002aaacaeb0804 in CuiAboutConfigTabPage::FillItems
> (this=0x18b6350, xNameAccess=..., sPath=...) at
> /home/efe/libreoffice/cui/source/options/optaboutconfig.cxx:228
> #4  0x00002aaacaeb0937 in CuiAboutConfigTabPage::FillItems
> (this=0x18b6350, xNameAccess=..., sPath=...) at
> /home/efe/libreoffice/cui/source/options/optaboutconfig.cxx:230
> #5  0x00002aaacaeb0937 in CuiAboutConfigTabPage::FillItems
> (this=0x18b6350, xNameAccess=..., sPath=...) at
> /home/efe/libreoffice/cui/source/options/optaboutconfig.cxx:230



More information about the LibreOffice mailing list