Bugzilla – Attachment 149569 Details for
Bug 119856
kde5: Java extension "WollMux" not working properly
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
DEMO patch for approach in comment 20
0001-DEMO-for-tdf-119856-comment-20.patch (text/plain), 14.08 KB, created by
Michael Weghorn
on 2019-02-25 10:20:53 UTC
(
hide
)
Description:
DEMO patch for approach in comment 20
Filename:
MIME Type:
Creator:
Michael Weghorn
Created:
2019-02-25 10:20:53 UTC
Size:
14.08 KB
patch
obsolete
>From 84225169d4c3f6d7e99e46e0bdef0165c95699cd Mon Sep 17 00:00:00 2001 >From: Michael Weghorn <m.weghorn@posteo.de> >Date: Mon, 25 Feb 2019 11:09:18 +0100 >Subject: [PATCH] DEMO for tdf#119856, comment 20 > >With this applied, LO crashes with failed assert: > >(gdb) c >Continuing. >[Thread 0x7fff2da14700 (LWP 13846) exited] >soffice.bin: /home/michi/development/git/libreoffice/vcl/source/app/dbggui.cxx:46: void ImplDbgTestSolarMutex(): Assertion `ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && "SolarMutex not owned!"' failed. > > Thread 1 "soffice.bin" received signal SIGABRT, Aborted. > [Switching to Thread 0x7fffe903f1c0 (LWP 13747)] > __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 > 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. > (gdb) bt > #0 0x00007ffff7b368bb in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 > #1 0x00007ffff7b21535 in __GI_abort () at abort.c:79 > #2 0x00007ffff7b2140f in __assert_fail_base > (fmt=0x7ffff7c83ee0 "%s%s%s:%u: %s%sAssertion `%s' failed. >%n", assertion=0x7ffff14eb158 "ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && \"SolarMutex not owned!\"", file=0x7ffff14eb110 "/home/michi/development/git/libreoffice/vcl/source/app/dbggui.cxx", line=46, function=<optimized out>) at assert.c:92 > #3 0x00007ffff7b2f0f2 in __GI___assert_fail > (assertion=0x7ffff14eb158 "ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && \"SolarMutex not owned!\"", file=0x7ffff14eb110 "/home/michi/development/git/libreoffice/vcl/source/app/dbggui.cxx", line=46, function=0x7ffff14eb1c0 <ImplDbgTestSolarMutex()::__PRETTY_FUNCTION__> "void ImplDbgTestSolarMutex()") at assert.c:101 > #4 0x00007ffff0f0e9d1 in ImplDbgTestSolarMutex() () at /home/michi/development/git/libreoffice/vcl/source/app/dbggui.cxx:46 > #5 0x00007ffff1fbc90f in DbgTestSolarMutex() () at /home/michi/development/git/libreoffice/tools/source/debug/debug.cxx:103 > #6 0x00007ffff09e3a37 in vcl::Window::AcquireGraphics() const (this=0x55555f351470) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:816 > #7 0x00007ffff0b91c20 in OutputDevice::IsNativeControlSupported(ControlType, ControlPart) const (this=0x55555f351470, nType=ControlType::WindowBackground, nPart=ControlPart::BackgroundDialog) > at /home/michi/development/git/libreoffice/vcl/source/outdev/nativecontrols.cxx:166 > #8 0x00007ffff0884c06 in Dialog::ImplInitSettings() (this=0x55555f351470) at /home/michi/development/git/libreoffice/vcl/source/window/dialog.cxx:511 > #9 0x00007ffff08849e0 in Dialog::ImplInit(vcl::Window*, long, Dialog::InitFlag) (this=0x55555f351470, pParent=0x55555731a3c0, nStyle=1073743682, eFlag=Dialog::InitFlag::Default) at /home/michi/development/git/libreoffice/vcl/source/window/dialog.cxx:482 > #10 0x00007ffff0885d14 in Dialog::Dialog(vcl::Window*, long, Dialog::InitFlag) (this=0x55555f351470, pParent=0x55555731a3c0, nStyle=1344, eFlag=Dialog::InitFlag::Default, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) > at /home/michi/development/git/libreoffice/vcl/source/window/dialog.cxx:590 > #11 0x00007ffff0823649 in VclPtr<Dialog>::Create<vcl::Window*&, long&, Dialog::InitFlag>(vcl::Window*&, long&, Dialog::InitFlag&&) (arg#0=@0x7fffffffba88: 0x55555731a3c0, arg#1=@0x7fffffffbb90: 1344, arg#2=@0x7fffffffbb70: Dialog::InitFlag::Default) > at /home/michi/development/git/libreoffice/include/vcl/vclptr.hxx:129 > #12 0x00007ffff07fe73e in VclBuilder::makeObject(vcl::Window*, rtl::OString const&, rtl::OString const&, std::__debug::map<rtl::OString, rtl::OUString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OUString> > >&) > (this=0x5555604d5660, pParent=0x55555731a3c0, name="GtkDialog", id="PdfOptionsDialog", rMap=Python Exception <class 'ValueError'> Cannot find type VclBuilder::stringmap::_Rep_type: > std::__debug::map with 7 elements) at /home/michi/development/git/libreoffice/vcl/source/window/builder.cxx:1629 > #13 0x00007ffff08056e3 in VclBuilder::insertObject(vcl::Window*, rtl::OString const&, rtl::OString const&, std::__debug::map<rtl::OString, rtl::OUString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OUString> > >&, std::__debug::map<rtl::OString, rtl::OUString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OUString> > >&, std::__debug::map<rtl::OString, rtl::OUString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OUString> > >&) > (this=0x5555604d5660, pParent=0x55555731a3c0, rClass="GtkDialog", rID="PdfOptionsDialog", rProps=Python Exception <class 'ValueError'> Cannot find type VclBuilder::stringmap::_Rep_type: > std::__debug::map with 7 elements, rPango=Python Exception <class 'ValueError'> Cannot find type VclBuilder::stringmap::_Rep_type: > std::__debug::map with 0 elements, rAtk=Python Exception <class 'ValueError'> Cannot find type VclBuilder::stringmap::_Rep_type: > std::__debug::map with 0 elements) > at /home/michi/development/git/libreoffice/vcl/source/window/builder.cxx:2552 > #14 0x00007ffff080a09b in VclBuilder::handleObject(vcl::Window*, xmlreader::XmlReader&) (this=0x5555604d5660, pParent=0x55555731a3c0, reader=...) at /home/michi/development/git/libreoffice/vcl/source/window/builder.cxx:3583 > #15 0x00007ffff08065d8 in VclBuilder::handleChild(vcl::Window*, xmlreader::XmlReader&) (this=0x5555604d5660, pParent=0x55555731a3c0, reader=...) at /home/michi/development/git/libreoffice/vcl/source/window/builder.cxx:2764 > #16 0x00007ffff07f4da7 in VclBuilder::VclBuilder(vcl::Window*, rtl::OUString const&, rtl::OUString const&, rtl::OString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, bool) > (this=0x5555604d5660, pParent=0x55555731a3c0, sUIDir="file:///home/michi/development/git/libreoffice/instdir/program/../share/config/soffice.cfg/", sUIFile="filter/ui/pdfoptionsdialog.ui", sID="", rFrame=empty uno::Reference, bLegacy=false) > at /home/michi/development/git/libreoffice/vcl/source/window/builder.cxx:418 > #17 0x00007ffff0f36f3b in SalInstanceBuilder::SalInstanceBuilder(vcl::Window*, rtl::OUString const&, rtl::OUString const&) > (this=0x55555f371b90, pParent=0x55555731a3c0, rUIRoot="file:///home/michi/development/git/libreoffice/instdir/program/../share/config/soffice.cfg/", rUIFile="filter/ui/pdfoptionsdialog.ui") > at /home/michi/development/git/libreoffice/vcl/source/app/salvtables.cxx:4004 > #18 0x00007ffff0f1ff80 in SalInstance::CreateBuilder(weld::Widget*, rtl::OUString const&, rtl::OUString const&) > (this=0x7fffe0005970, pParent=0x7fff1c1f1ce8, rUIRoot="file:///home/michi/development/git/libreoffice/instdir/program/../share/config/soffice.cfg/", rUIFile="filter/ui/pdfoptionsdialog.ui") > at /home/michi/development/git/libreoffice/vcl/source/app/salvtables.cxx:4257 > #19 0x00007fffe7366f96 in Qt5Instance::CreateBuilder(weld::Widget*, rtl::OUString const&, rtl::OUString const&) > (this=0x7fffe0005960, pParent=0x7fff1c1f1ce8, rUIRoot="file:///home/michi/development/git/libreoffice/instdir/program/../share/config/soffice.cfg/", rUIFile="filter/ui/pdfoptionsdialog.ui") at /home/michi/development/git/libreoffice/vcl/qt5/Qt5Instance.cxx:96 > #20 0x00007fffe736d0fd in QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2>, QtPrivate::List<weld::Widget*, rtl::OUString const&, rtl::OUString const&>, weld::Builder*, weld::Builder* (Qt5Instance::*)(weld::Widget*, rtl::OUString const&, rtl::OUString const&)>::call(weld::Builder* (Qt5Instance::*)(weld::Widget*, rtl::OUString const&, rtl::OUString const&), Qt5Instance*, void**) (f=&virtual Qt5Instance::CreateBuilder(weld::Widget*, rtl::OUString const&, rtl::OUString const&), o=0x7fffe0005960, arg=0x7fff577f7030) > at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:134 > #21 0x00007fffe736c56d in QtPrivate::FunctionPointer<weld::Builder* (Qt5Instance::*)(weld::Widget*, rtl::OUString const&, rtl::OUString const&)>::call<QtPrivate::List<weld::Widget*, rtl::OUString const&, rtl::OUString const&>, weld::Builder*>(weld::Builder* (Qt5Instance::*)(weld::Widget*, rtl::OUString const&, rtl::OUString const&), Qt5Instance*, void**) (f=&virtual Qt5Instance::CreateBuilder(weld::Widget*, rtl::OUString const&, rtl::OUString const&), o=0x7fffe0005960, arg=0x7fff577f7030) > at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:167 > #22 0x00007fffe736b836 in QtPrivate::QSlotObject<weld::Builder* (Qt5Instance::*)(weld::Widget*, rtl::OUString const&, rtl::OUString const&), QtPrivate::List<weld::Widget*, rtl::OUString const&, rtl::OUString const&>, weld::Builder*>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x5555556b11c0, r=0x7fffe0005960, a=0x7fff577f7030, ret=0x0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:396 > #23 0x00007fffe84e0e52 in QObject::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 > #24 0x00007fffe77cb491 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x555555649420, receiver=receiver@entry=0x7fffe0005960, e=e@entry=0x7fff1c265f00) at kernel/qapplication.cpp:3726 > #25 0x00007fffe77d2ac0 in QApplication::notify(QObject*, QEvent*) (this=0x555555649400, receiver=0x7fffe0005960, e=0x7fff1c265f00) at kernel/qapplication.cpp:3485 > #26 0x00007fffe84b7479 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 > #27 0x00007fffe84ba46b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 > #28 0x00007fffe8509a03 in () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 > #29 0x00007fffeafbbf2e in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 > #30 0x00007fffeafbc1c8 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 > #31 0x00007fffeafbc25c in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 > #32 0x00007fffe85090b4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 > #33 0x00007fffe58588d1 in () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 > #34 0x00007fffe736780d in Qt5Instance::ImplYield(bool, bool) (this=0x7fffe0005960, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/qt5/Qt5Instance.cxx:181 > #35 0x00007fffe736791d in Qt5Instance::DoYield(bool, bool) (this=0x7fffe0005960, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/qt5/Qt5Instance.cxx:192 > #36 0x00007ffff0f7b09f in ImplYield(bool, bool) (i_bWait=true, i_bAllEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:441 > #37 0x00007ffff0f7b5c1 in Application::Yield() () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:505 > #38 0x00007ffff0f7ae97 in Application::Execute() () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:422 > #39 0x00007ffff7d43216 in desktop::Desktop::Main() (this=0x7fffffffdae0) at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:1621 > #40 0x00007ffff0f929b5 in ImplSVMain() () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:203 > #41 0x00007ffff0f92ada in SVMain() () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:237 > #42 0x00007ffff7d9bddd in soffice_main() () at /home/michi/development/git/libreoffice/desktop/source/app/sofficemain.cxx:169 > #43 0x000055555555480b in sal_main () at /home/michi/development/git/libreoffice/desktop/source/app/main.c:48 > #44 0x000055555555480b in main (argc=<optimized out>, argv=<optimized out>) at /home/michi/development/git/libreoffice/desktop/source/app/main.c:47 > >Change-Id: I07186cc7d28b024d66c362f02f186350455d794f >--- > vcl/inc/qt5/Qt5Instance.hxx | 4 ++++ > vcl/qt5/Qt5Instance.cxx | 14 ++++++++++++++ > 2 files changed, 18 insertions(+) > >diff --git a/vcl/inc/qt5/Qt5Instance.hxx b/vcl/inc/qt5/Qt5Instance.hxx >index 91682bd87950..dbd6f2632aa0 100644 >--- a/vcl/inc/qt5/Qt5Instance.hxx >+++ b/vcl/inc/qt5/Qt5Instance.hxx >@@ -54,11 +54,15 @@ private Q_SLOTS: > Q_SIGNALS: > bool ImplYieldSignal(bool bWait, bool bHandleAllCurrentEvents); > std::unique_ptr<SalMenu> createMenuSignal(bool, Menu*); >+ weld::Builder* createBuilderSignal(weld::Widget* pParent, const OUString& rUIRoot, >+ const OUString& rUIFile); > > public: > explicit Qt5Instance(bool bUseCairo = false); > virtual ~Qt5Instance() override; > >+ virtual weld::Builder* CreateBuilder(weld::Widget* pParent, const OUString& rUIRoot, >+ const OUString& rUIFile) override; > virtual SalFrame* CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle) override; > virtual SalFrame* CreateChildFrame(SystemParentData* pParent, > SalFrameStyleFlags nStyle) override; >diff --git a/vcl/qt5/Qt5Instance.cxx b/vcl/qt5/Qt5Instance.cxx >index 31dfb83c25ba..6e944fe1c733 100644 >--- a/vcl/qt5/Qt5Instance.cxx >+++ b/vcl/qt5/Qt5Instance.cxx >@@ -67,6 +67,8 @@ Qt5Instance::Qt5Instance(bool bUseCairo) > Qt::BlockingQueuedConnection); > connect(this, &Qt5Instance::createMenuSignal, this, &Qt5Instance::CreateMenu, > Qt::BlockingQueuedConnection); >+ connect(this, &Qt5Instance::createBuilderSignal, this, &Qt5Instance::CreateBuilder, >+ Qt::BlockingQueuedConnection); > } > > Qt5Instance::~Qt5Instance() >@@ -83,6 +85,18 @@ SalFrame* Qt5Instance::CreateChildFrame(SystemParentData* /*pParent*/, SalFrameS > return new Qt5Frame(nullptr, nStyle, m_bUseCairo); > } > >+weld::Builder* Qt5Instance::CreateBuilder(weld::Widget* pParent, const OUString& rUIRoot, >+ const OUString& rUIFile) >+{ >+ if (!IsMainThread()) >+ { >+ SolarMutexReleaser aReleaser; >+ return Q_EMIT createBuilderSignal(pParent, rUIRoot, rUIFile); >+ } >+ >+ return SalInstance::CreateBuilder(pParent, rUIRoot, rUIFile); >+} >+ > SalFrame* Qt5Instance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nStyle) > { > assert(!pParent || dynamic_cast<Qt5Frame*>(pParent)); >-- >2.20.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 119856
:
149276
|
149494
| 149569