Java/SWING + VCL / X crasher ...

Michael Meeks michael.meeks at suse.com
Sat Nov 24 10:02:24 PST 2012


Hi Andrew,

	Sorry to bother you; just visiting some friends at Munich hosting a
hack-fest; and they have an interesting problem with OpenJDK. It -seems-
that even though we initialise X with XInitThreads - before Java gets
involved and all has worked well for a long time; that (as of recently)
we fight over the (apparently global?) XSetErrorHandler and that causes
a nice crash :-)

#0  JNU_CallStaticMethodByName (env=0x0, hasException=0x0, class_name=0x7a3fa571 "sun/awt/X11/XToolkit", name=0x7a3fa55e "globalErrorHandler", signature=0x7a3fa558 "(JJ)I")
    at ../../../src/share/native/common/jni_util.c:209
#1  0x7a3ca216 in ToolkitErrorHandler (dpy=0x808b1b0, event=0xbfff835c) at ../../../src/solaris/native/sun/xawt/XlibWrapper.c:1115
#2  0x440c8acb in _XError (dpy=0x808b1b0, rep=0xab53cc0) at ../../src/XlibInt.c:1583
#3  0x440c589d in handle_error (dpy=0x808b1b0, err=0xab53cc0, in_XReply=0) at ../../src/xcb_io.c:212
#4  0x440c58f7 in handle_response (dpy=0x808b1b0, response=0xab53cc0, in_XReply=0) at ../../src/xcb_io.c:324
#5  0x440c63e8 in _XEventsQueued (dpy=0x808b1b0, mode=1) at ../../src/xcb_io.c:363
#6  0x440b7118 in XEventsQueued (dpy=0x808b1b0, mode=1) at ../../src/Pending.c:43
#7  0x47dace8f in DisplayQueue (fd=14, pDisplay=0x81b50c8) at /home/limux/core/vcl/unx/generic/app/saldisp.cxx:407
#8  0x47daa521 in YieldEntry::IsEventQueued (this=0x47e9b250) at /home/limux/core/vcl/unx/generic/app/saldata.cxx:593
#9  0x47da9e18 in SalXLib::Yield (this=0x8060c60, bWait=true, bHandleAllCurrentEvents=false) at /home/limux/core/vcl/unx/generic/app/saldata.cxx:775
#10 0x464cb7dc in KDEXLib::Yield (this=0x8060c58, bWait=true, bHandleAllCurrentEvents=false) at /home/limux/core/vcl/unx/kde4/KDEXLib.cxx:293
#11 0x47dbd7f5 in X11SalInstance::Yield (this=0x804f780, bWait=true, bHandleAllCurrentEvents=false) at /home/limux/core/vcl/unx/generic/app/salinst.cxx:164
#12 0x428fe2fa in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/limux/core/vcl/source/app/svapp.cxx:425
#13 0x428fa8fe in Application::Yield (i_bAllEvents=false) at /home/limux/core/vcl/source/app/svapp.cxx:459
#14 0x428fa898 in Application::Execute () at /home/limux/core/vcl/source/app/svapp.cxx:404
#15 0x4010d1f7 in desktop::Desktop::Main (this=0xbfff8ab8) at /home/limux/core/desktop/source/app/app.cxx:1713
#16 0x42905baf in ImplSVMain () at /home/limux/core/vcl/source/app/svmain.cxx:162
#17 0x42905ccd in SVMain () at /home/limux/core/vcl/source/app/svmain.cxx:199
#18 0x4014ef9e in soffice_main () at /home/limux/core/desktop/source/app/sofficemain.cxx:83
#19 0x0804873c in sal_main () at /home/limux/core/desktop/source/app/main.c:48
#20 0x08048713 in main (argc=5, argv=0xbfff8bf4) at /home/limux/core/desktop/source/app/main.c:47

	It seems to me that X's global error handler is the primary design
drop-off here; there should be one per display (?). Having said that - I
wonder if there is some nice way we can clobber Java's XError handler
entirely, and/or stop it mis-behaving ?

	[ the background here is they have some rather funky Java/SWING +
LibreOffice document template management magic going on ].

	Is there some way we can intercept the ToolkitErrorHandler (preferably
without some LD_PRELOAD evil) or should we spend our time calling
XSetErrorHandler to try to clobber Java's with our own ;-)

	Is there even some Java Toolkit interface we can implement that handles
this (grasping at straws ;-).

	Thoughts / pointers much appreciated,

	Thanks :-)

		Michael.

