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