[Libreoffice] Howto develop an extension with URE?

Christian Ehrlicher Ch.Ehrlicher at gmx.de
Fri Nov 18 11:41:27 PST 2011


Stephan Bergmann schrieb:
>> Now when I try to use the provided rdb I get an error when I try to
>> load a
>> document:
>> "LoadFromUrl failed: Binary URP bridge disposed during call -
>> file:///home/chehrlic/Dokumente/test.odp"
>> Out of curiosity the documentloader example can load my document and I
>> can't
>> find a difference between the example and my code.
>
> "Binary URP bridge disposed during call" indeed hints at broken
> plumbing, like the two ends of the bridge using different type
> descriptions (which appears unlikely if you use the offapi.rdb from
> LibO's basis layer---together with the types.rdb from LibO's URE layer)
> or something like that.
>
> The easiest would be if you presented a (stripped down) version of your
> failing code. It might be that you fail to include the URE's types.rdb,
> for example.
>
This was a good idea although not with the result I expected. After my 
testcase finally worked I found out that soffice is crashing during the 
connect procedure (my application is starting the soffice binary by its 
own and therefore I had no real chance to debug this end of the wire) 
gdb shows the problem:

-------------------------8<--------------------------------------------
QPixmap: It is not safe to use pixmaps outside the GUI thread
QPixmap: It is not safe to use pixmaps outside the GUI thread
QPixmap: It is not safe to use pixmaps outside the GUI thread

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffda7fd700 (LWP 18110)]
qt_toX11Pixmap (pixmap=...) at image/qpixmap_x11.cpp:98
98      image/qpixmap_x11.cpp: Datei oder Verzeichnis nicht gefunden.
         in image/qpixmap_x11.cpp
(gdb) bt
#0  qt_toX11Pixmap (pixmap=...) at image/qpixmap_x11.cpp:98
#1  0x00007fffeb647a40 in QX11PaintEngine::drawPixmap (this=<optimized 
out>, r=<optimized out>, px=<optimized out>, _sr=<optimized out>)
     at painting/qpaintengine_x11.cpp:1918
#2  0x00007fffeb583bf5 in QPaintEngine::drawImage (this=0x1df9fb0, 
r=..., image=..., sr=<optimized out>, flags=<optimized out>)
     at painting/qpaintengine.cpp:624
#3  0x00007fffeb64bc72 in QX11PaintEngine::drawImage (this=0x1df9fb0, 
r=..., image=..., sr=..., flags=...)
     at painting/qpaintengine_x11.cpp:1903
#4  0x00007fffeb59dc1e in QPainter::drawImage (this=0x7fffda7f98b0, 
targetRect=..., image=..., sourceRect=..., flags=...)
     at painting/qpainter.cpp:5720
#5  0x00007fffed747914 in ?? () from 
/usr/lib64/libreoffice/basis3.4/program/libvclplug_kde4lx.so
#6  0x00007ffff39d4667 in SalGraphics::DrawNativeControl(unsigned int, 
unsigned int, Rectangle const&, unsigned int, ImplControlValue const&, 
rtl::OUString const&, OutputDevice const*) () from 
/usr/lib64/libreoffice/program/../basis-link/program/libvcllx.so
#7  0x00007ffff3947e7e in OutputDevice::DrawNativeControl(unsigned int, 
unsigned int, Rectangle const&, unsigned int, ImplControlValue const&, 
rtl::OUString) () from 
/usr/lib64/libreoffice/program/../basis-link/program/libvcllx.so
#8  0x00007ffff3945d5b in OutputDevice::Erase() () from 
/usr/lib64/libreoffice/program/../basis-link/program/libvcllx.so
#9  0x00007ffff3a8fae2 in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/libvcllx.so
#10 0x00007ffff3a8fd13 in Window::Update() () from 
/usr/lib64/libreoffice/program/../basis-link/program/libvcllx.so
#11 0x00007ffff3a62025 in StatusBar::SetProgressValue(unsigned short) ()
    from /usr/lib64/libreoffice/program/../basis-link/program/libvcllx.so
#12 0x00007fffdda90d54 in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/libfwklx.so
#13 0x00007fffdda9e270 in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/libfwklx.so
#14 0x00007fffdd954e81 in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/libfwklx.so
#15 0x00007fffdd951475 in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/libfwklx.so
#16 0x00007fffd8363378 in ProgressBarHelper::SetValue(int) () from 
/usr/lib64/libreoffice/program/../basis-link/program/libxolx.so
#17 0x00007fffd842e127 in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/libxolx.so
#18 0x00007fffd8434e4b in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/libxolx.so
#19 0x00007fffd843ac74 in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/libxolx.so
#20 0x00007fffd8396328 in SvXMLImport::startElement(rtl::OUString 
const&, 
com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList> 
const&) () from 
/usr/lib64/libreoffice/program/../basis-link/program/libxolx.so
#21 0x00007fffd80455f0 in ?? () from 
/usr/lib64/libreoffice/program/../basis-link/program/sax.uno.so
#22 0x00007fffe6debaf6 in ?? () from /lib64/libexpat.so.1
---Type <return> to continue, or q <return> to quit---q
-------------------------8<--------------------------------------------

The kde4 plugin for libreoffice has a problem - creating qpixmaps 
outside the main thread is no allowed - crashes and the other end gives 
me the error message.
The crash doesn't happen every time and it looks like a timing problem 
to me which explains why the documentloader example worked in > 90% of 
the cases.

After uninstalling the plugin I can work with libreoffice as it worked 
with the ure-devel packages.

I'll open a bugreport on opensuse bugtracker with the testcase.

Thx for the help,
Christian


More information about the LibreOffice mailing list