-------- Forwarded Message --------
From: Ignaz Forster <ignaz.forster at muenchen.de>
Subject: Backtrace of LO with WollMux and Java >= 1.6.0_24
Date: Sat, 24 Nov 2012 18:07:14 +0100

Hi Michael,

thanks a lot for your time!

I've attached the backtrace of one of the crashes (including debug symbols).

Ingredients of this backtrace:
- LibreOffice HEAD (using the KDE4 frontend)
- OpenJDK 1.6.0_24
- WollMux (which is using a Swing based UI)

The crash happens since Java 1.6.0_24 (rev. 20 is know to still work, 
and it happens with both Sun/Oracle and OpenJDK)

Reproducability is somewhat random. An easy method to provoke it is to 
open up the extension manager a few times when the WollMux plugin is 
loaded (i.e. when a Writer document is open).
I'll have to wait until Monday to get a link to the exact patch in Java 
which we think was introducing the problem on our side.

Greetings,
Ignaz

-- 
michael.meeks at suse.com  <><, Pseudo Engineer, itinerant idiot
-------------- next part --------------
#0  JNU_CallStaticMethodByName (env=0x0, hasException=0x0, class_name=0x7a3fa571 "sun/awt/X11/XToolkit", name=0x7a3fa55e "globalErrorHandler", signature=0x7a3fa558 "(JJ)I")
    at ../../../src/share/native/common/jni_util.c:209
#1  0x7a3ca216 in ToolkitErrorHandler (dpy=0x808b1b0, event=0xbfff835c) at ../../../src/solaris/native/sun/xawt/XlibWrapper.c:1115
#2  0x440c8acb in _XError (dpy=0x808b1b0, rep=0xab53cc0) at ../../src/XlibInt.c:1583
#3  0x440c589d in handle_error (dpy=0x808b1b0, err=0xab53cc0, in_XReply=0) at ../../src/xcb_io.c:212
#4  0x440c58f7 in handle_response (dpy=0x808b1b0, response=0xab53cc0, in_XReply=0) at ../../src/xcb_io.c:324
#5  0x440c63e8 in _XEventsQueued (dpy=0x808b1b0, mode=1) at ../../src/xcb_io.c:363
#6  0x440b7118 in XEventsQueued (dpy=0x808b1b0, mode=1) at ../../src/Pending.c:43
#7  0x47dace8f in DisplayQueue (fd=14, pDisplay=0x81b50c8) at /home/limux/core/vcl/unx/generic/app/saldisp.cxx:407
#8  0x47daa521 in YieldEntry::IsEventQueued (this=0x47e9b250) at /home/limux/core/vcl/unx/generic/app/saldata.cxx:593
#9  0x47da9e18 in SalXLib::Yield (this=0x8060c60, bWait=true, bHandleAllCurrentEvents=false) at /home/limux/core/vcl/unx/generic/app/saldata.cxx:775
#10 0x464cb7dc in KDEXLib::Yield (this=0x8060c58, bWait=true, bHandleAllCurrentEvents=false) at /home/limux/core/vcl/unx/kde4/KDEXLib.cxx:293
#11 0x47dbd7f5 in X11SalInstance::Yield (this=0x804f780, bWait=true, bHandleAllCurrentEvents=false) at /home/limux/core/vcl/unx/generic/app/salinst.cxx:164
#12 0x428fe2fa in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/limux/core/vcl/source/app/svapp.cxx:425
#13 0x428fa8fe in Application::Yield (i_bAllEvents=false) at /home/limux/core/vcl/source/app/svapp.cxx:459
#14 0x428fa898 in Application::Execute () at /home/limux/core/vcl/source/app/svapp.cxx:404
#15 0x4010d1f7 in desktop::Desktop::Main (this=0xbfff8ab8) at /home/limux/core/desktop/source/app/app.cxx:1713
#16 0x42905baf in ImplSVMain () at /home/limux/core/vcl/source/app/svmain.cxx:162
#17 0x42905ccd in SVMain () at /home/limux/core/vcl/source/app/svmain.cxx:199
#18 0x4014ef9e in soffice_main () at /home/limux/core/desktop/source/app/sofficemain.cxx:83
#19 0x0804873c in sal_main () at /home/limux/core/desktop/source/app/main.c:48
#20 0x08048713 in main (argc=5, argv=0xbfff8bf4) at /home/limux/core/desktop/source/app/main.c:47


More information about the LibreOffice mailing list