Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable ICU Breakiterator for Khmer #4

Closed
wants to merge 2 commits into from
Closed

Conversation

sbbic
Copy link

@sbbic sbbic commented Aug 26, 2015

Enabling the ICU Breakiterator causes Khmer spelling checkers to be worthless as well as wrecks havoc on various minority languages that use the Khmer script. See this https://bugs.documentfoundation.org/show_bug.cgi?id=52020
this: https://bugs.freedesktop.org/show_bug.cgi?id=59448
and this: https://bugs.documentfoundation.org/show_bug.cgi?id=59447&redirected_from=fdo
It would be great if this change would be reflected in the master branch, but I am doing this personally for my own build to release on sbbic.org since it has been years without resolution and many Khmer users and minority language users have been unable to use LibreOffice because of this. LibreOffice is miles beyond OpenOffice now, and I would rather use LibreOffice.

Enabling the ICU Breakiterator causes Khmer spelling checkers to be worthless as well as wrecks havoc on various minority languages that use the Khmer script. See this https://bugs.documentfoundation.org/show_bug.cgi?id=52020
this: https://bugs.freedesktop.org/show_bug.cgi?id=59448
and this: https://bugs.documentfoundation.org/show_bug.cgi?id=59447&redirected_from=fdo
It would be great if this change would be reflected in the master branch, but I am doing this personally for my own build to release on sbbic.org since it has been years without resolution and many Khmer users and minority language users have been unable to use LibreOffice because of this. LibreOffice is miles beyond OpenOffice now, and I would rather use LibreOffice.
This is one of two changes in the code needed to disable the ICU breakiterator for Khmer.
Enabling the ICU Breakiterator causes Khmer spelling checkers to be worthless as well as wrecks havoc on various minority languages that use the Khmer script. See this https://bugs.documentfoundation.org/show_bug.cgi?id=52020
this: https://bugs.freedesktop.org/show_bug.cgi?id=59448
and this: https://bugs.documentfoundation.org/show_bug.cgi?id=59447&redirected_from=fdo
It would be great if this change would be reflected in the master branch, but I am doing this personally for my own build to release on sbbic.org since it has been years without resolution and many Khmer users and minority language users have been unable to use LibreOffice because of this. LibreOffice is miles beyond OpenOffice now, and I would rather use LibreOffice.
This is the second of two changes in the code needed to disable the ICU breakiterator for Khmer.
@sbbic sbbic closed this Aug 26, 2015
@sbbic sbbic reopened this Aug 26, 2015
@sbbic
Copy link
Author

sbbic commented Aug 26, 2015

Looks like interaction here actually isn't possible

@sbbic sbbic closed this Aug 26, 2015
ghost pushed a commit that referenced this pull request Nov 14, 2015
Change-Id: I57addc1d7d948f7e614526f24cf32181313bda1e
ghost pushed a commit that referenced this pull request Nov 16, 2015
Change-Id: I57addc1d7d948f7e614526f24cf32181313bda1e
ghost pushed a commit that referenced this pull request Nov 30, 2015
Change-Id: I57addc1d7d948f7e614526f24cf32181313bda1e
ghost pushed a commit that referenced this pull request Dec 4, 2015
Change-Id: I57addc1d7d948f7e614526f24cf32181313bda1e
ghost pushed a commit that referenced this pull request Dec 22, 2015
...as reported by UBSan in CppunitTest_sw_filters_test:

> /sw/inc/format.hxx:110:73: runtime error: downcast of address 0x2af2d8024000 which does not point to an object of type 'const SwFormat'
> 0x2af2d8024000: note: object is of type 'SwModify'
>  f2 2a 00 00  70 33 2f 87 f2 2a 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
>               ^~~~~~~~~~~~~~~~~~~~~~~
>               vptr for 'SwModify'
>     #0 0x2af27bbe8083 in SwFormat::DerivedFrom() const /sw/inc/format.hxx:110:73
>     #1 0x2af27bbc8401 in SwFormat::Modify(SfxPoolItem const*, SfxPoolItem const*) /sw/source/core/attr/format.cxx:282:21
>     #2 0x2af27e9934a3 in SwFrameFormat::Modify(SfxPoolItem const*, SfxPoolItem const*) /sw/source/core/layout/atrfrm.cxx:2597:5
>     #3 0x2af27f8207d5 in SwTableBoxFormat::Modify(SfxPoolItem const*, SfxPoolItem const*) /sw/source/core/table/swtable.cxx:2353:5
>     #4 0x2af27bb9cd52 in SwClient::SwClientNotify(SwModify const&, SfxHint const&) /sw/source/core/attr/calbck.cxx:68:9
>     #5 0x2af27bba4bee in SwModify::CallSwClientNotify(SfxHint const&) const /sw/inc/calbck.hxx:349:9
>     #6 0x2af27bba290b in SwModify::ModifyBroadcast(SfxPoolItem const*, SfxPoolItem const*) /sw/inc/calbck.hxx:173:11
>     #7 0x2af27bb9fbc0 in SwModify::NotifyClients(SfxPoolItem const*, SfxPoolItem const*) /sw/source/core/attr/calbck.cxx:143:5
>     #8 0x2af27bb9e0e7 in SwModify::~SwModify() /sw/source/core/attr/calbck.cxx:101:5
>     #9 0x2af27bbc6bb4 in SwFormat::~SwFormat() /sw/source/core/attr/format.cxx:251:1
>     #10 0x2af27e98fdf3 in SwFrameFormat::~SwFrameFormat() /sw/source/core/layout/atrfrm.cxx:2534:1
>     #11 0x2af27e9900af in SwFrameFormat::~SwFrameFormat() /sw/source/core/layout/atrfrm.cxx:2525:1
>     #12 0x2af27cb1646e in SwDoc::~SwDoc() /sw/source/core/doc/docnew.cxx:592:5
>     #13 0x2af27cb1993f in SwDoc::~SwDoc() /sw/source/core/doc/docnew.cxx:385:1
>     #14 0x2af282d45bb0 in SwDocShell::RemoveLink() /sw/source/uibase/app/docshini.cxx:472:13
>     #15 0x2af282d43596 in SwDocShell::~SwDocShell() /sw/source/uibase/app/docshini.cxx:394:5
>     #16 0x2af282d45f46 in SwDocShell::~SwDocShell() /sw/source/uibase/app/docshini.cxx:384:1
>     #17 0x2af282d4637f in SwDocShell::~SwDocShell() /sw/source/uibase/app/docshini.cxx:384:1
>     #18 0x2af282d464c6 in virtual thunk to SwDocShell::~SwDocShell() /sw/source/uibase/app/docshini.cxx:383:13
>     #19 0x2af27420aade in SvRefBase::ReleaseRef() /include/tools/ref.hxx:138:29
>     #20 0x2af27420195a in tools::SvRef<SwDocShell>::~SvRef() /include/tools/ref.hxx:49:30
>     #21 0x2af2741f6663 in SwFiltersTest::filter(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags, SotClipboardFormatId, unsigned int, bool) /sw/qa/core/filters-test.cxx:130:1
>     #22 0x2af2741f368e in SwFiltersTest::load(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags, SotClipboardFormatId, unsigned int) /sw/qa/core/filters-test.cxx:69:12
>     #23 0x2af29a05d1fb in test::FiltersTest::recursiveScan(test::filterStatus, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags, SotClipboardFormatId, unsigned int, bool) /unotest/source/cpp/filters-test.cxx:129:20
>     #24 0x2af29a060741 in test::FiltersTest::testDir(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags, SotClipboardFormatId, unsigned int, bool) /unotest/source/cpp/filters-test.cxx:154:5
>     #25 0x2af2741fa8fa in SwFiltersTest::testCVEs() /sw/qa/core/filters-test.cxx:174:5
>     #26 0x2af27421631d in CppUnit::TestCaller<SwFiltersTest>::runTest() /workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:166:6
>     #27 0x2af23644866d in CppUnit::TestCaseMethodFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5
>     #28 0x2af24e66d0d6 in (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /test/source/vclbootstrapprotector.cxx:57:14
>     #29 0x2af236403bb7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:12
>     #30 0x2af2458a1926 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:88:12
>     #31 0x2af236403bb7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:12
>     #32 0x2af241b89d58 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:63:16
>     #33 0x2af236403bb7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:12
>     #34 0x2af23638b90c in CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12
>     #35 0x2af236403bb7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:12
>     #36 0x2af2363ffb61 in CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:77:18
>     #37 0x2af2364c91c5 in CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::string const&) /workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:181:10
>     #38 0x2af2364451c6 in CppUnit::TestCase::run(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:5
>     #39 0x2af23644bc03 in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:5
>     #40 0x2af23644ab6d in CppUnit::TestComposite::run(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3
>     #41 0x2af23644bc03 in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:5
>     #42 0x2af23644ab6d in CppUnit::TestComposite::run(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3
>     #43 0x2af2365078c6 in CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:5
>     #44 0x2af2364c7049 in CppUnit::TestResult::runTest(CppUnit::Test*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:148:3
>     #45 0x2af236508e86 in CppUnit::TestRunner::run(CppUnit::TestResult&, std::string const&) /workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:3
>     #46 0x501b3c in (anonymous namespace)::ProtectedFixtureFunctor::run() const /sal/cppunittester/cppunittester.cxx:281:13
>     #47 0x4fc866 in sal_main() /sal/cppunittester/cppunittester.cxx:431:14
>     #48 0x4fa822 in main /sal/cppunittester/cppunittester.cxx:338:1
>     #49 0x2af2380d2af4 in __libc_start_main (/lib64/libc.so.6+0x21af4)
>     #50 0x4323c4 in _start (/workdir/LinkTarget/Executable/cppunittester+0x4323c4)

Change-Id: Ic1ff73d3184ad2cd97555b7a45fb205e9ec84ac6
ghost pushed a commit that referenced this pull request Feb 5, 2016
(5abe0ab).
6884f53 "default B2DRange ctor doesn't do what
I thought it did" had reverted it, but the fix there is apparently not enough
yet, <http://ci.libreoffice.org/job/lo_ubsan/165/console> still fails with

> /vcl/headless/svpgdi.cxx:1274:28: runtime error: value 1.79769e+308 is outside the range of representable values of type 'int'
>  #0 0x2b826285b4d3 in SvpSalGraphics::releaseCairoContext(_cairo*, bool, basegfx::B2DRange const&) const /vcl/headless/svpgdi.cxx:1274:28
>  #1 0x2b8262868c3b in SvpSalGraphics::drawPolyPolygon(basegfx::B2DPolyPolygon const&) /vcl/headless/svpgdi.cxx:899:5
>  #2 0x2b826286c6f6 in SvpSalGraphics::drawPolygon(unsigned int, SalPoint const*) /vcl/headless/svpgdi.cxx:551:5
>  #3 0x2b826179915c in SalGraphics::DrawPolygon(unsigned int, SalPoint const*, OutputDevice const*) /vcl/source/gdi/salgdilayout.cxx:419:9
>  #4 0x2b82604d6f5a in OutputDevice::DrawEllipse(Rectangle const&) /vcl/source/outdev/curvedshapes.cxx:67:13
>  #5 0x2b8261f02c4d in CircType::Draw(OutputDevice&) /vcl/source/filter/sgvmain.cxx:596:13
>  #6 0x2b8261f0ddc6 in DrawObjkList(SvStream&, OutputDevice&) /vcl/source/filter/sgvmain.cxx:698:100
>  #7 0x2b8261f1462a in SgfFilterSDrw(SvStream&, SgfHeader&, SgfEntry&, GDIMetaFile&) /vcl/source/filter/sgvmain.cxx:820:26
>  #8 0x2b8261f16726 in SgfSDrwFilter(SvStream&, GDIMetaFile&, INetURLObject const&) /vcl/source/filter/sgvmain.cxx:858:22
>  #9 0x2b8261e48f33 in GraphicFilter::ImportGraphic(Graphic&, rtl::OUString const&, SvStream&, unsigned short, unsigned short*, GraphicFilterImportFlags, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>*, WMF_EXTERNALHEADER*) /vcl/source/filter/graphicfilter.cxx:1670:30
>  #10 0x2b8261e3c85a in GraphicFilter::ImportGraphic(Graphic&, rtl::OUString const&, SvStream&, unsigned short, unsigned short*, GraphicFilterImportFlags, WMF_EXTERNALHEADER*) /vcl/source/filter/graphicfilter.cxx:1314:12
>  #11 0x2b827bb9fee3 in VclFiltersTest::load(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags, SotClipboardFormatId, unsigned int) /vcl/qa/cppunit/graphicfilter/filters-test.cxx:60:12
[...]

Change-Id: Icb8f52414f57f08334fc501842b3f75c1d3642eb
ghost pushed a commit that referenced this pull request Apr 4, 2016
Change-Id: I7c96181399f4d7e62d4aceca404b22d68f903513
Reviewed-on: https://gerrit.libreoffice.org/23754
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
ghost pushed a commit that referenced this pull request Apr 6, 2016
At least the checkTitleNumbers(complex.XTitle.CheckXTitle) in
JunitTest_framework_complex triggered the UBSan failure

> sw/source/uibase/uiview/pview.cxx:1139:25: runtime error: downcast of address 0x61300047e500 which does not point to an object of type 'SwEditShell'
> 0x61300047e500: note: object is of type 'SwViewShell'
>  d3 03 80 0d  10 f6 8e e0 fa 2a 00 00  80 b2 1b 00 90 61 00 00  80 b2 1b 00 90 61 00 00  00 00 00 00
>               ^~~~~~~~~~~~~~~~~~~~~~~
>               vptr for 'SwViewShell'
>     #0 0x2afadd5b9594 in SwPagePreview::Init() sw/source/uibase/uiview/pview.cxx:1139:25
>     #1 0x2afadd5c0e29 in SwPagePreview::SwPagePreview(SfxViewFrame*, SfxViewShell*) sw/source/uibase/uiview/pview.cxx:1251:5
>     #2 0x2afadd58c7a5 in SwPagePreview::CreateInstance(SfxViewFrame*, SfxViewShell*) sw/source/uibase/uiview/pview.cxx:85:1
>     #3 0x2afa4a476c8c in SfxViewFactory::CreateInstance(SfxViewFrame*, SfxViewShell*) sfx2/source/view/viewfac.cxx:28:12
>     #4 0x2afa49b677a5 in SfxBaseModel::createViewController(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) sfx2/source/doc/sfxbasemodel.cxx:4255:32
>     #5 0x2afa49b6ac45 in non-virtual thunk to SfxBaseModel::createViewController(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) sfx2/source/doc/sfxbasemodel.cxx:4217:57
>     #6 0x2afa4a38bd08 in (anonymous namespace)::SfxFrameLoader_Impl::impl_createDocumentView(com::sun::star::uno::Reference<com::sun::star::frame::XModel2> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, comphelper::NamedValueCollection const&, rtl::OUString const&) sfx2/source/view/frmload.cxx:600:50
>     #7 0x2afa4a37f627 in (anonymous namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) sfx2/source/view/frmload.cxx:728:13
>     #8 0x2afac3723d1a in framework::LoadEnv::impl_loadContent() framework/source/loadenv/loadenv.cxx:1117:24
>     #9 0x2afac3707b02 in framework::LoadEnv::startLoading() framework/source/loadenv/loadenv.cxx:379:20
>     #10 0x2afac37007d5 in framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/loadenv/loadenv.cxx:165:9
>     #11 0x2afac396848d in (anonymous namespace)::Frame::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/services/frame.cxx:608:12
>     #12 0x2afac39a369a in non-virtual thunk to (anonymous namespace)::Frame::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/services/frame.cxx:587:62
>     #13 0x2afa4a4cdd1a in SfxViewFrame::LoadViewIntoFrame_Impl(SfxObjectShell const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, unsigned short, bool) sfx2/source/view/viewfrm.cxx:1897:5
>     #14 0x2afa4a501df3 in SfxViewFrame::SwitchToViewShell_Impl(unsigned short, bool) sfx2/source/view/viewfrm.cxx:2096:32
>     #15 0x2afa4a4a7491 in SfxViewFrame::ExecView_Impl(SfxRequest&) sfx2/source/view/viewfrm.cxx:2181:29
>     #16 0x2afa4a4a5d16 in SfxStubSfxViewFrameExecView_Impl(SfxShell*, SfxRequest&) workdir/SdiTarget/sfx2/sdi/sfxslots.hxx:709:1
>     #17 0x2afa483dfe06 in SfxShell::CallExec(void (*)(SfxShell*, SfxRequest&), SfxRequest&) include/sfx2/shell.hxx:204:35
>     #18 0x2afa48392c56 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) sfx2/source/control/dispatch.cxx:262:13
>     #19 0x2afa483bf830 in SfxDispatcher::PostMsgHandler(SfxRequest*) sfx2/source/control/dispatch.cxx:1085:17
>     #20 0x2afa48398545 in SfxDispatcher::LinkStubPostMsgHandler(void*, SfxRequest*) sfx2/source/control/dispatch.cxx:1065:1
>     #21 0x2afa49d320a7 in Link<SfxRequest*, void>::Call(SfxRequest*) const include/tools/link.hxx:84:45
>     #22 0x2afa49d31b50 in SfxHintPoster::DoEvent_Impl(void*) sfx2/source/notify/hintpost.cxx:44:5
>     #23 0x2afa49d319e5 in SfxHintPoster::LinkStubDoEvent_Impl(void*, void*) sfx2/source/notify/hintpost.cxx:42:1
>     #24 0x2afa69f03327 in Link<void*, void>::Call(void*) const include/tools/link.hxx:84:45
>     #25 0x2afa69eec39f in ImplHandleUserEvent(ImplSVEvent*) vcl/source/window/winproc.cxx:1959:13
>     #26 0x2afa69ed7183 in ImplWindowFrameProc(vcl::Window*, unsigned short, void const*) vcl/source/window/winproc.cxx:2527:13
>     #27 0x2afa6cf9a0f9 in SalFrame::CallCallback(unsigned short, void const*) const vcl/inc/salframe.hxx:273:33
>     #28 0x2afa6cff0a85 in SvpSalInstance::DoYield(bool, bool, unsigned long) vcl/headless/svpinst.cxx:293:17
>     #29 0x2afa6c484a64 in ImplYield(bool, bool, unsigned long) vcl/source/app/svapp.cxx:509:9
>     #30 0x2afa6c45ed83 in Application::Yield() vcl/source/app/svapp.cxx:553:5
>     #31 0x2afa6c45eb1a in Application::Execute() vcl/source/app/svapp.cxx:473:9
>     #32 0x2afa38280294 in desktop::Desktop::DoExecute() desktop/source/app/app.cxx:1322:5
>     #33 0x2afa3828ada3 in desktop::Desktop::Main() desktop/source/app/app.cxx:1647:17
>     #34 0x2afa6c4de08e in ImplSVMain() vcl/source/app/svmain.cxx:172:19
>     #35 0x2afa6c4eb776 in SVMain() vcl/source/app/svmain.cxx:210:16
>     #36 0x2afa384c5d01 in soffice_main desktop/source/app/sofficemain.cxx:135:12
>     #37 0x4f0f0c in sal_main desktop/source/app/main.c:48:15
>     #38 0x4f0ee6 in main desktop/source/app/main.c:47:1
>     #39 0x2afa39e4c57f in __libc_start_main (/lib64/libc.so.6+0x2057f)
>     #40 0x418f48 in _start (instdir/program/soffice.bin+0x418f48)

Change-Id: I4a32bcf4dea4616d4726c28ba01adba9083ad1c6
ghost pushed a commit that referenced this pull request Apr 6, 2016
At least JunitTest_framework_copmlex triggered the UBSan failure

> vcl/headless/svpgdi.cxx:924:46: runtime error: division by zero
>     #0 0x2b7114500e3b in renderSource(_cairo*, SalTwoRect const&, _cairo_surface*) vcl/headless/svpgdi.cxx:924:46
>     #1 0x2b711450074c in SvpSalGraphics::copySource(SalTwoRect const&, _cairo_surface*) vcl/headless/svpgdi.cxx:937:33
>     #2 0x2b7114501f37 in SvpSalGraphics::copyBits(SalTwoRect const&, SalGraphics*) vcl/headless/svpgdi.cxx:980:5
>     #3 0x2b7113461871 in SalGraphics::CopyBits(SalTwoRect const&, SalGraphics*, OutputDevice const*, OutputDevice const*) vcl/source/gdi/salgdilayout.cxx:529:9
>     #4 0x2b711359a1fc in VirtualDevice::InnerImplSetOutputSizePixel(Size const&, bool, unsigned char*) vcl/source/gdi/virdev.cxx:352:17
>     #5 0x2b711359bef6 in VirtualDevice::ImplSetOutputSizePixel(Size const&, bool, unsigned char*) vcl/source/gdi/virdev.cxx:391:9
>     #6 0x2b711359edc0 in VirtualDevice::SetOutputSizePixel(Size const&, bool) vcl/source/gdi/virdev.cxx:437:12
>     #7 0x2b70fa4b6f3f in sdr::overlay::OverlayManagerBuffered::ImpPrepareBufferDevice() svx/source/sdr/overlay/overlaymanagerbuffered.cxx:45:17
>     #8 0x2b70fa4c0c2c in sdr::overlay::OverlayManagerBuffered::ImpSaveBackground(vcl::Region const&, OutputDevice*) svx/source/sdr/overlay/overlaymanagerbuffered.cxx:159:13
>     #9 0x2b70fa4cecab in sdr::overlay::OverlayManagerBuffered::completeRedraw(vcl::Region const&, OutputDevice*) const svx/source/sdr/overlay/overlaymanagerbuffered.cxx:414:17
>     #10 0x2b70fa787fc4 in SdrPaintWindow::DrawOverlay(vcl::Region const&) svx/source/svdraw/sdrpaintwindow.cxx:334:13
>     #11 0x2b70fb9d388f in SdrPaintView::EndCompleteRedraw(SdrPaintWindow&, bool) svx/source/svdraw/svdpntv.cxx:753:9
>     #12 0x2b70fd77da81 in FmFormView::EndCompleteRedraw(SdrPaintWindow&, bool) svx/source/form/fmview.cxx:474:5
>     #13 0x2b70fb9d64a0 in SdrPaintView::EndDrawLayers(SdrPaintWindow&, bool) svx/source/svdraw/svdpntv.cxx:789:5
>     #14 0x2b7182085fe9 in SwViewShell::DLPostPaint2(bool) sw/source/core/view/viewsh.cxx:240:9
>     #15 0x2b71820d94c5 in SwViewShell::Paint(OutputDevice&, Rectangle const&) sw/source/core/view/viewsh.cxx:1797:21
>     #16 0x2b717c26e635 in SwCursorShell::Paint(OutputDevice&, Rectangle const&) sw/source/core/crsr/crsrsh.cxx:1273:5
>     #17 0x2b71839ae182 in SwEditWin::Paint(OutputDevice&, Rectangle const&) sw/source/uibase/docvw/edtwin2.cxx:475:9
>     #18 0x2b71100ee7e0 in PaintHelper::DoPaint(vcl::Region const*) vcl/source/window/paint.cxx:309:13
>     #19 0x2b71100ff14a in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:611:9
>     #20 0x2b71100fb252 in PaintHelper::~PaintHelper() vcl/source/window/paint.cxx:549:17
>     #21 0x2b71100ff463 in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:614:1
>     #22 0x2b71100fb252 in PaintHelper::~PaintHelper() vcl/source/window/paint.cxx:549:17
>     #23 0x2b71100ff463 in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:614:1
>     #24 0x2b71100fb252 in PaintHelper::~PaintHelper() vcl/source/window/paint.cxx:549:17
>     #25 0x2b71100ff463 in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:614:1
>     #26 0x2b71100fb252 in PaintHelper::~PaintHelper() vcl/source/window/paint.cxx:549:17
>     #27 0x2b71100ff463 in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:614:1
>     #28 0x2b71100fb252 in PaintHelper::~PaintHelper() vcl/source/window/paint.cxx:549:17
>     #29 0x2b71100ff463 in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:614:1
>     #30 0x2b7110100536 in vcl::Window::ImplCallOverlapPaint() vcl/source/window/paint.cxx:635:9
>     #31 0x2b7110102811 in vcl::Window::ImplHandlePaintHdl(Idle*) vcl/source/window/paint.cxx:667:9
>     #32 0x2b7110100ee7 in vcl::Window::LinkStubImplHandlePaintHdl(void*, Idle*) vcl/source/window/paint.cxx:645:1
>     #33 0x2b71101446d7 in Link<Idle*, void>::Call(Idle*) const include/tools/link.hxx:84:45
>     #34 0x2b711380dff9 in Idle::Invoke() vcl/source/app/idle.cxx:25:5
>     #35 0x2b711385011b in ImplSchedulerData::Invoke() vcl/source/app/scheduler.cxx:45:5
>     #36 0x2b71138535e5 in Scheduler::ProcessTaskScheduling(bool) vcl/source/app/scheduler.cxx:177:9
>     #37 0x2b71139a90d4 in ImplYield(bool, bool, unsigned long) vcl/source/app/svapp.cxx:521:5
>     #38 0x2b7113982d83 in Application::Yield() vcl/source/app/svapp.cxx:553:5
>     #39 0x2b7113982b1a in Application::Execute() vcl/source/app/svapp.cxx:473:9
>     #40 0x2b70df7a4294 in desktop::Desktop::DoExecute() desktop/source/app/app.cxx:1322:5
>     #41 0x2b70df7aeda3 in desktop::Desktop::Main() desktop/source/app/app.cxx:1647:17
>     #42 0x2b7113a0208e in ImplSVMain() vcl/source/app/svmain.cxx:172:19
>     #43 0x2b7113a0f776 in SVMain() vcl/source/app/svmain.cxx:210:16
>     #44 0x2b70df9e9d01 in soffice_main desktop/source/app/sofficemain.cxx:135:12
>     #45 0x4f0f0c in sal_main desktop/source/app/main.c:48:15
>     #46 0x4f0ee6 in main desktop/source/app/main.c:47:1
>     #47 0x2b70e137057f in __libc_start_main (/lib64/libc.so.6+0x2057f)
>     #48 0x418f48 in _start (instdir/program/soffice.bin+0x418f48)

Change-Id: I2bc4abe48c129e006582b9870229f44d2d2bb1ed
ghost pushed a commit that referenced this pull request Apr 6, 2016
...as happened at least once in JunitTest_framework_copmlex with

> Thread 27 (Thread 0x2ac7e60d1700 (LWP 30831)):
> #0  0x00002ac7b781c89d in __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
> #1  0x00002ac7b7816a36 in __GI___pthread_mutex_lock (mutex=0x1ce1720) at ../nptl/pthread_mutex_lock.c:116
> #2  0x00002ac7b6e6b257 in osl_acquireMutex(oslMutexImpl*) (pMutex=0x1ce1720) at sal/osl/unx/mutex.cxx:99
> #3  0x00002ac7bf928098 in osl::Mutex::acquire() (this=0x1ce16f8) at include/osl/mutex.hxx:56
> #4  0x00002ac7c022d123 in SalYieldMutex::acquire() (this=0x1ce16f0) at vcl/unx/generic/app/geninst.cxx:54
> #5  0x00002ac7e48442ab in SolarMutexGuard::SolarMutexGuard() (this=0x2ac7e60cedb0) at include/vcl/svapp.hxx:1476
> #6  0x00002ac7e4aa7747 in framework::AddonsToolBarWrapper::dispose() (this=0x2ac7e7fbcd50) at framework/source/uielement/addonstoolbarwrapper.cxx:73
> #7  0x00002ac7e4947503 in framework::ToolbarLayoutManager::destroyToolbars() (this=0x2ac7dbf88018) at framework/source/layoutmanager/toolbarlayoutmanager.cxx:654
> #8  0x00002ac7e494364c in framework::ToolbarLayoutManager::reset() (this=0x2ac7dbf88018) at framework/source/layoutmanager/toolbarlayoutmanager.cxx:363
> #9  0x00002ac7e492a1d6 in framework::LayoutManager::implts_reset(bool) (this=0x2ac7dbfbcc40, bAttached=false) at framework/source/layoutmanager/layoutmanager.cxx:414
> #10 0x00002ac7e493a404 in framework::LayoutManager::frameAction(com::sun::star::frame::FrameActionEvent const&) (this=0x2ac7dbfbcc40, aEvent=...) at framework/source/layoutmanager/layoutmanager.cxx:2807
> #11 0x00002ac7e49e57dc in (anonymous namespace)::Frame::implts_sendFrameActionEvent(com::sun::star::frame::FrameAction const&) (this=0x2ac7e7fb2050, aAction=@0x2ac7e60cf73c: com::sun::star::frame::FrameAction_COMPONENT_DETACHING) at framework/source/services/frame.cxx:2845
> #12 0x00002ac7e49ded07 in (anonymous namespace)::Frame::setComponent(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, com::sun::star::uno::Reference<com::sun::star::frame::XController> const&) (this=0x2ac7e7fb2050, xComponentWindow=empty uno::Reference, xController=empty uno::Reference) at framework/source/services/frame.cxx:1509
> #13 0x00002ac7e49e293b in (anonymous namespace)::Frame::close(unsigned char) (this=0x2ac7e7fb2050, bDeliverOwnership=0 '\000') at framework/source/services/frame.cxx:1770
> #14 0x00002ac7e49ce635 in framework::Desktop::impl_closeFrames(bool) (this=0x2ac7daf2f430, bAllowUI=true) at framework/source/services/desktop.cxx:1674
> #15 0x00002ac7e49cd6ee in framework::Desktop::terminate() (this=0x2ac7daf2f430) at framework/source/services/desktop.cxx:238
> #16 0x00002ac7da45deb4 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) (pThis=0x2ac7daf2f4a0, nVtableIndex=3, pRegisterReturn=0x2ac7f41b36d0, pReturnTypeRef=0x1ce84c0, bSimpleReturn=true, pStack=0x2ac7e60cfd00, nStack=0, pGPR=0x2ac7e60cffc0, pFPR=0x2ac7e60cff80) at bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:77
> #17 0x00002ac7da45cccf in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int, _typelib_MethodParameter*, void*, void**, _uno_Any**) (pThis=0x2ac7f40f0ea0, aVtableSlot=..., pReturnTypeRef=0x1ce84c0, nParams=0, pParams=0x0, pUnoReturn=0x2ac7f41b36d0, pUnoArgs=0x0, ppUnoExc=0x2ac7e60d0560) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:241
> #18 0x00002ac7da45c459 in bridges::cpp_uno::shared::unoInterfaceProxyDispatch(_uno_Interface*, _typelib_TypeDescription const*, void*, void**, _uno_Any**) (pUnoI=0x2ac7f40f0ea0, pMemberDescr=0x2ac7f00027c0, pReturn=0x2ac7f41b36d0, pArgs=0x0, ppException=0x2ac7e60d0560) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:430
> #19 0x00002ac7e40401ea in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) const (this=0x2ac7f0002870, returnValue=0x2ac7e60d09d0, outArguments=0x2ac7e60d0998) at binaryurp/source/incomingrequest.cxx:239
> #20 0x00002ac7e403e88b in binaryurp::IncomingRequest::execute() const (this=0x2ac7f0002870) at binaryurp/source/incomingrequest.cxx:73
> #21 0x00002ac7e406927d in request(void*) (pThreadSpecificData=0x2ac7f0002870) at binaryurp/source/reader.cxx:83
> #22 0x00002ac7b998953b in cppu_threadpool::JobQueue::enter(long, bool) (this=0x2ac7f0002d30, nDisposeId=47038213394384, bReturnWhenNoJob=true) at cppu/source/threadpool/jobqueue.cxx:107
> #23 0x00002ac7b998dc25 in cppu_threadpool::ORequestThread::run() (this=0x2ac7f0000fd0) at cppu/source/threadpool/thread.cxx:165
> #24 0x00002ac7b998fb0e in threadFunc(void*) (param=0x2ac7f0000fe0) at include/osl/thread.hxx:185
> #25 0x00002ac7b6e8190b in osl_thread_start_Impl(void*) (pData=0x2ac7f0001020) at sal/osl/unx/thread.cxx:240
> #26 0x00002ac7b781460a in start_thread (arg=0x2ac7e60d1700) at pthread_create.c:334
> #27 0x00002ac7b754ea4d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

> Thread 1 (Thread 0x2ac7b6cf7340 (LWP 30697)):
> #0  0x00002ac7b7819b10 in pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
> #1  0x00002ac7b6e5b316 in osl_waitCondition(oslCondition, TimeValue const*) (Condition=0x2ac7f41e10b0, pTimeout=0x0) at sal/osl/unx/conditn.cxx:228
> #2  0x00002ac7cca51370 in osl::Condition::wait(TimeValue const*) (this=0x2ac7e7fb20d8, pTimeout=0x0) at include/osl/conditn.hxx:84
> #3  0x00002ac7cca50f90 in framework::Gate::wait() (this=0x2ac7e7fb20d0) at framework/inc/threadhelp/gate.hxx:123
> #4  0x00002ac7cca50708 in framework::TransactionManager::setWorkingMode(framework::EWorkingMode) (this=0x2ac7e7fb20c8, eMode=framework::E_BEFORECLOSE) at framework/source/fwi/threadhelp/transactionmanager.cxx:98
> #5  0x00002ac7e49dfc3c in (anonymous namespace)::Frame::dispose() (this=0x2ac7e7fb2050) at framework/source/services/frame.cxx:2008
> #6  0x00002ac7e49e2cd3 in (anonymous namespace)::Frame::close(unsigned char) (this=0x2ac7e7fb2050, bDeliverOwnership=1 '\001') at framework/source/services/frame.cxx:1801
> #7  0x00002ac7bbbe25fe in SfxViewFrame::Exec_Impl(SfxRequest&) (this=0x2ac7f4691cd0, rReq=...) at sfx2/source/view/viewfrm2.cxx:260
> #8  0x00002ac7bbbcd658 in SfxStubSfxViewFrameExec_Impl(SfxShell*, SfxRequest&) (pShell=0x2ac7f4691cd0, rReq=...) at workdir/SdiTarget/sfx2/sdi/sfxslots.hxx:706
> #9  0x00002ac7bb71f792 in SfxShell::CallExec(void (*)(SfxShell*, SfxRequest&), SfxRequest&) (this=0x2ac7f4691cd0, pFunc=0x2ac7bbbcd630 <SfxStubSfxViewFrameExec_Impl(SfxShell*, SfxRequest&)>, rReq=...) at include/sfx2/shell.hxx:204
> #10 0x00002ac7bb715e41 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) (this=0x2ac7f40fe8e0, rShell=..., rSlot=..., rReq=..., bRecord=true) at sfx2/source/control/dispatch.cxx:262
> #11 0x00002ac7bb71b6fd in SfxDispatcher::PostMsgHandler(SfxRequest*) (this=0x2ac7f40fe8e0, pReq=0x2ac88c000cf0) at sfx2/source/control/dispatch.cxx:1085
> #12 0x00002ac7bb716698 in SfxDispatcher::LinkStubPostMsgHandler(void*, SfxRequest*) (instance=0x2ac7f40fe8e0, data=0x2ac88c000cf0) at sfx2/source/control/dispatch.cxx:1065
> #13 0x00002ac7bbabb3f8 in Link<SfxRequest*, void>::Call(SfxRequest*) const (this=0x2ac7f48361f0, data=0x2ac88c000cf0) at include/tools/link.hxx:84
> #14 0x00002ac7bbabb37b in SfxHintPoster::DoEvent_Impl(void*) (this=0x2ac7f48361e0, pPostedHint=0x2ac88c000cf0) at sfx2/source/notify/hintpost.cxx:44
> #15 0x00002ac7bbabb348 in SfxHintPoster::LinkStubDoEvent_Impl(void*, void*) (instance=0x2ac7f48361e0, data=0x2ac88c000cf0) at sfx2/source/notify/hintpost.cxx:42
> #16 0x00002ac7bfaba968 in Link<void*, void>::Call(void*) const (this=0x2ac88c00b008, data=0x2ac88c000cf0) at include/tools/link.hxx:84
> #17 0x00002ac7bfab7adc in ImplHandleUserEvent(ImplSVEvent*) (pSVEvent=0x2ac88c00b000) at vcl/source/window/winproc.cxx:1956
> #18 0x00002ac7bfab4db7 in ImplWindowFrameProc(vcl::Window*, unsigned short, void const*) (_pWindow=0x2a43020, nEvent=22, pEvent=0x2ac88c00b000) at vcl/source/window/winproc.cxx:2524
> #19 0x00002ac7c01278c9 in SalFrame::CallCallback(unsigned short, void const*) const (this=0x2a43890, nEvent=22, pEvent=0x2ac88c00b000) at vcl/inc/salframe.hxx:273
> #20 0x00002ac7c0133999 in SvpSalInstance::DoYield(bool, bool, unsigned long) (this=0x1ce1640, bWait=false, bHandleAllCurrentEvents=false, nReleased=0) at vcl/headless/svpinst.cxx:293
> #21 0x00002ac7bffa63b5 in ImplYield(bool, bool, unsigned long) (i_bWait=false, i_bAllEvents=false, nReleased=0) at vcl/source/app/svapp.cxx:509
> #22 0x00002ac7bffa1148 in Application::Yield() () at vcl/source/app/svapp.cxx:553
> #23 0x00002ac7bffa10d3 in Application::Execute() () at vcl/source/app/svapp.cxx:473
> #24 0x00002ac7b70ee229 in desktop::Desktop::DoExecute() () at desktop/source/app/app.cxx:1322
> #25 0x00002ac7b70f0304 in desktop::Desktop::Main() (this=0x7ffefac27e38) at desktop/source/app/app.cxx:1647
> #26 0x00002ac7bffb3639 in ImplSVMain() () at vcl/source/app/svmain.cxx:172
> #27 0x00002ac7bffb4e18 in SVMain() () at vcl/source/app/svmain.cxx:210
> #28 0x00002ac7b714f3b5 in soffice_main() () at desktop/source/app/sofficemain.cxx:135
> #29 0x000000000040097d in sal_main () at desktop/source/app/main.c:48
> #30 0x0000000000400957 in main (argc=8, argv=0x7ffefac27fe8) at desktop/source/app/main.c:47

Change-Id: Id06a8fcfe449f566785c51174b1ad3e81459032f
ghost pushed a commit that referenced this pull request Aug 12, 2016
I'm currently unable to invalidate / update the correct cache to
make the changed SwPageDesc visible to SwRootFrm::AssertFlyPages.

Instead this continues to use the SwWrtShell::InsertPageBreak,
which moves the cursor to the new page, which somehow triggers the
SwCrsrShell to update the (probably?) cached layout information.

The working backtrace looks like this. while the "broken" one
stops at #16, because the cursor has a valid paragraph.

 #0  SwFrm::WrongPageDesc(SwPageFrm*)
 #1  SwFrm::GetNextLeaf(MakePageType)
 #2  SwFrm::GetLeaf(MakePageType, bool)
 #3  SwFlowFrm::MoveFwd(bool, bool, bool)
 #4  SwContentFrm::MakeAll(OutputDevice*)
 #5  SwFrm::PrepareMake(OutputDevice*)
 #6  SwFrm::Calc(OutputDevice*) const
 #7  SwTextFrm::CalcFollow(int)
 #8  SwTextFrm::_AdjustFollow(SwTextFormatter&, int, int, unsigned char)
 #9  SwTextFrm::FormatAdjust(SwTextFormatter&, WidowsAndOrphans&, int, bool)
 #10 SwTextFrm::_Format(SwTextFormatter&, SwTextFormatInfo&, bool)
 #11 SwTextFrm::_Format(OutputDevice*, SwParaPortion*)
 #12 SwTextFrm::Format(OutputDevice*, SwBorderAttrs const*)
 #13 SwContentFrm::MakeAll(OutputDevice*)
 #14 SwFrm::PrepareMake(OutputDevice*)
 #15 SwFrm::Calc(OutputDevice*) const
 #16 SwTextFrm::GetFormatted(bool)
 #17 SwTextFrm::GetCharRect(SwRect&, SwPosition const&, SwCrsrMoveState*) const
 #18 SwCrsrShell::UpdateCrsr(unsigned short, bool)
 #19 SwCrsrShell::EndAction(bool, bool)
 #20 SwEditShell::EndAllAction()
 #21 SwDoc::AppendDoc(SwDoc const&, unsigned short, SwPageDesc*, bool, int)
 #22 SwDBManager::MergeMailFiles(SwWrtShell*, SwMergeDescriptor const&, vcl::Window*)
 #23 SwDBManager::MergeNew(SwMergeDescriptor const&, vcl::Window*)

Have a look at the SwPageDesc with by toggling the #if 0 block
with log:

SAL_LOG="-INFO-WARN+INFO.sw.docappend+INFO.sw.createcopy+INFO.sw.pagefrm"

Change-Id: I02f955a6be00a3b57d50d18d4da3651cb9473614
ghost pushed a commit that referenced this pull request Sep 20, 2016
...after 1658bd2 "loplugin:unusedenumvalues"
broke it again after 992fba9 "ubsan: 9 is not a
valid value for type ´SvxNumType´" had fixed it the last time.

This time, acknowledge that SvxNumType can apparently take on rather arbitrary
sal_Int16 values from the css::style::NumberingTypes constants, and make it an
alias for sal_Int16 (whether or not keeping such a trivial alias is good or bad
overall).

Or is the bug elsewhere, and values of type SvxNumType should really only take
on the restricted set of values originally encoded by the enum?  At least the
below UBSan backtrace (from CppunitTest_sw_rtfexport) suggests otherwise, but
then again there's also an SvxExtNumType enum (include/editeng/svxenum.hxx),
encompassing more parts of css::style::NumberingTypes.  Oh, my.

> svx/source/items/pageitem.cxx:49:25: runtime error: load of value 9, which is not a valid value for type 'SvxNumType'
>  #0 0x2aafdaebe669 in SvxPageItem::SvxPageItem(SvxPageItem const&) svx/source/items/pageitem.cxx:49:25
>  #1 0x2aafdaebf194 in SvxPageItem::Clone(SfxItemPool*) const svx/source/items/pageitem.cxx:59:16
>  #2 0x2aaf7fab9b7c in SfxItemPool::Put(SfxPoolItem const&, unsigned short) svl/source/items/itempool.cxx:632:40
>  #3 0x2aaf7fc4794a in SfxItemSet::Put(SfxPoolItem const&, unsigned short) svl/source/items/itemset.cxx:467:56
>  #4 0x2aaf7fb96635 in SfxItemSet::Put(SfxPoolItem const&) include/svl/itemset.hxx:131:42
>  #5 0x2aaf7fb89539 in SfxItemPropertySet::setPropertyValue(SfxItemPropertySimpleEntry const&, com::sun::star::uno::Any const&, SfxItemSet&) const svl/source/items/itemprop.cxx:256:14
>  #6 0x2aaf9ef1a5d4 in void SwXStyle::SetPropertyValue<(unsigned short)1>(SfxItemPropertySimpleEntry const&, SfxItemPropertySet const&, com::sun::star::uno::Any const&, SwStyleBase_Impl&) sw/source/core/unocore/unostyle.cxx:1596:14
>  #7 0x2aaf9ef3c72f in SwXStyle::SetStyleProperty(SfxItemPropertySimpleEntry const&, SfxItemPropertySet const&, com::sun::star::uno::Any const&, SwStyleBase_Impl&) sw/source/core/unocore/unostyle.cxx:2013:9
>  #8 0x2aaf9ef8103d in SwXPageStyle::SetPropertyValues_Impl(com::sun::star::uno::Sequence<rtl::OUString> const&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) sw/source/core/unocore/unostyle.cxx:3025:17
>  #9 0x2aaf9ef821ee in SwXPageStyle::setPropertyValues(com::sun::star::uno::Sequence<rtl::OUString> const&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) sw/source/core/unocore/unostyle.cxx:3053:9
>  #10 0x2ab00730d08b in writerfilter::dmapper::SectionPropertyMap::ApplyProperties_(com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> const&) writerfilter/source/dmapper/PropertyMap.cxx:1489:24
>  #11 0x2ab00731cede in writerfilter::dmapper::SectionPropertyMap::CloseSectionGroup(writerfilter::dmapper::DomainMapper_Impl&) writerfilter/source/dmapper/PropertyMap.cxx:1331:13
>  #12 0x2ab006b9ede2 in writerfilter::dmapper::DomainMapper::lcl_endSectionGroup() writerfilter/source/dmapper/DomainMapper.cxx:2823:30
>  #13 0x2ab0071db9f9 in writerfilter::LoggedStream::endSectionGroup() writerfilter/source/dmapper/LoggedResources.cxx:101:5
>  #14 0x2ab006712a3b in writerfilter::rtftok::RTFDocumentImpl::sectBreak(bool) writerfilter/source/rtftok/rtfdocumentimpl.cxx:633:18
>  #15 0x2ab0067a8c13 in writerfilter::rtftok::RTFDocumentImpl::popState() writerfilter/source/rtftok/rtfdocumentimpl.cxx:2789:13
>  #16 0x2ab006a26134 in writerfilter::rtftok::RTFTokenizer::resolveParse() writerfilter/source/rtftok/rtftokenizer.cxx:105:33
>  #17 0x2ab0067194f9 in writerfilter::rtftok::RTFDocumentImpl::resolve(writerfilter::Stream&) writerfilter/source/rtftok/rtfdocumentimpl.cxx:740:27
>  #18 0x2ab0075ebae7 in RtfFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) writerfilter/source/filter/RtfFilter.cxx:147:20
>  #19 0x2aafcf2873a5 in SfxObjectShell::ImportFrom(SfxMedium&, com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) sfx2/source/doc/objstor.cxx:2261:30
>  #20 0x2aafcf22d4d2 in SfxObjectShell::DoLoad(SfxMedium*) sfx2/source/doc/objstor.cxx:764:23
>  #21 0x2aafcf4a4d09 in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) sfx2/source/doc/sfxbasemodel.cxx:1841:36
>  #22 0x2aafcfde31b3 in (anonymous namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) sfx2/source/view/frmload.cxx:698:28
>  #23 0x2aaffef07028 in framework::LoadEnv::impl_loadContent() framework/source/loadenv/loadenv.cxx:1110:37
>  #24 0x2aaffeeead5a in framework::LoadEnv::startLoading() framework/source/loadenv/loadenv.cxx:379:20
>  #25 0x2aaffeee3919 in framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/loadenv/loadenv.cxx:165:14
>  #26 0x2aafff10ddac in framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/services/desktop.cxx:596:12
>  #27 0x2aafff10e11a in non-virtual thunk to framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/services/desktop.cxx:582:64
>  #28 0x2aafab4c3938 in unotest::MacrosTest::loadFromDesktop(rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) unotest/source/cpp/macros_test.cxx:50:60
>  #29 0x2aaf90aee900 in SwModelTestBase::loadURL(rtl::OUString const&, char const*) sw/qa/extras/inc/swmodeltestbase.hxx:621:23
>  #30 0x2aaf90aed267 in SwModelTestBase::load(char const*, char const*) sw/qa/extras/inc/swmodeltestbase.hxx:610:16
>  #31 0x2aaf90aec404 in SwModelTestBase::executeImportTest(char const*) sw/qa/extras/inc/swmodeltestbase.hxx:222:13
>  #32 0x2aaf90cf4d31 in testTdf65642::Import() sw/qa/extras/rtfexport/rtfexport.cxx:1013:1
>  #33 0x2aaf90cf62af in CppUnit::TestCaller<testTdf65642>::runTest() workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:166:6
>  #34 0x2aaf4ee5d7dd in CppUnit::TestCaseMethodFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5
>  #35 0x2aaf680c4cd6 in (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) test/source/vclbootstrapprotector.cxx:36:14
>  #36 0x2aaf4ee17a87 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25
>  #37 0x2aaf5ea4a8a6 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:89:12
>  #38 0x2aaf4ee17a87 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25
>  #39 0x2aaf5abd5ef4 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:65:16
>  #40 0x2aaf4ee17a87 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25
>  #41 0x2aaf4ed8c2ef in CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12
>  #42 0x2aaf4ee17a87 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25
>  #43 0x2aaf4ee14101 in CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:77:18
>  #44 0x2aaf4eede065 in CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:181:28
>  #45 0x2aaf4ee5a929 in CppUnit::TestCase::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:13
>  #46 0x2aaf4ee60ad3 in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30
>  #47 0x2aaf4ee5fa3d in CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3
>  #48 0x2aaf4ee60ad3 in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30
>  #49 0x2aaf4ee5fa3d in CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3
>  #50 0x2aaf4ef1eeb6 in CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27
>  #51 0x2aaf4eedbe79 in CppUnit::TestResult::runTest(CppUnit::Test*) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:148:9
>  #52 0x2aaf4ef20440 in CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14
>  #53 0x52b642 in (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:305:20
>  #54 0x52604d in sal_main() sal/cppunittester/cppunittester.cxx:455:20
>  #55 0x524192 in main sal/cppunittester/cppunittester.cxx:362:1
>  #56 0x2aaf50b3c730 in __libc_start_main (/lib64/libc.so.6+0x20730)
>  #57 0x437658 in _start (workdir/LinkTarget/Executable/cppunittester+0x437658)

Change-Id: Id170860cbff9f4cae5c87cb5cfc70ffe3bc8c9c5
ghost pushed a commit that referenced this pull request Oct 14, 2016
...of this-ptr of in-construction FormFieldSignature while still in the base
FormField ctor, as happens (in the xpdfimport process) during
CppunitTest_xmlsecurity_signing:

> Form.cc:448:12: runtime error: downcast of address 0x60f000000040 which does not point to an object of type 'FormFieldSignature'
> 0x60f000000040: note: object is of type 'FormField'
>  03 00 00 6d  50 84 f2 00 00 00 00 00  03 00 00 00 04 00 00 00  00 00 00 00 01 be be be  07 00 00 00
>               ^~~~~~~~~~~~~~~~~~~~~~~
>               vptr for 'FormField'
>     #0 0x73d7f4 in FormWidgetSignature::FormWidgetSignature(PDFDoc*, Object*, unsigned int, Ref, FormField*) workdir/UnpackedTarball/poppler/poppler/Form.cc:448:12
>     #1 0x741713 in FormField::_createWidget(Object*, Ref) workdir/UnpackedTarball/poppler/poppler/Form.cc:677:34
>     #2 0x73e747 in FormField::FormField(PDFDoc*, Object*, Ref const&, FormField*, std::set<int, std::less<int>, std::allocator<int> >*, FormFieldType) workdir/UnpackedTarball/poppler/poppler/Form.cc:547:7
>     #3 0x74ec2b in FormFieldSignature::FormFieldSignature(PDFDoc*, Object*, Ref const&, FormField*, std::set<int, std::less<int>, std::allocator<int> >*) workdir/UnpackedTarball/poppler/poppler/Form.cc:1383:5
>     #4 0x740d7f in Form::createFieldFromDict(Object*, PDFDoc*, Ref const&, FormField*, std::set<int, std::less<int>, std::allocator<int> >*) workdir/UnpackedTarball/poppler/poppler/Form.cc:1700:19
>     #5 0x750727 in Form::Form(PDFDoc*, Object*) workdir/UnpackedTarball/poppler/poppler/Form.cc:1623:33
>     #6 0x71d440 in Catalog::getForm() workdir/UnpackedTarball/poppler/poppler/Catalog.cc:1042:18
>     #7 0x708572 in Annots::createAnnot(Dict*, Object*) workdir/UnpackedTarball/poppler/poppler/Annot.cc:7218:41
>     #8 0x70772b in Annots::Annots(PDFDoc*, int, Object*) workdir/UnpackedTarball/poppler/poppler/Annot.cc:7128:17
>     #9 0x87f3e9 in Page::getAnnots(XRef*) workdir/UnpackedTarball/poppler/poppler/Page.cc:405:18
>     #10 0x8814b0 in Page::displaySlice(OutputDev*, double, double, int, bool, bool, int, int, int, int, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/Page.cc:611:15
>     #11 0x880ff6 in Page::display(OutputDev*, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/Page.cc:521:3
>     #12 0x88d906 in PDFDoc::displayPage(OutputDev*, int, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/PDFDoc.cc:491:20
>     #13 0x5d59fb in main sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx:142:14
>     #14 0x7f11600ea730 in __libc_start_main (/lib64/libc.so.6+0x20730)
>     #15 0x459388 in _start (instdir/program/xpdfimport+0x459388)

Change-Id: Ia808919c8d2363d616feb4664f314a77b40dfbb8
ghost pushed a commit that referenced this pull request Nov 7, 2016
...to avoid use-after-free, as e.g. happens on macOS with -fsanitize=address in
CppunitTest_sw_mailmerge:

> ==29010==ERROR: AddressSanitizer: heap-use-after-free on address 0x60800088faf8 at pc 0x000118ebc153 bp 0x7fff52f81a40 sp 0x7fff52f81a38
> READ of size 8 at 0x60800088faf8 thread T0
> WARNING: failed decoding unknown ioctl 0x20007454
> WARNING: failed decoding unknown ioctl 0x20007452
>     #0 0x118ebc152 in AquaSalMenu::SetSubMenu(SalMenuItem*, SalMenu*, unsigned int) salmenu.cxx:597
>     #1 0x1177bbefc in Menu::SetPopupMenu(unsigned short, PopupMenu*) menu.cxx:803
>     #2 0x138dccb5a in framework::MenuBarManager::RemoveListener() menubarmanager.cxx:552
>     #3 0x138dcb452 in framework::MenuBarManager::Destroy() menubarmanager.cxx:237
>     #4 0x138dcd6d7 in framework::MenuBarManager::dispose() menubarmanager.cxx:267
>     #5 0x138dccfa2 in framework::MenuBarManager::RemoveListener() menubarmanager.cxx:587
>     #6 0x138dcb452 in framework::MenuBarManager::Destroy() menubarmanager.cxx:237
>     #7 0x138dcd6d7 in framework::MenuBarManager::dispose() menubarmanager.cxx:267
>     #8 0x138e06acf in framework::MenuBarWrapper::dispose() menubarwrapper.cxx:103
>     #9 0x1389c0f67 in framework::LayoutManager::impl_clearUpMenuBar() layoutmanager.cxx:226
>     #10 0x1389c497b in framework::LayoutManager::implts_destroyElements() layoutmanager.cxx:447
>     #11 0x1389c3777 in framework::LayoutManager::implts_reset(bool) layoutmanager.cxx:413
>     #12 0x1389edf4b in framework::LayoutManager::frameAction(com::sun::star::frame::FrameActionEvent const&) layoutmanager.cxx:2811
>     #13 0x138b9e1a8 in (anonymous namespace)::Frame::implts_sendFrameActionEvent(com::sun::star::frame::FrameAction const&) frame.cxx:3110
>     #14 0x138b8219b in (anonymous namespace)::Frame::setComponent(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, com::sun::star::uno::Reference<com::sun::star::frame::XController> const&) frame.cxx:1557
>     #15 0x138b88545 in (anonymous namespace)::Frame::close(unsigned char) frame.cxx:1801
>     #16 0x12078429a in SfxFrame::DoClose() frame.cxx:127
>     #17 0x120812990 in SfxViewFrame::Notify(SfxBroadcaster&, SfxHint const&) viewfrm.cxx:1234
>     #18 0x11ab542d5 in SfxBroadcaster::Broadcast(SfxHint const&) SfxBroadcaster.cxx:50
>     #19 0x1203a0682 in SfxModelListener_Impl::notifyClosing(com::sun::star::lang::EventObject const&) objxtor.cxx:171
>     #20 0x1204453d2 in SfxBaseModel::close(unsigned char) sfxbasemodel.cxx:1372
>     #21 0x1245130d5 in SwXTextDocument::close(unsigned char) unotxdoc.cxx:621
>     #22 0x1247af99b in CloseModelAndDocSh(com::sun::star::uno::Reference<com::sun::star::frame::XModel>&, tools::SvRef<SfxObjectShell>&) unomailmerge.cxx:115
>     #23 0x1247af4bf in DeleteTmpFile_Impl(com::sun::star::uno::Reference<com::sun::star::frame::XModel>&, tools::SvRef<SfxObjectShell>&, rtl::OUString const&) unomailmerge.cxx:342
>     #24 0x1247b6ad6 in SwXMailMerge::execute(com::sun::star::uno::Sequence<com::sun::star::beans::NamedValue> const&) unomailmerge.cxx:814
>     #25 0x1247b9c62 in non-virtual thunk to SwXMailMerge::execute(com::sun::star::uno::Sequence<com::sun::star::beans::NamedValue> const&) unomailmerge.cxx:434
>     #26 0x11eeab4fd in MMTest::executeMailMerge() mailmerge.cxx:179
>     #27 0x11eea2470 in testMultiPageAnchoredDraws::verify() mailmerge.cxx:336
>     #28 0x11ef3be50 in MMTest::executeMailMergeTest(char const*, char const*, char const*, bool, int, char const*) mailmerge.cxx:87
>     #29 0x11ef38af3 in testMultiPageAnchoredDraws::MailMerge() mailmerge.cxx:334
>     #30 0x11ef557b9 in CppUnit::TestCaller<testMultiPageAnchoredDraws>::runTest() TestCaller.h:166
>     #31 0x10cfff749 in CppUnit::TestCaseMethodFunctor::operator()() const TestCase.cpp:32
>     #32 0x110736b67 in (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) vclbootstrapprotector.cxx:36
>     #33 0x10cfc9c20 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const ProtectorChain.cpp:20
>     #34 0x110498fa7 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unobootstrapprotector.cxx:89
>     #35 0x10cfc9c20 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const ProtectorChain.cpp:20
>     #36 0x10f776880 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unoexceptionprotector.cxx:65
>     #37 0x10cfc9c20 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const ProtectorChain.cpp:20
>     #38 0x10cf64042 in CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) DefaultProtector.cpp:15
>     #39 0x10cfc9c20 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const ProtectorChain.cpp:20
>     #40 0x10cfc7200 in CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) ProtectorChain.cpp:77
>     #41 0x10d06f15a in CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) TestResult.cpp:181
>     #42 0x10cffd8cd in CppUnit::TestCase::run(CppUnit::TestResult*) TestCase.cpp:91
>     #43 0x10d00097a in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) TestComposite.cpp:64
>     #44 0x10d00045e in CppUnit::TestComposite::run(CppUnit::TestResult*) TestComposite.cpp:23
>     #45 0x10d00097a in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) TestComposite.cpp:64
>     #46 0x10d00045e in CppUnit::TestComposite::run(CppUnit::TestResult*) TestComposite.cpp:23
>     #47 0x10d0990ac in CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) TestRunner.cpp:47
>     #48 0x10d06da55 in CppUnit::TestResult::runTest(CppUnit::Test*) TestResult.cpp:148
>     #49 0x10d099ebd in CppUnit::TestRunner::run(CppUnit::TestResult&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) TestRunner.cpp:96
>     #50 0x10cc6f509 in (anonymous namespace)::ProtectedFixtureFunctor::run() const cppunittester.cxx:305
>     #51 0x10cc6a0ac in sal_main() cppunittester.cxx:455
>     #52 0x10cc687a6 in main cppunittester.cxx:362
>     #53 0x7fffc9f36254 in start (libdyld.dylib+0x5254)
>
> 0x60800088faf8 is located 88 bytes inside of 96-byte region [0x60800088faa0,0x60800088fb00)
> freed by thread T0 here:
>     #0 0x10d327b6b in wrap__ZdlPv asan_new_delete.cc:179
>     #1 0x118eb3011 in AquaSalMenu::~AquaSalMenu() salmenu.cxx:279
>     #2 0x118eb10de in AquaSalInstance::DestroyMenu(SalMenu*) salmenu.cxx:238
>     #3 0x1177acd1d in Menu::ImplSetSalMenu(SalMenu*) menu.cxx:2342
>     #4 0x1177ab046 in Menu::dispose() menu.cxx:183
>     #5 0x1177d86f5 in PopupMenu::dispose() menu.cxx:2764
>     #6 0x117f99ee2 in VclReferenceBase::disposeOnce() vclreferencebase.cxx:42
>     #7 0x1177bf7d8 in VclPtr<Menu>::disposeAndClear() vclptr.hxx:208
>     #8 0x1177bbbd5 in Menu::SetPopupMenu(unsigned short, PopupMenu*) menu.cxx:788
>     #9 0x138dccb5a in framework::MenuBarManager::RemoveListener() menubarmanager.cxx:552
>     #10 0x138dcb452 in framework::MenuBarManager::Destroy() menubarmanager.cxx:237
>     #11 0x138dcd6d7 in framework::MenuBarManager::dispose() menubarmanager.cxx:267
>     #12 0x138dccfa2 in framework::MenuBarManager::RemoveListener() menubarmanager.cxx:587
>     #13 0x138dcb452 in framework::MenuBarManager::Destroy() menubarmanager.cxx:237
>     #14 0x138dcd6d7 in framework::MenuBarManager::dispose() menubarmanager.cxx:267
>     #15 0x138e06acf in framework::MenuBarWrapper::dispose() menubarwrapper.cxx:103
>     #16 0x1389c0f67 in framework::LayoutManager::impl_clearUpMenuBar() layoutmanager.cxx:226
>     #17 0x1389c497b in framework::LayoutManager::implts_destroyElements() layoutmanager.cxx:447
>     #18 0x1389c3777 in framework::LayoutManager::implts_reset(bool) layoutmanager.cxx:413
>     #19 0x1389edf4b in framework::LayoutManager::frameAction(com::sun::star::frame::FrameActionEvent const&) layoutmanager.cxx:2811
>     #20 0x138b9e1a8 in (anonymous namespace)::Frame::implts_sendFrameActionEvent(com::sun::star::frame::FrameAction const&) frame.cxx:3110
>     #21 0x138b8219b in (anonymous namespace)::Frame::setComponent(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, com::sun::star::uno::Reference<com::sun::star::frame::XController> const&) frame.cxx:1557
>     #22 0x138b88545 in (anonymous namespace)::Frame::close(unsigned char) frame.cxx:1801
>     #23 0x12078429a in SfxFrame::DoClose() frame.cxx:127
>     #24 0x120812990 in SfxViewFrame::Notify(SfxBroadcaster&, SfxHint const&) viewfrm.cxx:1234
>     #25 0x11ab542d5 in SfxBroadcaster::Broadcast(SfxHint const&) SfxBroadcaster.cxx:50
>     #26 0x1203a0682 in SfxModelListener_Impl::notifyClosing(com::sun::star::lang::EventObject const&) objxtor.cxx:171
>     #27 0x1204453d2 in SfxBaseModel::close(unsigned char) sfxbasemodel.cxx:1372
>     #28 0x1245130d5 in SwXTextDocument::close(unsigned char) unotxdoc.cxx:621
>     #29 0x1247af99b in CloseModelAndDocSh(com::sun::star::uno::Reference<com::sun::star::frame::XModel>&, tools::SvRef<SfxObjectShell>&) unomailmerge.cxx:115
>
> previously allocated by thread T0 here:
>     #0 0x10d32752b in wrap__Znwm asan_new_delete.cc:106
>     #1 0x118eafa18 in AquaSalInstance::CreateMenu(bool, Menu*) salmenu.cxx:230
>     #2 0x1177d75e0 in PopupMenu::PopupMenu() menu.cxx:2711
>     #3 0x1177d7664 in PopupMenu::PopupMenu() menu.cxx:2710
>     #4 0x129136557 in VclPtr<PopupMenu> VclPtr<PopupMenu>::Create<>() vclptr.hxx:131
>     #5 0x1291362de in VCLXMenu::ImplCreateMenu(bool) vclxmenu.cxx:73
>     #6 0x1291463ca in VCLXPopupMenu::VCLXPopupMenu() vclxmenu.cxx:901
>     #7 0x129146414 in VCLXPopupMenu::VCLXPopupMenu() vclxmenu.cxx:900
>     #8 0x138dc5e83 in framework::MenuBarManager::FillMenuManager(Menu*, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, bool) menubarmanager.cxx:1354
>     #9 0x138dc2316 in framework::MenuBarManager::MenuBarManager(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Reference<com::sun::star::util::XURLTransformer> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, Menu*, bool, bool) menubarmanager.cxx:140
>     #10 0x138dc72bd in framework::MenuBarManager::MenuBarManager(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Reference<com::sun::star::util::XURLTransformer> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, Menu*, bool, bool) menubarmanager.cxx:138
>     #11 0x138dc57bc in framework::MenuBarManager::FillMenuManager(Menu*, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, bool) menubarmanager.cxx:1304
>     #12 0x138dc2316 in framework::MenuBarManager::MenuBarManager(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Reference<com::sun::star::util::XURLTransformer> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, Menu*, bool, bool) menubarmanager.cxx:140
>     #13 0x138dc72bd in framework::MenuBarManager::MenuBarManager(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Reference<com::sun::star::util::XURLTransformer> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, Menu*, bool, bool) menubarmanager.cxx:138
>     #14 0x138e07ba5 in framework::MenuBarWrapper::initialize(com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) menubarwrapper.cxx:181
>     #15 0x138f32e6d in framework::MenuBarFactory::CreateUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, char const*, rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::ui::XUIElement> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) menubarfactory.cxx:154
>     #16 0x138f31848 in framework::MenuBarFactory::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) menubarfactory.cxx:63
>     #17 0x138f3313a in non-virtual thunk to framework::MenuBarFactory::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) menubarfactory.cxx:56
>     #18 0x138f56f6e in (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) uielementfactorymanager.cxx:450
>     #19 0x138f5a94a in non-virtual thunk to (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) uielementfactorymanager.cxx:408
>     #20 0x1389ca5da in framework::LayoutManager::implts_createElement(rtl::OUString const&) layoutmanager.cxx:731
>     #21 0x1389d6fb4 in framework::LayoutManager::createElement(rtl::OUString const&) layoutmanager.cxx:1482
>     #22 0x11fbd36f1 in SfxDispatcher::SetMenu_Impl() dispatch.cxx:1216
>     #23 0x11fbc36dc in SfxDispatcher::Update_Impl(bool) dispatch.cxx:1290
>     #24 0x11fb7556d in SfxBindings::NextJob_Impl(Timer*) bindings.cxx:1459
>     #25 0x11fb8ad4c in SfxBindings::NextJob(Timer*) bindings.cxx:1441
>     #26 0x11fb61177 in SfxBindings::LinkStubNextJob(void*, Timer*) bindings.cxx:1439
>     #27 0x11898aea1 in Link<Timer*, void>::Call(Timer*) const link.hxx:84
>     #28 0x11898add6 in Timer::Invoke() timer.cxx:88
>     #29 0x1188dae6d in ImplSchedulerData::Invoke() scheduler.cxx:47

Change-Id: I16d5b11710ee46dbaa77afd94a09ba5f07a311b0
ghost pushed a commit that referenced this pull request Nov 14, 2016
...when doing "Format - Page..." in Writer:

> cui/source/tabpages/tparea.cxx:268:12: runtime error: load of value 4294967295, which is not a valid value for type 'FillType'
>     #0 0x7f89ff653a41 in SvxAreaTabPage::Reset(SfxItemSet const*) cui/source/tabpages/tparea.cxx:268:12
>     #1 0x7f8d15524560 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1117:19
>     #2 0x7f8d1551b0e3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
>     #3 0x7f8cef623f37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
>     #4 0x7f8cef5dfcaa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19

Change-Id: I19dd3ed9d362132daa3f3be9fb0e9702a62bdeb0
ghost pushed a commit that referenced this pull request Nov 14, 2016
...when doing "Format - Page..." in Writer (and eFillType is TRANSPARENT):

> cui/source/tabpages/tparea.cxx:331:33: runtime error: reference binding to null pointer of type 'SfxTabPage'
>     #0 0x7f9f053e936f in SvxAreaTabPage::SelectFillTypeHdl_Impl(Button*) cui/source/tabpages/tparea.cxx:331:9
>     #1 0x7f9f053e548c in SvxAreaTabPage::ActivatePage(SfxItemSet const&) cui/source/tabpages/tparea.cxx:157:13
>     #2 0x7fa21be01676 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1126:19
>     #3 0x7fa21bdf70e3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
>     #4 0x7fa1f5efff37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
>     #5 0x7fa1f5ebbcaa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19

Change-Id: I279f507038ab4bae1be4f02b6537e6d1aab76348
ghost pushed a commit that referenced this pull request Nov 14, 2016
...when doing "Format - Page..." in Writer:

> vcl/source/control/field.cxx:621:20: runtime error: signed integer overflow: 9223372036854775807 * 100 cannot be represented in type 'long'
>     #0 0x7f57787c4868 in NumericFormatter::Normalize(long) const vcl/source/control/field.cxx:621:20
>     #1 0x7f578a4608dc in SetFieldUnit(MetricField&, FieldUnit, bool) svtools/source/misc/unitconv.cxx:75:32
>     #2 0x7f5488952648 in SvxPageDescPage::SvxPageDescPage(vcl::Window*, SfxItemSet const&) cui/source/tabpages/page.cxx:275:5
>     #3 0x7f54889c3ea4 in VclPtr<SvxPageDescPage> VclPtr<SvxPageDescPage>::Create<vcl::Window*&, SfxItemSet const&>(vcl::Window*&, SfxItemSet const&) include/vcl/vclptr.hxx:138:46
>     #4 0x7f5488925d27 in SvxPageDescPage::Create(vcl::Window*, SfxItemSet const*) cui/source/tabpages/page.cxx:162:12
>     #5 0x7f579ea86df4 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1085:24
>     #6 0x7f579ea800e3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
>     #7 0x7f5778b88f37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
>     #8 0x7f5778b44caa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19

and NumericFormatter::mnMax is still SAL_MAX_INT64 (but will be set to a smaller
value a few lines futher down in the SvxPageDescPage ctor).  So initialize mnMax
to a substantially smaller value (that is still "large", but avoids this kind of
overflow), and hope that no code relies on the exact initial value.

Change-Id: If3b4db1d20bc59418d1769e9690bc7ecdbf29a50
ghost pushed a commit that referenced this pull request Nov 14, 2016
...during CppunitTest_filter_dialogs_test:

> filter/source/xsltdialog/xmlfiltersettingsdialog.cxx:1398:20: runtime error: reference binding to null pointer of type 'ResMgr'
>     #0 0x7f144bf5ab10 in XMLFilterListBox::XMLFilterListBox(vcl::Window*, SvxPathControl*) filter/source/xsltdialog/xmlfiltersettingsdialog.cxx:1398:20
>     #1 0x7f144bf7abb8 in VclPtr<XMLFilterListBox> VclPtr<XMLFilterListBox>::Create<VclPtr<VclVBox>&, SvxPathControl*>(VclPtr<VclVBox>&, SvxPathControl*&&) include/vcl/vclptr.hxx:138:46
>     #2 0x7f144bf50df8 in SvxPathControl::SvxPathControl(vcl::Window*) filter/source/xsltdialog/xmlfiltersettingsdialog.cxx:1312:20
>     #3 0x7f144bf7d487 in VclPtr<SvxPathControl> VclPtr<SvxPathControl>::Create<VclPtr<vcl::Window>&>(VclPtr<vcl::Window>&) include/vcl/vclptr.hxx:138:46
>     #4 0x7f144bf56a2f in makeSvxPathControl filter/source/xsltdialog/xmlfiltersettingsdialog.cxx:1378:1
>     #5 0x7f14d2060a04 in VclBuilder::makeObject(vcl::Window*, rtl::OString const&, rtl::OString const&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&) vcl/source/window/builder.cxx:1793:17
>     #6 0x7f14d2078ddb in VclBuilder::insertObject(vcl::Window*, rtl::OString const&, rtl::OString const&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&) vcl/source/window/builder.cxx:1887:25
>     #7 0x7f14d208790a in VclBuilder::handleObject(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2856:37
>     #8 0x7f14d20215bc in VclBuilder::handleChild(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2114:33
>     #9 0x7f14d2087bea in VclBuilder::handleObject(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2859:17
>     #10 0x7f14d20215bc in VclBuilder::handleChild(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2114:33
>     #11 0x7f14d2087bea in VclBuilder::handleObject(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2859:17
>     #12 0x7f14d20215bc in VclBuilder::handleChild(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2114:33
>     #13 0x7f14d200c59a 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&) vcl/source/window/builder.cxx:206:9
>     #14 0x7f1492275862 in ScreenshotTest::dumpDialogToPath(rtl::OString const&) test/source/screenshot_test.cxx:177:24

The existing code apparently depended on any calls to getXSLTDialogResMgr in
xmlfiltersettingsdialog.cxx only happening after pXSLTResMgr had been set up in
the outer XMLFilterDialogComponent::execute in xmlfilterdialogcomponent.cxx.
That is not true when each dialog is opened independently in the screenshot
test, so instead just call CreateResMgr on demand wherever needed.

Change-Id: I9f6dc7c66d4999137352a8d91665b954f4088085
ghost pushed a commit that referenced this pull request Nov 14, 2016
...as reported by -fsanitize=vptr when doing "Format - Page..." in Writer
(though both types have a Size member at the same location, so didn't cause any
real problems):

> sw/source/ui/misc/pgfnote.cxx:283:32: runtime error: downcast of address 0x604000e23f50 which does not point to an object of type 'const SvxSizeItem'
> 0x604000e23f50: note: object is of type 'SwFormatFrameSize'
>  94 01 00 3d  90 ae ee 90 ff 7e 00 00  06 00 00 00 58 00 00 be  d0 2f 00 00 00 00 00 00  e0 3d 00 00
>               ^~~~~~~~~~~~~~~~~~~~~~~
>               vptr for 'SwFormatFrameSize'
>     #0 0x7efd1c8d01e2 in SwFootNotePage::ActivatePage(SfxItemSet const&) sw/source/ui/misc/pgfnote.cxx:283:32
>     #1 0x7efd1c8cbf07 in SwFootNotePage::Reset(SfxItemSet const*) sw/source/ui/misc/pgfnote.cxx:230:5
>     #2 0x7f002e149560 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1117:19
>     #3 0x7f002e1400e3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
>     #4 0x7f0008248f37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
>     #5 0x7f0008204caa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19

Change-Id: I73df2438565a7069153b22140197897df810b2aa
ghost pushed a commit that referenced this pull request Nov 14, 2016
...as reported by -fsanitize=vptr when doing "Format - Paragraph... - Area -
Color" in Writer:

> cui/source/tabpages/tpcolor.cxx:65:19: runtime error: downcast of address 0x6030009782b0 which does not point to an object of type 'XOutdevItemPool'
> 0x6030009782b0: note: object is of type 'SwAttrPool'
>  20 01 80 1c  50 e8 e9 85 4d 7f 00 00  e0 28 48 86 4d 7f 00 00  c0 d7 11 00 30 61 00 00  80 29 54 00
>               ^~~~~~~~~~~~~~~~~~~~~~~
>               vptr for 'SwAttrPool'
>     #0 0x7f4b047cfd3a in SvxColorTabPage::SvxColorTabPage(vcl::Window*, SfxItemSet const&) cui/source/tabpages/tpcolor.cxx:65:19
>     #1 0x7f4b0480ec04 in VclPtr<SvxColorTabPage> VclPtr<SvxColorTabPage>::Create<vcl::Window*&, SfxItemSet const&>(vcl::Window*&, SfxItemSet const&) include/vcl/vclptr.hxx:138:46
>     #2 0x7f4b047f8567 in SvxColorTabPage::Create(vcl::Window*, SfxItemSet const*) cui/source/tabpages/tpcolor.cxx:326:12
>     #3 0x7f4b0472132a in CreateFillStyleTabPage(unsigned short, vcl::Window*, SfxItemSet const&) cui/source/tabpages/tparea.cxx:319:42
>     #4 0x7f4b0471ef8b in SvxAreaTabPage::SelectFillTypeHdl_Impl(Button*) cui/source/tabpages/tparea.cxx:330:41
>     #5 0x7f4b047114b3 in SvxAreaTabPage::LinkStubSelectFillTypeHdl_Impl(void*, Button*) cui/source/tabpages/tparea.cxx:323:1
>     #6 0x7f4df3eac737 in Link<Button*, void>::Call(Button*) const include/tools/link.hxx:84:45
>     #7 0x7f4df3e93bb6 in Button::Click()::$_0::operator()() const vcl/source/control/button.cxx:127:85

Change-Id: I6259b100c535fa81b9f7452db84c22d5b10acb1e
ghost pushed a commit that referenced this pull request Nov 17, 2016
Both Writer: "Table - Insert Table... - Insert", "Table - AutoFormat Styles...";
and Calc: select multiple cells, "Format - AutoFormat Styles..." cause

> svx/source/dialog/framelinkarray.cxx:82:29: runtime error: signed integer overflow: -4702111234474983744 + -4702111234474983746 cannot be represented in type 'long'
>     #0 0x7f84ef0e36ba in svx::frame::lclRecalcCoordVec(std::__debug::vector<long, std::allocator<long> >&, std::__debug::vector<long, std::allocator<long> > const&) svx/source/dialog/framelinkarray.cxx:82:29
>     #1 0x7f84ef0e780e in svx::frame::ArrayImpl::GetColPosition(unsigned long) const svx/source/dialog/framelinkarray.cxx:265:9
>     #2 0x7f84ef0f95ae in svx::frame::Array::GetColPosition(unsigned long) const svx/source/dialog/framelinkarray.cxx:762:20
>     #3 0x7f84ef0f9e56 in svx::frame::Array::GetWidth() const svx/source/dialog/framelinkarray.cxx:787:12
>     #4 0x7f852e9df8fd in ScAutoFmtPreview::CalcCellArray(bool) sc/source/ui/miscdlgs/autofmt.cxx:429:32
>     #5 0x7f852e9c7740 in ScAutoFmtPreview::Init() sc/source/ui/miscdlgs/autofmt.cxx:407:5
>     #6 0x7f852e9c9102 in ScAutoFmtPreview::ScAutoFmtPreview(vcl::Window*) sc/source/ui/miscdlgs/autofmt.cxx:73:5

where -4702111234474983746 = 0xbebebebebebebebe is ASan's uninitialized value
stored into ScAutoFmtPreview::mnLableColWidth et al.  Those (overflowing, even)
computations on uninitialized values appear to be harmless in practice, though,
presumably because they are overwritten with "real" values soon after.

Change-Id: I487fc4681afe79c4e8532595226cba4c9c0c9b2d
ghost pushed a commit that referenced this pull request Nov 17, 2016
...when doing Writer "Insert - Table of Contents and Index - Table of Contents,
Index or Bibliography...":

> sw/source/uibase/inc/cnttab.hxx:58:16: runtime error: load of value 65535, which is not a valid value for type 'TOXTypes'
>     #0 0x7fbed9c2c9c8 in CurTOXType::operator==(CurTOXType const&) sw/source/uibase/inc/cnttab.hxx:58:16
>     #1 0x7fbed9b711b1 in SwTOXEntryTabPage::ActivatePage(SfxItemSet const&) sw/source/ui/index/cnttab.cxx:2071:25
>     #2 0x7fc217524056 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1126:19
>     #3 0x7fc217519ac3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
>     #4 0x7fc1f15c0e37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
>     #5 0x7fc1f157cbaa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19

Change-Id: I458e010b10dfdf3e944c389f61595869cc41036f
ghost pushed a commit that referenced this pull request Nov 18, 2016
...as happens during CppunitTest_sd_dialogs_test when displaying
modules/simpress/ui/headerfootertab.ui:

> sd/source/ui/dlg/headerfooterdlg.cxx:782:63: runtime error: division by zero
>     #0 0x7f270dc78b7f in sd::PresLayoutPreview::Paint(OutputDevice&, Rectangle const&) sd/source/ui/dlg/headerfooterdlg.cxx:782:63
>     #1 0x7f274a56bb53 in PaintHelper::DoPaint(vcl::Region const*) vcl/source/window/paint.cxx:307:24
>     #2 0x7f274a57be32 in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:613:17
>     #3 0x7f274a577eee in PaintHelper::~PaintHelper() vcl/source/window/paint.cxx:547:30
>     #4 0x7f274a57c305 in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:619:1
>     #5 0x7f274a577eee in PaintHelper::~PaintHelper() vcl/source/window/paint.cxx:547:30
>     #6 0x7f274a57c305 in vcl::Window::ImplCallPaint(vcl::Region const*, unsigned short) vcl/source/window/paint.cxx:619:1
>     #7 0x7f274a589f0d in vcl::Window::Update() vcl/source/window/paint.cxx:1310:24
>     #8 0x7f274b908d23 in ImplHandlePaint(vcl::Window*, Rectangle const&, bool) vcl/source/window/winproc.cxx:1593:18
>     #9 0x7f274b8f9092 in ImplWindowFrameProc(vcl::Window*, SalEvent, void const*) vcl/source/window/winproc.cxx:2437:13
>     #10 0x7f272e3c8662 in SalFrame::CallCallback(SalEvent, void const*) const vcl/inc/salframe.hxx:276:33

Change-Id: I2868a8b0a726544c9edbaab62a8929badf6d3845
ghost pushed a commit that referenced this pull request Nov 22, 2016
...as seen during CppunitTest_sd_dialogs_test:

> collationdatareader.cpp:422:13: runtime error: null pointer passed as argument 1, which is declared to never be null
> /usr/include/string.h:66:33: note: nonnull attribute specified here
>     #0 0x7fc3fc837f72 in icu_58::CollationDataReader::read(icu_58::CollationTailoring const*, unsigned char const*, int, icu_58::CollationTailoring&, UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/collationdatareader.cpp:422:13
>     #1 0x7fc3fc7fc0bb in icu_58::CollationLoader::loadFromData(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:395:5
>     #2 0x7fc3fc7fad16 in icu_58::CollationLoader::loadFromCollations(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:376:16
>     #3 0x7fc3fc7f0c74 in icu_58::CollationLoader::createCacheEntry(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:221:16
>     #4 0x7fc3fc7f079e in icu_58::LocaleCacheKey<icu_58::CollationCacheEntry>::createObject(void const*, UErrorCode&) const workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:144:20
>     #5 0x7fc4262d558f in icu_58::UnifiedCache::_get(icu_58::CacheKeyBase const&, icu_58::SharedObject const*&, void const*, UErrorCode&) const workdir/UnpackedTarball/icu/source/common/unifiedcache.cpp:409:17
>     #6 0x7fc3fc806774 in void icu_58::UnifiedCache::get<icu_58::CollationCacheEntry>(icu_58::CacheKey<icu_58::CollationCacheEntry> const&, void const*, icu_58::CollationCacheEntry const*&, UErrorCode&) const workdir/UnpackedTarball/icu/source/i18n/../common/unifiedcache.h:234:8
>     #7 0x7fc3fc7f1c93 in icu_58::CollationLoader::getCacheEntry(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:466:12
>     #8 0x7fc3fc7f76d4 in icu_58::CollationLoader::loadFromBundle(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:299:16
>     #9 0x7fc3fc7f0ae5 in icu_58::CollationLoader::createCacheEntry(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:219:16
>     #10 0x7fc3fc7f079e in icu_58::LocaleCacheKey<icu_58::CollationCacheEntry>::createObject(void const*, UErrorCode&) const workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:144:20
>     #11 0x7fc4262d558f in icu_58::UnifiedCache::_get(icu_58::CacheKeyBase const&, icu_58::SharedObject const*&, void const*, UErrorCode&) const workdir/UnpackedTarball/icu/source/common/unifiedcache.cpp:409:17
>     #12 0x7fc3fc806774 in void icu_58::UnifiedCache::get<icu_58::CollationCacheEntry>(icu_58::CacheKey<icu_58::CollationCacheEntry> const&, void const*, icu_58::CollationCacheEntry const*&, UErrorCode&) const workdir/UnpackedTarball/icu/source/i18n/../common/unifiedcache.h:234:8
>     #13 0x7fc3fc7f1c93 in icu_58::CollationLoader::getCacheEntry(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:466:12
>     #14 0x7fc3fc7f5a19 in icu_58::CollationLoader::loadFromLocale(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:247:16
>     #15 0x7fc3fc7f0956 in icu_58::CollationLoader::createCacheEntry(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:217:16
>     #16 0x7fc3fc7f079e in icu_58::LocaleCacheKey<icu_58::CollationCacheEntry>::createObject(void const*, UErrorCode&) const workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:144:20
>     #17 0x7fc4262d558f in icu_58::UnifiedCache::_get(icu_58::CacheKeyBase const&, icu_58::SharedObject const*&, void const*, UErrorCode&) const workdir/UnpackedTarball/icu/source/common/unifiedcache.cpp:409:17
>     #18 0x7fc3fc806774 in void icu_58::UnifiedCache::get<icu_58::CollationCacheEntry>(icu_58::CacheKey<icu_58::CollationCacheEntry> const&, void const*, icu_58::CollationCacheEntry const*&, UErrorCode&) const workdir/UnpackedTarball/icu/source/i18n/../common/unifiedcache.h:234:8
>     #19 0x7fc3fc7f1c93 in icu_58::CollationLoader::getCacheEntry(UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:466:12
>     #20 0x7fc3fc7f1525 in icu_58::CollationLoader::loadTailoring(icu_58::Locale const&, UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/ucol_res.cpp:164:19
>     #21 0x7fc3fc7ba783 in icu_58::Collator::makeInstance(icu_58::Locale const&, UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/coll.cpp:460:40
>     #22 0x7fc3fc7bb891 in icu_58::Collator::createInstance(icu_58::Locale const&, UErrorCode&) workdir/UnpackedTarball/icu/source/i18n/coll.cpp:448:16
>     #23 0x7fc3f196cf17 in com::sun::star::i18n::Collator_Unicode::loadCollatorAlgorithm(rtl::OUString const&, com::sun::star::lang::Locale const&, int) i18npool/source/collator/collator_unicode.cxx:375:57
>     #24 0x7fc3f1945c22 in com::sun::star::i18n::CollatorImpl::loadCollatorAlgorithm(rtl::OUString const&, com::sun::star::lang::Locale const&, int) i18npool/source/collator/collatorImpl.cxx:93:25
>     #25 0x7fc3f1944a53 in com::sun::star::i18n::CollatorImpl::loadDefaultCollator(com::sun::star::lang::Locale const&, int) i18npool/source/collator/collatorImpl.cxx:79:20
>     #26 0x7fc41d2c12e6 in CollatorWrapper::loadDefaultCollator(com::sun::star::lang::Locale const&, int) unotools/source/i18n/collatorwrapper.cxx:75:45

Change-Id: I21868c0a80e06587f9ed802ec3f8d5a89f3cb9aa
tdf-gerrit pushed a commit that referenced this pull request Sep 2, 2024
 #0  ImpEditView::GetOutputArea (this=<optimized out>)
     at editeng/source/editeng/impedit.hxx:366
 #1  EditView::GetOutputArea (this=this@entry=0x0)
     at editeng/source/editeng/editview.cxx:442
 #2  0x00007fc50355663a in ScModelObj::setTextSelection(int, int, int) ()
     at sc/source/ui/unoobj/docuno.cxx:870
 #3  0x00007fc51206e910 in doc_setTextSelection ()
     at desktop/source/lib/init.cxx:5653
 #4  0x0000000000577c54 in lok::Document::setTextSelection (nY=<optimized out>, nX=<optimized out>, nType=<optimized out>,
     this=<optimized out>)

Change-Id: If30a32b6c365fb7fdcfcfcaa27e08ed39c75116f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172678
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit fc7e5f5)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172679
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
tdf-gerrit pushed a commit that referenced this pull request Sep 5, 2024
This fixes the following assert seen with the qt6 VCL plugin
when run with a current Qt 6 dev debug build for the tdf#162696
scenario when when native Qt widgets (currently only message dialogs
are implmeneted) are explicitly disabled using
`SAL_VCL_QT_NO_WELDED_WIDGETS=1`.

    ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qwidget.cpp, line 958
    terminate called after throwing an instance of 'com::sun::star::uno::RuntimeException'

    Fatal exception: Signal 6
    Stack:
    #0 sal::backtrace_get(unsigned int) at /home/michi/development/git/libreoffice/sal/osl/unx/backtraceapi.cxx:42
    #1 (anonymous namespace)::printStack(int) at /home/michi/development/git/libreoffice/sal/osl/unx/signal.cxx:289
    #2 (anonymous namespace)::callSystemHandler(int, siginfo_t*, void*) at /home/michi/development/git/libreoffice/sal/osl/unx/signal.cxx:330
    #3 (anonymous namespace)::signalHandlerFunction(int, siginfo_t*, void*) at /home/michi/development/git/libreoffice/sal/osl/unx/signal.cxx:427
    #4 /lib/x86_64-linux-gnu/libc.so.6(+0x3f590) [0x7f73cbe55590]
    #5 __pthread_kill_implementation at ./nptl/pthread_kill.c:44 (discriminator 1)
    #6 raise at ./signal/../sysdeps/posix/raise.c:27
    #7 abort at ./stdlib/abort.c:81
    #8 /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa1a3d) [0x7f73cbaa1a3d]
    #9 /lib/x86_64-linux-gnu/libstdc++.so.6(+0xb306a) [0x7f73cbab306a]
    #10 std::unexpected() in /lib/x86_64-linux-gnu/libstdc++.so.6
    #11 /home/michi/development/git/qt5/qtbase/lib/libQt6Core.so.6(+0xed562) [0x7f73b78ed562]
    #12 QMessageLogger::fatal() const at /home/michi/development/git/qt5/qtbase/src/corelib/global/qlogging.cpp:901
    #13 qt_assert_x(char const*, char const*, char const*, int) at /home/michi/development/git/qt5/qtbase/src/corelib/global/qassert.cpp:0
    #14 QWidgetPrivate::init(QWidget*, QFlags<Qt::WindowType>) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qwidget.cpp:959
    #15 QWidget::QWidget(QWidgetPrivate&, QWidget*, QFlags<Qt::WindowType>) at /home/michi/development/git/qt5/qtbase/src/widgets/kernel/qwidget.cpp:878
    #16 QMenuBar::QMenuBar(QWidget*) at /home/michi/development/git/qt5/qtbase/src/widgets/widgets/qmenubar.cpp:715
    #17 QMainWindow::menuBar() const at /home/michi/development/git/qt5/qtbase/src/widgets/widgets/qmainwindow.cpp:468
    #18 QtFrame::menuBarOffset() const at /home/michi/development/git/libreoffice/vcl/qt6/../qt5/QtFrame.cxx:462
    #19 QtFrame::SetDefaultPos() at /home/michi/development/git/libreoffice/vcl/qt6/../qt5/QtFrame.cxx:479
    #20 QtFrame::SetPosSize(long, long, long, long, unsigned short) at /home/michi/development/git/libreoffice/vcl/qt6/../qt5/QtFrame.cxx:565
    #21 vcl::Window::setPosSizePixel(long, long, long, long, PosSizeFlags) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:2786
    #22 vcl::Window::SetSizePixel(Size const&) at /home/michi/development/git/libreoffice/vcl/source/window/window2.cxx:1344
    #23 SystemWindow::setOptimalLayoutSize(bool) at /home/michi/development/git/libreoffice/vcl/source/window/syswin.cxx:1085
    #24 SystemWindow::DoInitialLayout() at /home/michi/development/git/libreoffice/vcl/source/window/syswin.cxx:1098
    #25 Dialog::StateChanged(StateChangedType) at /home/michi/development/git/libreoffice/vcl/source/window/dialog.cxx:761
    #26 MessageDialog::StateChanged(StateChangedType) at /home/michi/development/git/libreoffice/vcl/source/window/layout.cxx:2706
    #27 vcl::Window::CompatStateChanged(StateChangedType) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:3921
    #28 vcl::Window::ImplCallInitShow() at /home/michi/development/git/libreoffice/vcl/source/window/event.cxx:496
    #29 vcl::Window::Show(bool, ShowFlags) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:2312
    #30 Dialog::ImplStartExecute() at /home/michi/development/git/libreoffice/vcl/source/window/dialog.cxx:1021
    #31 Dialog::Execute() at /home/michi/development/git/libreoffice/vcl/source/window/dialog.cxx:1071
    #32 SalInstanceDialog::run() at /home/michi/development/git/libreoffice/vcl/source/app/salvtables.cxx:1898
    #33 dp_gui::(anonymous namespace)::ProgressCmdEnv::handle(com::sun::star::uno::Reference<com::sun::star::task::XInteractionRequest> const&) at /home/michi/development/git/libreoffice/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx:459
    #34 dp_misc::interactContinuation(com::sun::star::uno::Any const&, com::sun::star::uno::Type const&, com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> const&, bool*, bool*) at /home/michi/development/git/libreoffice/desktop/source/deployment/misc/dp_interact.cxx:114
    #35 dp_manager::ExtensionManager::checkUpdate(rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::deployment::XPackage> const&, com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> const&) at /home/michi/development/git/libreoffice/desktop/source/deployment/manager/dp_extensionmanager.cxx:1348
    [...]

Change-Id: I9eb0ac63c50de3c713328d0466cb01ea90251741
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172685
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
(cherry picked from commit 5ef991f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172674
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 7, 2024
The stack trace was:

Thread 1 "soffice.bin" received signal SIGSEGV, Segmentation fault.
0x00007ffff32175ee in rtl::OUString::OUString (this=0x7fffffffaac0, str=...) at /home/cono/git/lo/libreoffice/include/rtl/ustring.hxx:197
197	        pData = str.pData;
#0  0x00007ffff32175ee in rtl::OUString::OUString(rtl::OUString const&) (this=0x7fffffffaac0, str=...) at /home/cono/git/lo/libreoffice/include/rtl/ustring.hxx:197
#1  0x00007ffff3521e4f in GalleryBrowser1::GetItemText(SgaObject const&, GalleryItemFlags) (rObj=..., nItemTextFlags=GalleryItemFlags::Title) at /home/cono/git/lo/libreoffice/svx/source/gallery2/galbrws1.cxx:1412
#2  0x00007ffff352265d in GalleryBrowser1::FillThemeEntries() (this=0x55555c0c9240) at /home/cono/git/lo/libreoffice/svx/source/gallery2/galbrws1.cxx:1505
#3  0x00007ffff351a602 in GalleryBrowser1::GalleryBrowser1(weld::Builder&, Gallery*) (this=0x55555c0c9240, rBuilder=..., pGallery=0x55555c0a4aa0) at /home/cono/git/lo/libreoffice/svx/source/gallery2/galbrws1.cxx:196
#4  0x00007ffff354c291 in svx::sidebar::GalleryControl::GalleryControl(weld::Widget*) (this=0x55555c04e470, pParent=0x55555be85558) at /home/cono/git/lo/libreoffice/svx/source/gallery2/GalleryControl.cxx:32
#5  0x00007ffff45c72ea in std::make_unique<svx::sidebar::GalleryControl, weld::Widget*&>(weld::Widget*&) () at /usr/include/c++/12/bits/unique_ptr.h:1065
#6  0x00007ffff45c5f7a in (anonymous namespace)::PanelFactory::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x55555c0494e0, rsResourceURL=..., rArguments=...) at /home/cono/git/lo/libreoffice/svx/source/sidebar/PanelFactory.cxx:180
#7  0x00007ffff6412417 in (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x5555564db3e0, ResourceURL=..., Args=...) at /home/cono/git/lo/libreoffice/framework/source/uifactory/uielementfactorymanager.cxx:440
#8  0x00007ffff5593a35 in sfx2::sidebar::SidebarController::CreateUIElement(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, rtl::OUString const&, bool, sfx2::sidebar::Context const&) (this=0x55555b0a8100, rxWindow=..., rsImplementationURL=..., bWantsCanvas=false, rContext=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:1044
#9  0x00007ffff5593341 in sfx2::sidebar::SidebarController::CreatePanel(std::basic_string_view<char16_t, std::char_traits<char16_t> >, weld::Widget*, bool, sfx2::sidebar::Context const&, VclPtr<sfx2::sidebar::Deck> const&) (this=0x55555b0a8100, rsPanelId=u"GalleryPanel", pParentWindow=0x55555c040718, bIsInitiallyExpanded=true, rContext=..., pDeck=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:989
#10 0x00007ffff5592150 in sfx2::sidebar::SidebarController::CreatePanels(std::basic_string_view<char16_t, std::char_traits<char16_t> >, sfx2::sidebar::Context const&) (this=0x55555b0a8100, rDeckId=u"GalleryDeck", rContext=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:789
#11 0x00007ffff5591dbe in sfx2::sidebar::SidebarController::CreateDeck(std::basic_string_view<char16_t, std::char_traits<char16_t> >, sfx2::sidebar::Context const&, bool) (this=0x55555b0a8100, rDeckId=u"GalleryDeck", rContext=..., bForceCreate=false) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:737
#12 0x00007ffff5592b96 in sfx2::sidebar::SidebarController::SwitchToDeck(sfx2::sidebar::DeckDescriptor const&, sfx2::sidebar::Context const&) (this=0x55555b0a8100, rDeckDescriptor=..., rContext=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:899
#13 0x00007ffff5591b89 in sfx2::sidebar::SidebarController::SwitchToDeck(std::basic_string_view<char16_t, std::char_traits<char16_t> >) (this=0x55555b0a8100, rsDeckId=u"GalleryDeck") at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:708
#14 0x00007ffff5591936 in sfx2::sidebar::SidebarController::OpenThenToggleDeck(rtl::OUString const&) (this=0x55555b0a8100, rsDeckId=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:664
#15 0x00007ffff558d884 in operator()(rtl::OUString const&) const (__closure=0x7fffffffb7c0, rsDeckId=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:123
#16 0x00007ffff5598e13 in std::__invoke_impl<void, sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, const SfxViewFrame*)::<lambda(const rtl::OUString&)>&, const rtl::OUString&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/12/bits/invoke.h:61
#17 0x00007ffff559851c in std::__invoke_r<void, sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, const SfxViewFrame*)::<lambda(const rtl::OUString&)>&, const rtl::OUString&>(struct {...} &) (__fn=...) at /usr/include/c++/12/bits/invoke.h:111
#18 0x00007ffff5597b76 in std::_Function_handler<void(const rtl::OUString&), sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, const SfxViewFrame*)::<lambda(const rtl::OUString&)> >::_M_invoke(const std::_Any_data &, const rtl::OUString &) (__functor=..., __args#0=...) at /usr/include/c++/12/bits/std_function.h:290
#19 0x00007ffff55e2bed in std::function<void (rtl::OUString const&)>::operator()(rtl::OUString const&) const (this=0x7fffffffb7c0, __args#0=...) at /usr/include/c++/12/bits/std_function.h:591
#20 0x00007ffff55e09aa in sfx2::sidebar::TabBar::Item::HandleClick(rtl::OUString const&) (this=0x55555b133290) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/TabBar.cxx:274
#21 0x00007ffff55e0933 in sfx2::sidebar::TabBar::Item::LinkStubHandleClick(void*, rtl::OUString const&) (instance=0x55555b133290, data=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/TabBar.cxx:264
#22 0x00007fffe688a6b7 in Link<rtl::OUString const&, void>::Call(rtl::OUString const&) const (this=0x555556f7ee38, data=...) at /home/cono/git/lo/libreoffice/include/tools/link.hxx:111
#23 0x00007fffe68821c9 in weld::Toolbar::signal_clicked(rtl::OUString const&) (this=0x555556f7ee30, rIdent=...) at /home/cono/git/lo/libreoffice/include/vcl/weld.hxx:2512
#24 0x00007fffe683260b in (anonymous namespace)::GtkInstanceToolbar::signal_item_clicked(GtkToolButton*) (this=0x555556f7ebe0, pItem=0x55555b13a9a0) at /home/cono/git/lo/libreoffice/vcl/unx/gtk3/gtkinst.cxx:12009
#25 0x00007fffe6832553 in (anonymous namespace)::GtkInstanceToolbar::signalItemClicked(GtkToolButton*, gpointer) (pItem=0x55555b13a9a0, widget=0x555556f7ebe0) at /home/cono/git/lo/libreoffice/vcl/unx/gtk3/gtkinst.cxx:12000
...

I suspect that there is a corner case of some element giving a nullptr
in xSgaObject; but since I can't repro locally, it's just a guess. Other
places using AcquireObject in the file do check its return, so it seems
reasonable to do the same here.

Change-Id: I40c0d64a7219d483ec94f56c56a6df0ce79e9c51
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172280
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173027
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 8, 2024
The stack trace was:

Thread 1 "soffice.bin" received signal SIGSEGV, Segmentation fault.
0x00007ffff32175ee in rtl::OUString::OUString (this=0x7fffffffaac0, str=...) at /home/cono/git/lo/libreoffice/include/rtl/ustring.hxx:197
197	        pData = str.pData;
#0  0x00007ffff32175ee in rtl::OUString::OUString(rtl::OUString const&) (this=0x7fffffffaac0, str=...) at /home/cono/git/lo/libreoffice/include/rtl/ustring.hxx:197
#1  0x00007ffff3521e4f in GalleryBrowser1::GetItemText(SgaObject const&, GalleryItemFlags) (rObj=..., nItemTextFlags=GalleryItemFlags::Title) at /home/cono/git/lo/libreoffice/svx/source/gallery2/galbrws1.cxx:1412
#2  0x00007ffff352265d in GalleryBrowser1::FillThemeEntries() (this=0x55555c0c9240) at /home/cono/git/lo/libreoffice/svx/source/gallery2/galbrws1.cxx:1505
#3  0x00007ffff351a602 in GalleryBrowser1::GalleryBrowser1(weld::Builder&, Gallery*) (this=0x55555c0c9240, rBuilder=..., pGallery=0x55555c0a4aa0) at /home/cono/git/lo/libreoffice/svx/source/gallery2/galbrws1.cxx:196
#4  0x00007ffff354c291 in svx::sidebar::GalleryControl::GalleryControl(weld::Widget*) (this=0x55555c04e470, pParent=0x55555be85558) at /home/cono/git/lo/libreoffice/svx/source/gallery2/GalleryControl.cxx:32
#5  0x00007ffff45c72ea in std::make_unique<svx::sidebar::GalleryControl, weld::Widget*&>(weld::Widget*&) () at /usr/include/c++/12/bits/unique_ptr.h:1065
#6  0x00007ffff45c5f7a in (anonymous namespace)::PanelFactory::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x55555c0494e0, rsResourceURL=..., rArguments=...) at /home/cono/git/lo/libreoffice/svx/source/sidebar/PanelFactory.cxx:180
#7  0x00007ffff6412417 in (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x5555564db3e0, ResourceURL=..., Args=...) at /home/cono/git/lo/libreoffice/framework/source/uifactory/uielementfactorymanager.cxx:440
#8  0x00007ffff5593a35 in sfx2::sidebar::SidebarController::CreateUIElement(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, rtl::OUString const&, bool, sfx2::sidebar::Context const&) (this=0x55555b0a8100, rxWindow=..., rsImplementationURL=..., bWantsCanvas=false, rContext=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:1044
#9  0x00007ffff5593341 in sfx2::sidebar::SidebarController::CreatePanel(std::basic_string_view<char16_t, std::char_traits<char16_t> >, weld::Widget*, bool, sfx2::sidebar::Context const&, VclPtr<sfx2::sidebar::Deck> const&) (this=0x55555b0a8100, rsPanelId=u"GalleryPanel", pParentWindow=0x55555c040718, bIsInitiallyExpanded=true, rContext=..., pDeck=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:989
#10 0x00007ffff5592150 in sfx2::sidebar::SidebarController::CreatePanels(std::basic_string_view<char16_t, std::char_traits<char16_t> >, sfx2::sidebar::Context const&) (this=0x55555b0a8100, rDeckId=u"GalleryDeck", rContext=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:789
#11 0x00007ffff5591dbe in sfx2::sidebar::SidebarController::CreateDeck(std::basic_string_view<char16_t, std::char_traits<char16_t> >, sfx2::sidebar::Context const&, bool) (this=0x55555b0a8100, rDeckId=u"GalleryDeck", rContext=..., bForceCreate=false) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:737
#12 0x00007ffff5592b96 in sfx2::sidebar::SidebarController::SwitchToDeck(sfx2::sidebar::DeckDescriptor const&, sfx2::sidebar::Context const&) (this=0x55555b0a8100, rDeckDescriptor=..., rContext=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:899
#13 0x00007ffff5591b89 in sfx2::sidebar::SidebarController::SwitchToDeck(std::basic_string_view<char16_t, std::char_traits<char16_t> >) (this=0x55555b0a8100, rsDeckId=u"GalleryDeck") at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:708
#14 0x00007ffff5591936 in sfx2::sidebar::SidebarController::OpenThenToggleDeck(rtl::OUString const&) (this=0x55555b0a8100, rsDeckId=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:664
#15 0x00007ffff558d884 in operator()(rtl::OUString const&) const (__closure=0x7fffffffb7c0, rsDeckId=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/SidebarController.cxx:123
#16 0x00007ffff5598e13 in std::__invoke_impl<void, sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, const SfxViewFrame*)::<lambda(const rtl::OUString&)>&, const rtl::OUString&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/12/bits/invoke.h:61
#17 0x00007ffff559851c in std::__invoke_r<void, sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, const SfxViewFrame*)::<lambda(const rtl::OUString&)>&, const rtl::OUString&>(struct {...} &) (__fn=...) at /usr/include/c++/12/bits/invoke.h:111
#18 0x00007ffff5597b76 in std::_Function_handler<void(const rtl::OUString&), sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, const SfxViewFrame*)::<lambda(const rtl::OUString&)> >::_M_invoke(const std::_Any_data &, const rtl::OUString &) (__functor=..., __args#0=...) at /usr/include/c++/12/bits/std_function.h:290
#19 0x00007ffff55e2bed in std::function<void (rtl::OUString const&)>::operator()(rtl::OUString const&) const (this=0x7fffffffb7c0, __args#0=...) at /usr/include/c++/12/bits/std_function.h:591
#20 0x00007ffff55e09aa in sfx2::sidebar::TabBar::Item::HandleClick(rtl::OUString const&) (this=0x55555b133290) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/TabBar.cxx:274
#21 0x00007ffff55e0933 in sfx2::sidebar::TabBar::Item::LinkStubHandleClick(void*, rtl::OUString const&) (instance=0x55555b133290, data=...) at /home/cono/git/lo/libreoffice/sfx2/source/sidebar/TabBar.cxx:264
#22 0x00007fffe688a6b7 in Link<rtl::OUString const&, void>::Call(rtl::OUString const&) const (this=0x555556f7ee38, data=...) at /home/cono/git/lo/libreoffice/include/tools/link.hxx:111
#23 0x00007fffe68821c9 in weld::Toolbar::signal_clicked(rtl::OUString const&) (this=0x555556f7ee30, rIdent=...) at /home/cono/git/lo/libreoffice/include/vcl/weld.hxx:2512
#24 0x00007fffe683260b in (anonymous namespace)::GtkInstanceToolbar::signal_item_clicked(GtkToolButton*) (this=0x555556f7ebe0, pItem=0x55555b13a9a0) at /home/cono/git/lo/libreoffice/vcl/unx/gtk3/gtkinst.cxx:12009
#25 0x00007fffe6832553 in (anonymous namespace)::GtkInstanceToolbar::signalItemClicked(GtkToolButton*, gpointer) (pItem=0x55555b13a9a0, widget=0x555556f7ebe0) at /home/cono/git/lo/libreoffice/vcl/unx/gtk3/gtkinst.cxx:12000
...

I suspect that there is a corner case of some element giving a nullptr
in xSgaObject; but since I can't repro locally, it's just a guess. Other
places using AcquireObject in the file do check its return, so it seems
reasonable to do the same here.

Change-Id: I40c0d64a7219d483ec94f56c56a6df0ce79e9c51
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172280
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173027
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173031
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 10, 2024
At least with one ASan/UBSan setup of mine using LODE's Clang 12.0.1,
./autogen.sh would occasionally detect -std=gnu11 as the required CC "option to
enable C11 features" (which would in turn cause building external/firebird to
fail oddly; an issue worth investigations of its own), because Clang would
occasionally crash with a SEGV on the corresponding configure test program's
first invocation (without -std=gnu11) when invoked with -O2 (and happen to
succeed on second invocation with -std=gnu11, so configure thinks that's
needed), see below for a relevant config.log excerpt.

When CC/CXX are already set (as is the case in this scenario), we could arguably
skip the AC_PROG_CC/CXX checks entirely (and thus avoid configure potentially
adding -std=gnu11 to CC), but at least AC_PROG_CC also internally sets the GCC
shell var, which we use in configure.ac.  So better be conservative and just
avoid -O2 during AC_PROG_CC/CXX (whatever the autoconf motivation to include it
in the first place).

> configure:8165: checking for /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist option to enable C11 features
> configure:8180: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist  -c -g -O2  conftest.c >&5
> PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
> Stack dump:
> 0.	Program arguments: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist -c -g -O2 conftest.c
> 1.	<eof> parser at end of file
> 2.	Code generation
>  #0 0x000055f3a890caf2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1c3eaf2)
>  #1 0x000055f3a890a734 llvm::sys::RunSignalHandlers() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1c3c734)
>  #2 0x000055f3a887b998 CrashRecoverySignalHandler(int) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1bad998)
>  #3 0x00007f750d24e520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
>  #4 0x000055f3a93f9cd4 llvm::DIE::getUnitDie() const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x272bcd4)
>  #5 0x000055f3a9404574 llvm::DwarfDebug::finishEntityDefinitions() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2736574)
>  #6 0x000055f3a941df99 llvm::DwarfDebug::finalizeModuleInfo() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x274ff99)
>  #7 0x000055f3a9421128 llvm::DwarfDebug::endModule() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2753128)
>  #8 0x000055f3a93f1219 llvm::AsmPrinter::doFinalization(llvm::Module&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2723219)
>  #9 0x000055f3a82478f5 llvm::FPPassManager::doFinalization(llvm::Module&) (.localalias) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x15798f5)
> #10 0x000055f3a8253900 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1585900)
> #11 0x000055f3a8bb57d3 (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (.constprop.0) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1ee77d3)
> #12 0x000055f3a8bb76ea clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1ee96ea)
> #13 0x000055f3a9825876 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2b57876)
> #14 0x000055f3aa35c549 clang::ParseAST(clang::Sema&, bool, bool) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x368e549)
> #15 0x000055f3a91ef2d9 clang::FrontendAction::Execute() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x25212d9)
> #16 0x000055f3a91903a3 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x24c23a3)
> #17 0x000055f3a92a2fd8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x25d4fd8)
> #18 0x000055f3a7798815 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xaca815)
> #19 0x000055f3a77961a7 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xac81a7)
> #20 0x000055f3a9039689 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x236b689)
> #21 0x000055f3a887baa7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1badaa7)
> #22 0x000055f3a903a802 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (.part.0) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x236c802)
> #23 0x000055f3a900fbec clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2341bec)
> #24 0x000055f3a9010679 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2342679)
> #25 0x000055f3a901e8f1 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x23508f1)
> #26 0x000055f3a7717e6f main (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xa49e6f)
> #27 0x00007f750d235d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
> #28 0x00007f750d235e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
> #29 0x000055f3a7795b55 _start (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xac7b55)
> clang-12: error: clang frontend command failed with exit code 139 (use -v to see invocation)
> clang version 12.0.1 (https://github.com/llvm/llvm-project.git fed41342a82f5a3a9201819a82bf7a48313e296b)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
> InstalledDir: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin
> clang-12: note: diagnostic msg:
> ********************
>
> PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
> Preprocessed source(s) and associated run script(s) are located at:
> clang-12: note: diagnostic msg: /tmp/conftest-968380.c
> clang-12: note: diagnostic msg: /tmp/conftest-968380.sh
> clang-12: note: diagnostic msg:
>
> ********************
> configure:8180: $? = 139
> configure: failed program was:
> | /* confdefs.h */
> | #define PACKAGE_NAME "LibreOffice"
> | #define PACKAGE_TARNAME "libreoffice"
> | #define PACKAGE_VERSION "24.8.0.0.alpha0+"
> | #define PACKAGE_STRING "LibreOffice 24.8.0.0.alpha0+"
> | #define PACKAGE_BUGREPORT ""
> | #define PACKAGE_URL "http://documentfoundation.org/"
> | #define LIBO_VERSION_MAJOR 24
> | #define LIBO_VERSION_MINOR 8
> | #define LIBO_VERSION_MICRO 0
> | #define LIBO_VERSION_PATCH 0
> | #define LIBO_THIS_YEAR 2024
> | #define SRCDIR "/home/sberg/lo0/core"
> | #define SRC_ROOT "/home/sberg/lo0/core"
> | #define BUILDDIR "/home/sberg/lo0/core"
> | #define USE_HEADLESS_CODE 1
> | #define ENABLE_HEADLESS 1
> | /* end confdefs.h.  */
> |
> | /* Does the compiler advertise C89 conformance?
> |    Do not test the value of __STDC__, because some compilers set it to 0
> |    while being otherwise adequately conformant. */
> | #if !defined __STDC__
> | # error "Compiler does not advertise C89 conformance"
> | #endif
> |
> | #include <stddef.h>
> | #include <stdarg.h>
> | struct stat;
> | /* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
> | struct buf { int x; };
> | struct buf * (*rcsopen) (struct buf *, struct stat *, int);
> | static char *e (p, i)
> |      char **p;
> |      int i;
> | {
> |   return p[i];
> | }
> | static char *f (char * (*g) (char **, int), char **p, ...)
> | {
> |   char *s;
> |   va_list v;
> |   va_start (v,p);
> |   s = g (p, va_arg (v,int));
> |   va_end (v);
> |   return s;
> | }
> |
> | /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
> |    function prototypes and stuff, but not \xHH hex character constants.
> |    These do not provoke an error unfortunately, instead are silently treated
> |    as an "x".  The following induces an error, until -std is added to get
> |    proper ANSI mode.  Curiously \x00 != x always comes out true, for an
> |    array size at least.  It is necessary to write \x00 == 0 to get something
> |    that is true only with -std.  */
> | int osf4_cc_array ['\x00' == 0 ? 1 : -1];
> |
> | /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
> |    inside strings and character constants.  */
> | #define FOO(x) 'x'
> | int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
> |
> | int test (int i, double x);
> | struct s1 {int (*f) (int a);};
> | struct s2 {int (*f) (double a);};
> | int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
> |                int, int);
> |
> | // Does the compiler advertise C99 conformance?
> | #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
> | # error "Compiler does not advertise C99 conformance"
> | #endif
> |
> | #include <stdbool.h>
> | extern int puts (const char *);
> | extern int printf (const char *, ...);
> | extern int dprintf (int, const char *, ...);
> | extern void *malloc (size_t);
> |
> | // Check varargs macros.  These examples are taken from C99 6.10.3.5.
> | // dprintf is used instead of fprintf to avoid needing to declare
> | // FILE and stderr.
> | #define debug(...) dprintf (2, __VA_ARGS__)
> | #define showlist(...) puts (#__VA_ARGS__)
> | #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
> | static void
> | test_varargs_macros (void)
> | {
> |   int x = 1234;
> |   int y = 5678;
> |   debug ("Flag");
> |   debug ("X = %d\n", x);
> |   showlist (The first, second, and third items.);
> |   report (x>y, "x is %d but y is %d", x, y);
> | }
> |
> | // Check long long types.
> | #define BIG64 18446744073709551615ull
> | #define BIG32 4294967295ul
> | #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
> | #if !BIG_OK
> |   #error "your preprocessor is broken"
> | #endif
> | #if BIG_OK
> | #else
> |   #error "your preprocessor is broken"
> | #endif
> | static long long int bignum = -9223372036854775807LL;
> | static unsigned long long int ubignum = BIG64;
> |
> | struct incomplete_array
> | {
> |   int datasize;
> |   double data[];
> | };
> |
> | struct named_init {
> |   int number;
> |   const wchar_t *name;
> |   double average;
> | };
> |
> | typedef const char *ccp;
> |
> | static inline int
> | test_restrict (ccp restrict text)
> | {
> |   // See if C++-style comments work.
> |   // Iterate through items via the restricted pointer.
> |   // Also check for declarations in for loops.
> |   for (unsigned int i = 0; *(text+i) != '\0'; ++i)
> |     continue;
> |   return 0;
> | }
> |
> | // Check varargs and va_copy.
> | static bool
> | test_varargs (const char *format, ...)
> | {
> |   va_list args;
> |   va_start (args, format);
> |   va_list args_copy;
> |   va_copy (args_copy, args);
> |
> |   const char *str = "";
> |   int number = 0;
> |   float fnumber = 0;
> |
> |   while (*format)
> |     {
> |       switch (*format++)
> | 	{
> | 	case 's': // string
> | 	  str = va_arg (args_copy, const char *);
> | 	  break;
> | 	case 'd': // int
> | 	  number = va_arg (args_copy, int);
> | 	  break;
> | 	case 'f': // float
> | 	  fnumber = va_arg (args_copy, double);
> | 	  break;
> | 	default:
> | 	  break;
> | 	}
> |     }
> |   va_end (args_copy);
> |   va_end (args);
> |
> |   return *str && number && fnumber;
> | }
> |
> |
> | // Does the compiler advertise C11 conformance?
> | #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
> | # error "Compiler does not advertise C11 conformance"
> | #endif
> |
> | // Check _Alignas.
> | char _Alignas (double) aligned_as_double;
> | char _Alignas (0) no_special_alignment;
> | extern char aligned_as_int;
> | char _Alignas (0) _Alignas (int) aligned_as_int;
> |
> | // Check _Alignof.
> | enum
> | {
> |   int_alignment = _Alignof (int),
> |   int_array_alignment = _Alignof (int[100]),
> |   char_alignment = _Alignof (char)
> | };
> | _Static_assert (0 < -_Alignof (int), "_Alignof is signed");
> |
> | // Check _Noreturn.
> | int _Noreturn does_not_return (void) { for (;;) continue; }
> |
> | // Check _Static_assert.
> | struct test_static_assert
> | {
> |   int x;
> |   _Static_assert (sizeof (int) <= sizeof (long int),
> |                   "_Static_assert does not work in struct");
> |   long int y;
> | };
> |
> | // Check UTF-8 literals.
> | #define u8 syntax error!
> | char const utf8_literal[] = u8"happens to be ASCII" "another string";
> |
> | // Check duplicate typedefs.
> | typedef long *long_ptr;
> | typedef long int *long_ptr;
> | typedef long_ptr long_ptr;
> |
> | // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
> | struct anonymous
> | {
> |   union {
> |     struct { int i; int j; };
> |     struct { int k; long int l; } w;
> |   };
> |   int m;
> | } v1;
> |
> |
> | int
> | main (int argc, char **argv)
> | {
> |   int ok = 0;
> |
> | ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
> |
> |
> |   // Check bool.
> |   _Bool success = false;
> |   success |= (argc != 0);
> |
> |   // Check restrict.
> |   if (test_restrict ("String literal") == 0)
> |     success = true;
> |   char *restrict newvar = "Another string";
> |
> |   // Check varargs.
> |   success &= test_varargs ("s, d' f .", "string", 65, 34.234);
> |   test_varargs_macros ();
> |
> |   // Check flexible array members.
> |   struct incomplete_array *ia =
> |     malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
> |   ia->datasize = 10;
> |   for (int i = 0; i < ia->datasize; ++i)
> |     ia->data[i] = i * 1.234;
> |
> |   // Check named initializers.
> |   struct named_init ni = {
> |     .number = 34,
> |     .name = L"Test wide string",
> |     .average = 543.34343,
> |   };
> |
> |   ni.number = 58;
> |
> |   int dynamic_array[ni.number];
> |   dynamic_array[0] = argv[0][0];
> |   dynamic_array[ni.number - 1] = 543;
> |
> |   // work around unused variable warnings
> |   ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
> | 	 || dynamic_array[ni.number - 1] != 543);
> |
> |
> |   _Static_assert ((offsetof (struct anonymous, i)
> | 		   == offsetof (struct anonymous, w.k)),
> | 		  "Anonymous union alignment botch");
> |   v1.i = 2;
> |   v1.w.k = 5;
> |   ok |= v1.i != 5;
> |
> |   return ok;
> | }
> |
> configure:8180: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist -std=gnu11 -c -g -O2  conftest.c >&5
> configure:8180: $? = 0
> configure:8201: result: -std=gnu11

Change-Id: I9122d0d853d0010155d57cb1d1d56f7c453d5208
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165904
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
(cherry picked from commit 42f6e89)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173098
Tested-by: allotropia jenkins <jenkins@allotropia.de>
tdf-gerrit pushed a commit that referenced this pull request Sep 12, 2024
warn and use the default pool pattern if this happens

 #0  WhichRangesContainer::getOffsetFromWhich (this=this@entry=0x38, nWhich=nWhich@entry=129) at libreoffice/svl/source/items/itemset.cxx:1895
 #1  0x00007fe0179fa4ac in SfxItemSet::Get (this=0x10, nWhich=129, bSrchInParent=<optimized out>) at libreoffice/svl/source/items/itemset.cxx:1152
 #2  0x00007fe00736aa2e in ScPatternAttr::GetItem (nWhichP=129, this=0x0) at libreoffice/sc/inc/patattr.hxx:71
 #3  ScPatternAttr::GetItem<SvxHorJustifyItem> (nWhich=..., this=0x0) at libreoffice/sc/inc/patattr.hxx:73
 #4  ScViewData::SetEditEngine (this=this@entry=0x3323c540, eWhich=eWhich@entry=SC_SPLIT_BOTTOMLEFT, pNewEngine=<optimized out>, pWin=pWin@entry=0x32eec4f0, nNewX=nNewX@entry=-1, nNewY=nNewY@entry=-1)
     at libreoffice/sc/source/ui/view/viewdata.cxx:1613
 #5  0x00007fe00731c2f1 in ScTabView::UpdateEditView (this=this@entry=0x3323c538) at libreoffice/sc/source/ui/view/tabview3.cxx:2248
 #6  0x00007fe00731c9ae in ScTabView::UpdateFormulas (this=this@entry=0x3323c538, nStartCol=nStartCol@entry=-1, nStartRow=nStartRow@entry=-1, nEndCol=nEndCol@entry=-1, nEndRow=nEndRow@entry=-1)
     at libreoffice/sc/source/ui/view/tabview3.cxx:2393
 #7  0x00007fe007338bc5 in ScTabViewShell::Notify (this=0x3323c330, rBC=..., rHint=...) at libreoffice/sc/source/ui/view/tabvwsh5.cxx:219
 #8  0x00007fe017a29bb9 in SfxBroadcaster::Broadcast (this=this@entry=0x2fd10a70, rHint=...) at libreoffice/svl/source/notify/SfxBroadcaster.cxx:40
 #9  0x00007fe006f27c3f in ScDocShell::PostDataChanged (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh3.cxx:95
 #10 0x00007fe006f17dfc in ScDocShell::SetDocumentModified (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh.cxx:3050
 #11 0x00007fe007382e7c in ScViewFunc::DeleteTables (this=this@entry=0x3464aa28, TheTabs=std::vector of length 1, capacity 1 = {...}, bRecord=<optimized out>, bRecord@entry=true)
     at libreoffice/sc/source/ui/view/viewfun2.cxx:2656
 #12 0x00007fe007350825 in ScTabViewShell::ExecuteTable (this=0x3464a820, rReq=...) at libreoffice/sc/source/ui/view/tabvwshf.cxx:910
 #13 0x00007fe0175d0cef in SfxDispatcher::Call_Impl (this=0x340a1b70, rShell=..., rSlot=..., rReq=..., bRecord=<optimized out>)
     at libreoffice/sfx2/source/control/dispatch.cxx:254
 #14 0x00007fe0175d8daa in SfxDispatcher::Execute (this=0x340a1b70, nSlot=<optimized out>, nCall=nCall@entry=SfxCallMode::RECORD, pArgs=pArgs@entry=0x7ffe3c51edf0, pInternalArgs=pInternalArgs@entry=0x7ffe3c51ed90, nModi=0)
     at libreoffice/sfx2/source/control/dispatch.cxx:813
 #15 0x00007fe0176166f5 in SfxDispatchController_Impl::dispatch (this=<optimized out>, aURL=..., aArgs=uno::Sequence of length 1 = {...}, rListener=empty uno::Reference)
    at libreoffice/include/sfx2/ctrlitem.hxx:63

Change-Id: Ib4851414a277a293d6bc44b4ffcd33d332e3c57e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173183
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 13, 2024
warn and use the default pool pattern if this happens

 #0  WhichRangesContainer::getOffsetFromWhich (this=this@entry=0x38, nWhich=nWhich@entry=129) at libreoffice/svl/source/items/itemset.cxx:1895
 #1  0x00007fe0179fa4ac in SfxItemSet::Get (this=0x10, nWhich=129, bSrchInParent=<optimized out>) at libreoffice/svl/source/items/itemset.cxx:1152
 #2  0x00007fe00736aa2e in ScPatternAttr::GetItem (nWhichP=129, this=0x0) at libreoffice/sc/inc/patattr.hxx:71
 #3  ScPatternAttr::GetItem<SvxHorJustifyItem> (nWhich=..., this=0x0) at libreoffice/sc/inc/patattr.hxx:73
 #4  ScViewData::SetEditEngine (this=this@entry=0x3323c540, eWhich=eWhich@entry=SC_SPLIT_BOTTOMLEFT, pNewEngine=<optimized out>, pWin=pWin@entry=0x32eec4f0, nNewX=nNewX@entry=-1, nNewY=nNewY@entry=-1)
     at libreoffice/sc/source/ui/view/viewdata.cxx:1613
 #5  0x00007fe00731c2f1 in ScTabView::UpdateEditView (this=this@entry=0x3323c538) at libreoffice/sc/source/ui/view/tabview3.cxx:2248
 #6  0x00007fe00731c9ae in ScTabView::UpdateFormulas (this=this@entry=0x3323c538, nStartCol=nStartCol@entry=-1, nStartRow=nStartRow@entry=-1, nEndCol=nEndCol@entry=-1, nEndRow=nEndRow@entry=-1)
     at libreoffice/sc/source/ui/view/tabview3.cxx:2393
 #7  0x00007fe007338bc5 in ScTabViewShell::Notify (this=0x3323c330, rBC=..., rHint=...) at libreoffice/sc/source/ui/view/tabvwsh5.cxx:219
 #8  0x00007fe017a29bb9 in SfxBroadcaster::Broadcast (this=this@entry=0x2fd10a70, rHint=...) at libreoffice/svl/source/notify/SfxBroadcaster.cxx:40
 #9  0x00007fe006f27c3f in ScDocShell::PostDataChanged (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh3.cxx:95
 #10 0x00007fe006f17dfc in ScDocShell::SetDocumentModified (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh.cxx:3050
 #11 0x00007fe007382e7c in ScViewFunc::DeleteTables (this=this@entry=0x3464aa28, TheTabs=std::vector of length 1, capacity 1 = {...}, bRecord=<optimized out>, bRecord@entry=true)
     at libreoffice/sc/source/ui/view/viewfun2.cxx:2656
 #12 0x00007fe007350825 in ScTabViewShell::ExecuteTable (this=0x3464a820, rReq=...) at libreoffice/sc/source/ui/view/tabvwshf.cxx:910
 #13 0x00007fe0175d0cef in SfxDispatcher::Call_Impl (this=0x340a1b70, rShell=..., rSlot=..., rReq=..., bRecord=<optimized out>)
     at libreoffice/sfx2/source/control/dispatch.cxx:254
 #14 0x00007fe0175d8daa in SfxDispatcher::Execute (this=0x340a1b70, nSlot=<optimized out>, nCall=nCall@entry=SfxCallMode::RECORD, pArgs=pArgs@entry=0x7ffe3c51edf0, pInternalArgs=pInternalArgs@entry=0x7ffe3c51ed90, nModi=0)
     at libreoffice/sfx2/source/control/dispatch.cxx:813
 #15 0x00007fe0176166f5 in SfxDispatchController_Impl::dispatch (this=<optimized out>, aURL=..., aArgs=uno::Sequence of length 1 = {...}, rListener=empty uno::Reference)
    at libreoffice/include/sfx2/ctrlitem.hxx:63

Change-Id: Ib4851414a277a293d6bc44b4ffcd33d332e3c57e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173256
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 13, 2024
warn and use the default pool pattern if this happens

 #0  WhichRangesContainer::getOffsetFromWhich (this=this@entry=0x38, nWhich=nWhich@entry=129) at libreoffice/svl/source/items/itemset.cxx:1895
 #1  0x00007fe0179fa4ac in SfxItemSet::Get (this=0x10, nWhich=129, bSrchInParent=<optimized out>) at libreoffice/svl/source/items/itemset.cxx:1152
 #2  0x00007fe00736aa2e in ScPatternAttr::GetItem (nWhichP=129, this=0x0) at libreoffice/sc/inc/patattr.hxx:71
 #3  ScPatternAttr::GetItem<SvxHorJustifyItem> (nWhich=..., this=0x0) at libreoffice/sc/inc/patattr.hxx:73
 #4  ScViewData::SetEditEngine (this=this@entry=0x3323c540, eWhich=eWhich@entry=SC_SPLIT_BOTTOMLEFT, pNewEngine=<optimized out>, pWin=pWin@entry=0x32eec4f0, nNewX=nNewX@entry=-1, nNewY=nNewY@entry=-1)
     at libreoffice/sc/source/ui/view/viewdata.cxx:1613
 #5  0x00007fe00731c2f1 in ScTabView::UpdateEditView (this=this@entry=0x3323c538) at libreoffice/sc/source/ui/view/tabview3.cxx:2248
 #6  0x00007fe00731c9ae in ScTabView::UpdateFormulas (this=this@entry=0x3323c538, nStartCol=nStartCol@entry=-1, nStartRow=nStartRow@entry=-1, nEndCol=nEndCol@entry=-1, nEndRow=nEndRow@entry=-1)
     at libreoffice/sc/source/ui/view/tabview3.cxx:2393
 #7  0x00007fe007338bc5 in ScTabViewShell::Notify (this=0x3323c330, rBC=..., rHint=...) at libreoffice/sc/source/ui/view/tabvwsh5.cxx:219
 #8  0x00007fe017a29bb9 in SfxBroadcaster::Broadcast (this=this@entry=0x2fd10a70, rHint=...) at libreoffice/svl/source/notify/SfxBroadcaster.cxx:40
 #9  0x00007fe006f27c3f in ScDocShell::PostDataChanged (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh3.cxx:95
 #10 0x00007fe006f17dfc in ScDocShell::SetDocumentModified (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh.cxx:3050
 #11 0x00007fe007382e7c in ScViewFunc::DeleteTables (this=this@entry=0x3464aa28, TheTabs=std::vector of length 1, capacity 1 = {...}, bRecord=<optimized out>, bRecord@entry=true)
     at libreoffice/sc/source/ui/view/viewfun2.cxx:2656
 #12 0x00007fe007350825 in ScTabViewShell::ExecuteTable (this=0x3464a820, rReq=...) at libreoffice/sc/source/ui/view/tabvwshf.cxx:910
 #13 0x00007fe0175d0cef in SfxDispatcher::Call_Impl (this=0x340a1b70, rShell=..., rSlot=..., rReq=..., bRecord=<optimized out>)
     at libreoffice/sfx2/source/control/dispatch.cxx:254
 #14 0x00007fe0175d8daa in SfxDispatcher::Execute (this=0x340a1b70, nSlot=<optimized out>, nCall=nCall@entry=SfxCallMode::RECORD, pArgs=pArgs@entry=0x7ffe3c51edf0, pInternalArgs=pInternalArgs@entry=0x7ffe3c51ed90, nModi=0)
     at libreoffice/sfx2/source/control/dispatch.cxx:813
 #15 0x00007fe0176166f5 in SfxDispatchController_Impl::dispatch (this=<optimized out>, aURL=..., aArgs=uno::Sequence of length 1 = {...}, rListener=empty uno::Reference)
    at libreoffice/include/sfx2/ctrlitem.hxx:63

Change-Id: Ib4851414a277a293d6bc44b4ffcd33d332e3c57e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173256
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 13, 2024
warn and use the default pool pattern if this happens

 #0  WhichRangesContainer::getOffsetFromWhich (this=this@entry=0x38, nWhich=nWhich@entry=129) at libreoffice/svl/source/items/itemset.cxx:1895
 #1  0x00007fe0179fa4ac in SfxItemSet::Get (this=0x10, nWhich=129, bSrchInParent=<optimized out>) at libreoffice/svl/source/items/itemset.cxx:1152
 #2  0x00007fe00736aa2e in ScPatternAttr::GetItem (nWhichP=129, this=0x0) at libreoffice/sc/inc/patattr.hxx:71
 #3  ScPatternAttr::GetItem<SvxHorJustifyItem> (nWhich=..., this=0x0) at libreoffice/sc/inc/patattr.hxx:73
 #4  ScViewData::SetEditEngine (this=this@entry=0x3323c540, eWhich=eWhich@entry=SC_SPLIT_BOTTOMLEFT, pNewEngine=<optimized out>, pWin=pWin@entry=0x32eec4f0, nNewX=nNewX@entry=-1, nNewY=nNewY@entry=-1)
     at libreoffice/sc/source/ui/view/viewdata.cxx:1613
 #5  0x00007fe00731c2f1 in ScTabView::UpdateEditView (this=this@entry=0x3323c538) at libreoffice/sc/source/ui/view/tabview3.cxx:2248
 #6  0x00007fe00731c9ae in ScTabView::UpdateFormulas (this=this@entry=0x3323c538, nStartCol=nStartCol@entry=-1, nStartRow=nStartRow@entry=-1, nEndCol=nEndCol@entry=-1, nEndRow=nEndRow@entry=-1)
     at libreoffice/sc/source/ui/view/tabview3.cxx:2393
 #7  0x00007fe007338bc5 in ScTabViewShell::Notify (this=0x3323c330, rBC=..., rHint=...) at libreoffice/sc/source/ui/view/tabvwsh5.cxx:219
 #8  0x00007fe017a29bb9 in SfxBroadcaster::Broadcast (this=this@entry=0x2fd10a70, rHint=...) at libreoffice/svl/source/notify/SfxBroadcaster.cxx:40
 #9  0x00007fe006f27c3f in ScDocShell::PostDataChanged (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh3.cxx:95
 #10 0x00007fe006f17dfc in ScDocShell::SetDocumentModified (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh.cxx:3050
 #11 0x00007fe007382e7c in ScViewFunc::DeleteTables (this=this@entry=0x3464aa28, TheTabs=std::vector of length 1, capacity 1 = {...}, bRecord=<optimized out>, bRecord@entry=true)
     at libreoffice/sc/source/ui/view/viewfun2.cxx:2656
 #12 0x00007fe007350825 in ScTabViewShell::ExecuteTable (this=0x3464a820, rReq=...) at libreoffice/sc/source/ui/view/tabvwshf.cxx:910
 #13 0x00007fe0175d0cef in SfxDispatcher::Call_Impl (this=0x340a1b70, rShell=..., rSlot=..., rReq=..., bRecord=<optimized out>)
     at libreoffice/sfx2/source/control/dispatch.cxx:254
 #14 0x00007fe0175d8daa in SfxDispatcher::Execute (this=0x340a1b70, nSlot=<optimized out>, nCall=nCall@entry=SfxCallMode::RECORD, pArgs=pArgs@entry=0x7ffe3c51edf0, pInternalArgs=pInternalArgs@entry=0x7ffe3c51ed90, nModi=0)
     at libreoffice/sfx2/source/control/dispatch.cxx:813
 #15 0x00007fe0176166f5 in SfxDispatchController_Impl::dispatch (this=<optimized out>, aURL=..., aArgs=uno::Sequence of length 1 = {...}, rListener=empty uno::Reference)
    at libreoffice/include/sfx2/ctrlitem.hxx:63

Change-Id: Ib4851414a277a293d6bc44b4ffcd33d332e3c57e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173183
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 1943771)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173293
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
tdf-gerrit pushed a commit that referenced this pull request Sep 15, 2024
 #0  SwDocShell::GetWrtShell (this=0x0) at sw/inc/docsh.hxx:226
 #1  SwXTextDocument::initializeForTiledRendering(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
     at sw/source/uibase/uno/unotxdoc.cxx:3634
 #2  0x00007f6bb1d40734 in doc_initializeForRendering () at include/com/sun/star/uno/Type.h:163
 #3  0x00000000005d7988 in lok::Document::initializeForRendering (
     pArguments=0x342d0e48 "{\".uno:Author\":{\"type\":\"string\",\"value\":\"1(访客)\"},\".uno:ChangeTheme\":{\"type\":\"string\",\"value\":\"Light\"},\".uno:InvertBackground\":{\"type\":\"string\",\"value\":\"Light\"}}", this=<optimized out>) at /home/collabora/jenkins/workspace/package_cool_24.04_rpm/rpmbuild/BUILD/coolwsd-24.04.7.2snapshot/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx:245
 #4  Document::load(std::shared_ptr<ChildSession> const&, std::string const&) () at kit/Kit.cpp:1949
 #5  0x00000000005da3b2 in Document::onLoad(std::string const&, std::string const&, std::string const&) () at kit/Kit.cpp:1226
 #6  0x000000000057f7c1 in ChildSession::loadDocument(StringVector const&) () at kit/ChildSession.cpp:906
 #7  0x0000000000586464 in ChildSession::_handleInput(char const*, int) () at kit/ChildSession.cpp:298
 #8  0x0000000000613e48 in Session::handleMessage(std::vector<char, std::allocator<char> > const&) () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:987
 #9  0x00000000005c67ac in Document::forwardToChild(std::string const&, std::vector<char, std::allocator<char> > const&) () at kit/Kit.cpp:2052
 #10 0x00000000005c7b29 in Document::drainQueue() () at kit/Kit.cpp:2279
 #11 0x00000000005c80d8 in KitSocketPoll::drainQueue (this=0x34316d30) at kit/Kit.cpp:2676

Change-Id: I6f18f1a542ca96fe3fda0248e15ee1254eb9ca95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173386
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 15, 2024
got a case similar to

pnggroup/libpng#587

with a backtrace of:

/work/workdir/UnpackedTarball/libpng/png.c:1475:23: runtime error: signed integer overflow: -1703155269 - 692774662 cannot be represented in type 'png_fixed_point' (aka 'int')
 #0 0x59bbf901eab0 in png_XYZ_from_xy /work/workdir/UnpackedTarball/libpng/png.c:1475:23
 #1 0x59bbf901eab0 in png_colorspace_check_xy /work/workdir/UnpackedTarball/libpng/png.c:1610:13
 #2 0x59bbf901d8bc in png_colorspace_set_chromaticities /work/workdir/UnpackedTarball/libpng/png.c:1717:12
 #3 0x59bbf9046855 in png_handle_cHRM /work/workdir/UnpackedTarball/libpng/pngrutil.c:1302:10
 #4 0x59bbf902d064 in png_read_info /work/workdir/UnpackedTarball/libpng/pngread.c:175:10
 #5 0x59bbf7c331d6 in (anonymous namespace)::reader(SvStream&, Graphic&, GraphicFilterImportFlags, BitmapScopedWriteAccess*, BitmapScopedWriteAccess*) /src/libreoffice/vcl/source/filter/png/PngImageReader.cxx:404:5
 #6 0x59bbf7c36960 in read /src/libreoffice/vcl/source/filter/png/PngImageReader.cxx:845:55
 #7 0x59bbf7c36960 in vcl::PngImageReader::read() /src/libreoffice/vcl/source/filter/png/PngImageReader.cxx:850:5
 #8 0x59bbf786fe57 in LLVMFuzzerTestOneInput /src/libreoffice/vcl/workben/pngfuzzer.cxx:52:19

(gdb) print *xy
$1 = {
  redx = 9,
  redy = 131616,
  greenx = 598048,
  greeny = 538976288,
  bluex = 0,
  bluey = 151551,
  whitex = 538976288,
  whitey = 538976288
}

but not reproducible with a typical utility because we're unusually
ignoring crc errors for fuzzing so reenable those and see if a testcase
can be generated anyway.

Change-Id: Ifc050ee082800906b087609154ec29ca39cd8fe6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173409
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 16, 2024
 #0  SwDocShell::GetWrtShell (this=0x0) at sw/inc/docsh.hxx:226
 #1  SwXTextDocument::initializeForTiledRendering(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
     at sw/source/uibase/uno/unotxdoc.cxx:3634
 #2  0x00007f6bb1d40734 in doc_initializeForRendering () at include/com/sun/star/uno/Type.h:163
 #3  0x00000000005d7988 in lok::Document::initializeForRendering (
     pArguments=0x342d0e48 "{\".uno:Author\":{\"type\":\"string\",\"value\":\"1(访客)\"},\".uno:ChangeTheme\":{\"type\":\"string\",\"value\":\"Light\"},\".uno:InvertBackground\":{\"type\":\"string\",\"value\":\"Light\"}}", this=<optimized out>) at /home/collabora/jenkins/workspace/package_cool_24.04_rpm/rpmbuild/BUILD/coolwsd-24.04.7.2snapshot/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx:245
 #4  Document::load(std::shared_ptr<ChildSession> const&, std::string const&) () at kit/Kit.cpp:1949
 #5  0x00000000005da3b2 in Document::onLoad(std::string const&, std::string const&, std::string const&) () at kit/Kit.cpp:1226
 #6  0x000000000057f7c1 in ChildSession::loadDocument(StringVector const&) () at kit/ChildSession.cpp:906
 #7  0x0000000000586464 in ChildSession::_handleInput(char const*, int) () at kit/ChildSession.cpp:298
 #8  0x0000000000613e48 in Session::handleMessage(std::vector<char, std::allocator<char> > const&) () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:987
 #9  0x00000000005c67ac in Document::forwardToChild(std::string const&, std::vector<char, std::allocator<char> > const&) () at kit/Kit.cpp:2052
 #10 0x00000000005c7b29 in Document::drainQueue() () at kit/Kit.cpp:2279
 #11 0x00000000005c80d8 in KitSocketPoll::drainQueue (this=0x34316d30) at kit/Kit.cpp:2676

Change-Id: I6f18f1a542ca96fe3fda0248e15ee1254eb9ca95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173364
Tested-by: Andras Timar <andras.timar@collabora.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 16, 2024
 #0  SwDocShell::GetWrtShell (this=0x0) at sw/inc/docsh.hxx:226
 #1  SwXTextDocument::initializeForTiledRendering(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
     at sw/source/uibase/uno/unotxdoc.cxx:3634
 #2  0x00007f6bb1d40734 in doc_initializeForRendering () at include/com/sun/star/uno/Type.h:163
 #3  0x00000000005d7988 in lok::Document::initializeForRendering (
     pArguments=0x342d0e48 "{\".uno:Author\":{\"type\":\"string\",\"value\":\"1(访客)\"},\".uno:ChangeTheme\":{\"type\":\"string\",\"value\":\"Light\"},\".uno:InvertBackground\":{\"type\":\"string\",\"value\":\"Light\"}}", this=<optimized out>) at /home/collabora/jenkins/workspace/package_cool_24.04_rpm/rpmbuild/BUILD/coolwsd-24.04.7.2snapshot/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx:245
 #4  Document::load(std::shared_ptr<ChildSession> const&, std::string const&) () at kit/Kit.cpp:1949
 #5  0x00000000005da3b2 in Document::onLoad(std::string const&, std::string const&, std::string const&) () at kit/Kit.cpp:1226
 #6  0x000000000057f7c1 in ChildSession::loadDocument(StringVector const&) () at kit/ChildSession.cpp:906
 #7  0x0000000000586464 in ChildSession::_handleInput(char const*, int) () at kit/ChildSession.cpp:298
 #8  0x0000000000613e48 in Session::handleMessage(std::vector<char, std::allocator<char> > const&) () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:987
 #9  0x00000000005c67ac in Document::forwardToChild(std::string const&, std::vector<char, std::allocator<char> > const&) () at kit/Kit.cpp:2052
 #10 0x00000000005c7b29 in Document::drainQueue() () at kit/Kit.cpp:2279
 #11 0x00000000005c80d8 in KitSocketPoll::drainQueue (this=0x34316d30) at kit/Kit.cpp:2676

Change-Id: I6f18f1a542ca96fe3fda0248e15ee1254eb9ca95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173364
Tested-by: Andras Timar <andras.timar@collabora.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
(cherry picked from commit 9e30eb5)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173392
tdf-gerrit pushed a commit that referenced this pull request Sep 17, 2024
 #0  SwDocShell::GetWrtShell (this=0x0) at sw/inc/docsh.hxx:226
 #1  SwXTextDocument::initializeForTiledRendering(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
     at sw/source/uibase/uno/unotxdoc.cxx:3634
 #2  0x00007f6bb1d40734 in doc_initializeForRendering () at include/com/sun/star/uno/Type.h:163
 #3  0x00000000005d7988 in lok::Document::initializeForRendering (
     pArguments=0x342d0e48 "{\".uno:Author\":{\"type\":\"string\",\"value\":\"1(访客)\"},\".uno:ChangeTheme\":{\"type\":\"string\",\"value\":\"Light\"},\".uno:InvertBackground\":{\"type\":\"string\",\"value\":\"Light\"}}", this=<optimized out>) at /home/collabora/jenkins/workspace/package_cool_24.04_rpm/rpmbuild/BUILD/coolwsd-24.04.7.2snapshot/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx:245
 #4  Document::load(std::shared_ptr<ChildSession> const&, std::string const&) () at kit/Kit.cpp:1949
 #5  0x00000000005da3b2 in Document::onLoad(std::string const&, std::string const&, std::string const&) () at kit/Kit.cpp:1226
 #6  0x000000000057f7c1 in ChildSession::loadDocument(StringVector const&) () at kit/ChildSession.cpp:906
 #7  0x0000000000586464 in ChildSession::_handleInput(char const*, int) () at kit/ChildSession.cpp:298
 #8  0x0000000000613e48 in Session::handleMessage(std::vector<char, std::allocator<char> > const&) () at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:987
 #9  0x00000000005c67ac in Document::forwardToChild(std::string const&, std::vector<char, std::allocator<char> > const&) () at kit/Kit.cpp:2052
 #10 0x00000000005c7b29 in Document::drainQueue() () at kit/Kit.cpp:2279
 #11 0x00000000005c80d8 in KitSocketPoll::drainQueue (this=0x34316d30) at kit/Kit.cpp:2676

Change-Id: I6f18f1a542ca96fe3fda0248e15ee1254eb9ca95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173386
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 089640f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173389
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
tdf-gerrit pushed a commit that referenced this pull request Sep 19, 2024
At least with one ASan/UBSan setup of mine using LODE's Clang 12.0.1,
./autogen.sh would occasionally detect -std=gnu11 as the required CC "option to
enable C11 features" (which would in turn cause building external/firebird to
fail oddly; an issue worth investigations of its own), because Clang would
occasionally crash with a SEGV on the corresponding configure test program's
first invocation (without -std=gnu11) when invoked with -O2 (and happen to
succeed on second invocation with -std=gnu11, so configure thinks that's
needed), see below for a relevant config.log excerpt.

When CC/CXX are already set (as is the case in this scenario), we could arguably
skip the AC_PROG_CC/CXX checks entirely (and thus avoid configure potentially
adding -std=gnu11 to CC), but at least AC_PROG_CC also internally sets the GCC
shell var, which we use in configure.ac.  So better be conservative and just
avoid -O2 during AC_PROG_CC/CXX (whatever the autoconf motivation to include it
in the first place).

> configure:8165: checking for /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist option to enable C11 features
> configure:8180: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist  -c -g -O2  conftest.c >&5
> PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
> Stack dump:
> 0.	Program arguments: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist -c -g -O2 conftest.c
> 1.	<eof> parser at end of file
> 2.	Code generation
>  #0 0x000055f3a890caf2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1c3eaf2)
>  #1 0x000055f3a890a734 llvm::sys::RunSignalHandlers() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1c3c734)
>  #2 0x000055f3a887b998 CrashRecoverySignalHandler(int) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1bad998)
>  #3 0x00007f750d24e520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
>  #4 0x000055f3a93f9cd4 llvm::DIE::getUnitDie() const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x272bcd4)
>  #5 0x000055f3a9404574 llvm::DwarfDebug::finishEntityDefinitions() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2736574)
>  #6 0x000055f3a941df99 llvm::DwarfDebug::finalizeModuleInfo() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x274ff99)
>  #7 0x000055f3a9421128 llvm::DwarfDebug::endModule() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2753128)
>  #8 0x000055f3a93f1219 llvm::AsmPrinter::doFinalization(llvm::Module&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2723219)
>  #9 0x000055f3a82478f5 llvm::FPPassManager::doFinalization(llvm::Module&) (.localalias) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x15798f5)
> #10 0x000055f3a8253900 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1585900)
> #11 0x000055f3a8bb57d3 (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (.constprop.0) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1ee77d3)
> #12 0x000055f3a8bb76ea clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1ee96ea)
> #13 0x000055f3a9825876 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2b57876)
> #14 0x000055f3aa35c549 clang::ParseAST(clang::Sema&, bool, bool) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x368e549)
> #15 0x000055f3a91ef2d9 clang::FrontendAction::Execute() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x25212d9)
> #16 0x000055f3a91903a3 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x24c23a3)
> #17 0x000055f3a92a2fd8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x25d4fd8)
> #18 0x000055f3a7798815 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xaca815)
> #19 0x000055f3a77961a7 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xac81a7)
> #20 0x000055f3a9039689 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x236b689)
> #21 0x000055f3a887baa7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1badaa7)
> #22 0x000055f3a903a802 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (.part.0) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x236c802)
> #23 0x000055f3a900fbec clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2341bec)
> #24 0x000055f3a9010679 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2342679)
> #25 0x000055f3a901e8f1 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x23508f1)
> #26 0x000055f3a7717e6f main (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xa49e6f)
> #27 0x00007f750d235d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
> #28 0x00007f750d235e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
> #29 0x000055f3a7795b55 _start (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xac7b55)
> clang-12: error: clang frontend command failed with exit code 139 (use -v to see invocation)
> clang version 12.0.1 (https://github.com/llvm/llvm-project.git fed41342a82f5a3a9201819a82bf7a48313e296b)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
> InstalledDir: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin
> clang-12: note: diagnostic msg:
> ********************
>
> PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
> Preprocessed source(s) and associated run script(s) are located at:
> clang-12: note: diagnostic msg: /tmp/conftest-968380.c
> clang-12: note: diagnostic msg: /tmp/conftest-968380.sh
> clang-12: note: diagnostic msg:
>
> ********************
> configure:8180: $? = 139
> configure: failed program was:
> | /* confdefs.h */
> | #define PACKAGE_NAME "LibreOffice"
> | #define PACKAGE_TARNAME "libreoffice"
> | #define PACKAGE_VERSION "24.8.0.0.alpha0+"
> | #define PACKAGE_STRING "LibreOffice 24.8.0.0.alpha0+"
> | #define PACKAGE_BUGREPORT ""
> | #define PACKAGE_URL "http://documentfoundation.org/"
> | #define LIBO_VERSION_MAJOR 24
> | #define LIBO_VERSION_MINOR 8
> | #define LIBO_VERSION_MICRO 0
> | #define LIBO_VERSION_PATCH 0
> | #define LIBO_THIS_YEAR 2024
> | #define SRCDIR "/home/sberg/lo0/core"
> | #define SRC_ROOT "/home/sberg/lo0/core"
> | #define BUILDDIR "/home/sberg/lo0/core"
> | #define USE_HEADLESS_CODE 1
> | #define ENABLE_HEADLESS 1
> | /* end confdefs.h.  */
> |
> | /* Does the compiler advertise C89 conformance?
> |    Do not test the value of __STDC__, because some compilers set it to 0
> |    while being otherwise adequately conformant. */
> | #if !defined __STDC__
> | # error "Compiler does not advertise C89 conformance"
> | #endif
> |
> | #include <stddef.h>
> | #include <stdarg.h>
> | struct stat;
> | /* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
> | struct buf { int x; };
> | struct buf * (*rcsopen) (struct buf *, struct stat *, int);
> | static char *e (p, i)
> |      char **p;
> |      int i;
> | {
> |   return p[i];
> | }
> | static char *f (char * (*g) (char **, int), char **p, ...)
> | {
> |   char *s;
> |   va_list v;
> |   va_start (v,p);
> |   s = g (p, va_arg (v,int));
> |   va_end (v);
> |   return s;
> | }
> |
> | /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
> |    function prototypes and stuff, but not \xHH hex character constants.
> |    These do not provoke an error unfortunately, instead are silently treated
> |    as an "x".  The following induces an error, until -std is added to get
> |    proper ANSI mode.  Curiously \x00 != x always comes out true, for an
> |    array size at least.  It is necessary to write \x00 == 0 to get something
> |    that is true only with -std.  */
> | int osf4_cc_array ['\x00' == 0 ? 1 : -1];
> |
> | /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
> |    inside strings and character constants.  */
> | #define FOO(x) 'x'
> | int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
> |
> | int test (int i, double x);
> | struct s1 {int (*f) (int a);};
> | struct s2 {int (*f) (double a);};
> | int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
> |                int, int);
> |
> | // Does the compiler advertise C99 conformance?
> | #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
> | # error "Compiler does not advertise C99 conformance"
> | #endif
> |
> | #include <stdbool.h>
> | extern int puts (const char *);
> | extern int printf (const char *, ...);
> | extern int dprintf (int, const char *, ...);
> | extern void *malloc (size_t);
> |
> | // Check varargs macros.  These examples are taken from C99 6.10.3.5.
> | // dprintf is used instead of fprintf to avoid needing to declare
> | // FILE and stderr.
> | #define debug(...) dprintf (2, __VA_ARGS__)
> | #define showlist(...) puts (#__VA_ARGS__)
> | #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
> | static void
> | test_varargs_macros (void)
> | {
> |   int x = 1234;
> |   int y = 5678;
> |   debug ("Flag");
> |   debug ("X = %d\n", x);
> |   showlist (The first, second, and third items.);
> |   report (x>y, "x is %d but y is %d", x, y);
> | }
> |
> | // Check long long types.
> | #define BIG64 18446744073709551615ull
> | #define BIG32 4294967295ul
> | #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
> | #if !BIG_OK
> |   #error "your preprocessor is broken"
> | #endif
> | #if BIG_OK
> | #else
> |   #error "your preprocessor is broken"
> | #endif
> | static long long int bignum = -9223372036854775807LL;
> | static unsigned long long int ubignum = BIG64;
> |
> | struct incomplete_array
> | {
> |   int datasize;
> |   double data[];
> | };
> |
> | struct named_init {
> |   int number;
> |   const wchar_t *name;
> |   double average;
> | };
> |
> | typedef const char *ccp;
> |
> | static inline int
> | test_restrict (ccp restrict text)
> | {
> |   // See if C++-style comments work.
> |   // Iterate through items via the restricted pointer.
> |   // Also check for declarations in for loops.
> |   for (unsigned int i = 0; *(text+i) != '\0'; ++i)
> |     continue;
> |   return 0;
> | }
> |
> | // Check varargs and va_copy.
> | static bool
> | test_varargs (const char *format, ...)
> | {
> |   va_list args;
> |   va_start (args, format);
> |   va_list args_copy;
> |   va_copy (args_copy, args);
> |
> |   const char *str = "";
> |   int number = 0;
> |   float fnumber = 0;
> |
> |   while (*format)
> |     {
> |       switch (*format++)
> | 	{
> | 	case 's': // string
> | 	  str = va_arg (args_copy, const char *);
> | 	  break;
> | 	case 'd': // int
> | 	  number = va_arg (args_copy, int);
> | 	  break;
> | 	case 'f': // float
> | 	  fnumber = va_arg (args_copy, double);
> | 	  break;
> | 	default:
> | 	  break;
> | 	}
> |     }
> |   va_end (args_copy);
> |   va_end (args);
> |
> |   return *str && number && fnumber;
> | }
> |
> |
> | // Does the compiler advertise C11 conformance?
> | #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
> | # error "Compiler does not advertise C11 conformance"
> | #endif
> |
> | // Check _Alignas.
> | char _Alignas (double) aligned_as_double;
> | char _Alignas (0) no_special_alignment;
> | extern char aligned_as_int;
> | char _Alignas (0) _Alignas (int) aligned_as_int;
> |
> | // Check _Alignof.
> | enum
> | {
> |   int_alignment = _Alignof (int),
> |   int_array_alignment = _Alignof (int[100]),
> |   char_alignment = _Alignof (char)
> | };
> | _Static_assert (0 < -_Alignof (int), "_Alignof is signed");
> |
> | // Check _Noreturn.
> | int _Noreturn does_not_return (void) { for (;;) continue; }
> |
> | // Check _Static_assert.
> | struct test_static_assert
> | {
> |   int x;
> |   _Static_assert (sizeof (int) <= sizeof (long int),
> |                   "_Static_assert does not work in struct");
> |   long int y;
> | };
> |
> | // Check UTF-8 literals.
> | #define u8 syntax error!
> | char const utf8_literal[] = u8"happens to be ASCII" "another string";
> |
> | // Check duplicate typedefs.
> | typedef long *long_ptr;
> | typedef long int *long_ptr;
> | typedef long_ptr long_ptr;
> |
> | // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
> | struct anonymous
> | {
> |   union {
> |     struct { int i; int j; };
> |     struct { int k; long int l; } w;
> |   };
> |   int m;
> | } v1;
> |
> |
> | int
> | main (int argc, char **argv)
> | {
> |   int ok = 0;
> |
> | ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
> |
> |
> |   // Check bool.
> |   _Bool success = false;
> |   success |= (argc != 0);
> |
> |   // Check restrict.
> |   if (test_restrict ("String literal") == 0)
> |     success = true;
> |   char *restrict newvar = "Another string";
> |
> |   // Check varargs.
> |   success &= test_varargs ("s, d' f .", "string", 65, 34.234);
> |   test_varargs_macros ();
> |
> |   // Check flexible array members.
> |   struct incomplete_array *ia =
> |     malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
> |   ia->datasize = 10;
> |   for (int i = 0; i < ia->datasize; ++i)
> |     ia->data[i] = i * 1.234;
> |
> |   // Check named initializers.
> |   struct named_init ni = {
> |     .number = 34,
> |     .name = L"Test wide string",
> |     .average = 543.34343,
> |   };
> |
> |   ni.number = 58;
> |
> |   int dynamic_array[ni.number];
> |   dynamic_array[0] = argv[0][0];
> |   dynamic_array[ni.number - 1] = 543;
> |
> |   // work around unused variable warnings
> |   ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
> | 	 || dynamic_array[ni.number - 1] != 543);
> |
> |
> |   _Static_assert ((offsetof (struct anonymous, i)
> | 		   == offsetof (struct anonymous, w.k)),
> | 		  "Anonymous union alignment botch");
> |   v1.i = 2;
> |   v1.w.k = 5;
> |   ok |= v1.i != 5;
> |
> |   return ok;
> | }
> |
> configure:8180: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist -std=gnu11 -c -g -O2  conftest.c >&5
> configure:8180: $? = 0
> configure:8201: result: -std=gnu11

Change-Id: I9122d0d853d0010155d57cb1d1d56f7c453d5208
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165904
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
(cherry picked from commit 42f6e89)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173098
Tested-by: allotropia jenkins <jenkins@allotropia.de>
tdf-gerrit pushed a commit that referenced this pull request Sep 19, 2024
...in code newly introduced in 135ce25
"tdf#146487 Don't show generic diagram title when there is an empty title
given", which caused CppunitTest_chart2_export2 to fail with

> /oox/inc/drawingml/chart/plotareaconverter.hxx:78:62: runtime error: load of value 222, which is not a valid value for type 'bool'
>     #0 0x7f95cd9ed87c in oox::drawingml::chart::PlotAreaConverter::isSingleSeriesTitle() const /oox/inc/drawingml/chart/plotareaconverter.hxx:78:62
>     #1 0x7f95cd9e506f in oox::drawingml::chart::ChartSpaceConverter::convertFromModel(com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&, com::sun::star::awt::Point const&) /oox/source/drawingml/chart/chartspaceconverter.cxx:189:53
>     #2 0x7f95cd9b6c34 in oox::drawingml::chart::ChartConverter::convertFromModel(oox::core::XmlFilterBase&, oox::drawingml::chart::ChartSpaceModel&, com::sun::star::uno::Reference<com::sun::star::chart2::XChartDocument> const&, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&, com::sun::star::awt::Point const&, com::sun::star::awt::Size const&) /oox/source/drawingml/chart/chartconverter.cxx:93:20
>     #3 0x7f95ce548f59 in oox::drawingml::Shape::finalizeXShape(oox::core::XmlFilterBase&, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&) /oox/source/drawingml/shape.cxx:2245:50
>     #4 0x7f95438150b2 in oox::xls::Shape::finalizeXShape(oox::core::XmlFilterBase&, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&) /sc/source/filter/oox/drawingfragment.cxx:113:30
>     #5 0x7f95ce5267bb in oox::drawingml::Shape::createAndInsert(oox::core::XmlFilterBase&, rtl::OUString const&, oox::drawingml::Theme const*, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&, bool, bool, basegfx::B2DHomMatrix&, oox::drawingml::FillProperties const&, std::shared_ptr<oox::drawingml::Shape>) /oox/source/drawingml/shape.cxx:1964:9
>     #6 0x7f95ce4edb54 in oox::drawingml::Shape::addShape(oox::core::XmlFilterBase&, oox::drawingml::Theme const*, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&, basegfx::B2DHomMatrix const&, oox::drawingml::FillProperties const&, std::__debug::map<rtl::OUString, std::shared_ptr<oox::drawingml::Shape>, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::shared_ptr<oox::drawingml::Shape> > > >*, std::shared_ptr<oox::drawingml::Shape>) /oox/source/drawingml/shape.cxx:366:41
>     #7 0x7f954381ef79 in oox::xls::DrawingFragment::onEndElement() /sc/source/filter/oox/drawingfragment.cxx:335:30
>     #8 0x7f95cdcaee54 in oox::core::ContextHandler2Helper::implEndElement(int) /oox/source/core/contexthandler2.cxx:125:9
>     #9 0x7f95cdd5c116 in oox::core::FragmentHandler2::endFastElement(int) /oox/source/core/fragmenthandler2.cxx:91:5
>     #10 0x7f95caf68fca in (anonymous namespace)::Entity::endElement() /sax/source/fastparser/fastparser.cxx:514:27
>     #11 0x7f95caf68998 in sax_fastparser::FastSaxParserImpl::callbackEndElement() /sax/source/fastparser/fastparser.cxx:1331:17
>     #12 0x7f95caf58444 in (anonymous namespace)::call_callbackEndElement(void*, unsigned char const*, unsigned char const*, unsigned char const*) /sax/source/fastparser/fastparser.cxx:338:18
>     #13 0x7f960adebeda in xmlParseEndTag2 /workdir/UnpackedTarball/libxml2/parser.c:10090:2
>     #14 0x7f960ad929b5 in xmlParseTryOrFinish /workdir/UnpackedTarball/libxml2/parser.c:11868:14
>     #15 0x7f960ad86334 in xmlParseChunk /workdir/UnpackedTarball/libxml2/parser.c:12151:5
>     #16 0x7f95caf53231 in sax_fastparser::FastSaxParserImpl::parse() /sax/source/fastparser/fastparser.cxx:1085:21
>     #17 0x7f95caf4cd18 in sax_fastparser::FastSaxParserImpl::parseStream(com::sun::star::xml::sax::InputSource const&) /sax/source/fastparser/fastparser.cxx:890:9
>     #18 0x7f95caf6e950 in sax_fastparser::FastSaxParser::parseStream(com::sun::star::xml::sax::InputSource const&) /sax/source/fastparser/fastparser.cxx:1470:13
>     #19 0x7f95cdce50d1 in oox::core::FastParser::parseStream(com::sun::star::xml::sax::InputSource const&, bool) /oox/source/core/fastparser.cxx:121:15
>     #20 0x7f95cdce5868 in oox::core::FastParser::parseStream(com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, rtl::OUString const&) /oox/source/core/fastparser.cxx:129:5
>     #21 0x7f95cddbb234 in oox::core::XmlFilterBase::importFragment(rtl::Reference<oox::core::FragmentHandler> const&, oox::core::FastParser&) /oox/source/core/xmlfilterbase.cxx:414:21
>     #22 0x7f95cddb9b8d in oox::core::XmlFilterBase::importFragment(rtl::Reference<oox::core::FragmentHandler> const&) /oox/source/core/xmlfilterbase.cxx:344:12
>     #23 0x7f95441ceaa8 in oox::xls::WorkbookHelper::importOoxFragment(rtl::Reference<oox::core::FragmentHandler> const&) /sc/source/filter/oox/workbookhelper.cxx:1046:27
>     #24 0x7f95442797f1 in oox::xls::WorksheetGlobals::finalizeDrawings() /sc/source/filter/oox/worksheethelper.cxx:1373:9
>     #25 0x7f95442789e0 in oox::xls::WorksheetGlobals::finalizeDrawingImport() /sc/source/filter/oox/worksheethelper.cxx:996:5
>     #26 0x7f954428744d in oox::xls::WorksheetHelper::finalizeDrawingImport() /sc/source/filter/oox/worksheethelper.cxx:1637:17
>     #27 0x7f95441771de in oox::xls::WorkbookFragment::finalizeImport() /sc/source/filter/oox/workbookfragment.cxx:511:18
>     #28 0x7f95cdd5b3ae in oox::core::FragmentHandler2::endDocument() /oox/source/core/fragmenthandler2.cxx:53:5
>     #29 0x7f95caf4cfc2 in sax_fastparser::FastSaxParserImpl::parseStream(com::sun::star::xml::sax::InputSource const&) /sax/source/fastparser/fastparser.cxx:896:36
>     #30 0x7f95caf6e950 in sax_fastparser::FastSaxParser::parseStream(com::sun::star::xml::sax::InputSource const&) /sax/source/fastparser/fastparser.cxx:1470:13
>     #31 0x7f95cdce50d1 in oox::core::FastParser::parseStream(com::sun::star::xml::sax::InputSource const&, bool) /oox/source/core/fastparser.cxx:121:15
>     #32 0x7f95cdce5868 in oox::core::FastParser::parseStream(com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, rtl::OUString const&) /oox/source/core/fastparser.cxx:129:5
>     #33 0x7f95cddbb234 in oox::core::XmlFilterBase::importFragment(rtl::Reference<oox::core::FragmentHandler> const&, oox::core::FastParser&) /oox/source/core/xmlfilterbase.cxx:414:21
>     #34 0x7f95cddb9b8d in oox::core::XmlFilterBase::importFragment(rtl::Reference<oox::core::FragmentHandler> const&) /oox/source/core/xmlfilterbase.cxx:344:12
>     #35 0x7f95435c4daa in oox::xls::ExcelFilter::importDocument() /sc/source/filter/oox/excelfilter.cxx:113:25
>     #36 0x7f95cdcf953b in oox::core::FilterBase::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /oox/source/core/filterbase.cxx:488:49
>     #37 0x7f95435c7733 in oox::xls::ExcelFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sc/source/filter/oox/excelfilter.cxx:176:25
>     #38 0x7f95857c5b40 in SfxObjectShell::ImportFrom(SfxMedium&, com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) /sfx2/source/doc/objstor.cxx:2393:34
>     #39 0x7f9585781c6a in SfxObjectShell::DoLoad(SfxMedium*) /sfx2/source/doc/objstor.cxx:761:23
>     #40 0x7f95859a9652 in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/sfxbasemodel.cxx:1980:36
>     #41 0x7f95862145e9 in (anonymous namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) /sfx2/source/view/frmload.cxx:720:28
>     #42 0x7f95536a9900 in framework::LoadEnv::impl_loadContent() /framework/source/loadenv/loadenv.cxx:1176:37
>     #43 0x7f95536a091b in framework::LoadEnv::start() /framework/source/loadenv/loadenv.cxx:412:20
>     #44 0x7f9553698f59 in framework::LoadEnv::startLoading(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, rtl::OUString const&, int, LoadEnvFeatures) /framework/source/loadenv/loadenv.cxx:308:5
>     #45 0x7f95536946e7 in framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/loadenv/loadenv.cxx:168:14
>     #46 0x7f955376867d in framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/desktop.cxx:591:16
>     #47 0x7f95537688a6 in non-virtual thunk to framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/desktop.cxx
>     #48 0x7f9569f7cafa in unotest::MacrosTest::loadFromDesktop(rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /unotest/source/cpp/macros_test.cxx:71:62
>     #49 0x7f9580718c56 in UnoApiTest::loadWithParams(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /test/source/unoapi_test.cxx:126:19
>     #50 0x7f9580717ef8 in UnoApiTest::load(rtl::OUString const&, char const*) /test/source/unoapi_test.cxx:108:5
>     #51 0x7f9580719254 in UnoApiTest::loadFromFile(std::basic_string_view<char16_t, std::char_traits<char16_t> >, char const*) /test/source/unoapi_test.cxx:132:5
>     #52 0x7f95d8bf1018 in testTdf123647::TestBody() /chart2/qa/extras/chart2export2.cxx:1242:5

(<https://ci.libreoffice.org//job/lo_ubsan/3048/>)

Change-Id: I870d811e78b8c55b84627ae609f98f623465dd9d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162294
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
(cherry picked from commit 3fb9859)
tdf-gerrit pushed a commit that referenced this pull request Sep 25, 2024
we want this to get through because of a scenario like

 #0  ignoreLibreOfficeKitViewCallback (nType=13, pImpl=0xf9bd620) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/viewsh.cxx:3219
 #1  0x00007fd4a2428979 in SfxViewShell::libreOfficeKitViewCallback (this=0xf9bd090, nType=13, pPayload=...) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/viewsh.cxx:3278
 #2  0x00007fd4a23ab80b in SfxLokHelper::notifyDocumentSizeChanged (pThisView=0xf9bd090, rPayload=..., pDoc=0xec53578, bInvalidateAll=true) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/lokhelper.cxx:711
 #3  0x00007fd484eba265 in SwViewShell::SizeChgNotify (this=0xf9bf3c0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:1154
 #4  0x00007fd484775a62 in AdjustSizeChgNotify (pRoot=0xed16880) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:842
 #5  0x00007fd48477e029 in SwRootFrame::CheckViewLayout (this=0xed16880, pViewOpt=0x0, pVisArea=0x0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:2436
 #6  0x00007fd484775da2 in SwPageFrame::Cut (this=0x120350f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:914
 #7  0x00007fd484779ec8 in SwRootFrame::RemovePage (this=0xed16880, pDelRef=0x7ffe90279548, eResult=SwRemoveResult::Prev) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:1511
 #8  0x00007fd48477a187 in SwRootFrame::RemoveSuperfluous (this=0xed16880) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:1550
 #9  0x00007fd4847336b2 in SwLayAction::InternalAction (this=0x7ffe90279a60, pRenderContext=0xf9bb5f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/layact.cxx:694
 #10 0x00007fd4847323b8 in SwLayAction::Action (this=0x7ffe90279a60, pRenderContext=0xf9bb5f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/layact.cxx:396
 #11 0x00007fd484eb5fc2 in SwViewShell::ImplEndAction (this=0xf9bf3c0, bIdleEnd=false) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:309
 #12 0x00007fd483fa3f78 in SwViewShell::EndAction (this=0xf9bf3c0, bIdleEnd=false) at /home/caolan/LibreOffice/co-24.04/sw/inc/viewsh.hxx:637
 #13 0x00007fd484ebf56b in SwViewShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:2235
 #14 0x00007fd484577013 in SwEditShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/core/edit/editsh.cxx:1094
 #15 0x00007fd48574a5cf in SwWrtShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/uibase/wrtsh/wrtsh1.cxx:2137
 #16 0x00007fd484ebe79e in SwViewShell::PaintTile (this=0xeddec90, rDevice=..., contextWidth=1792, contextHeight=768, tilePosX=0, tilePosY=113280, tileWidth=13440, tileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:2019
 #17 0x00007fd4855fc5f0 in SwXTextDocument::paintTile (this=0xec53280, rDevice=..., nOutputWidth=1792, nOutputHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/sw/source/uibase/uno/unotxdoc.cxx:3145
 #18 0x00007fd4a24c5ada in doc_paintTile (pThis=0xed2fa10, pBuffer=0x12871f30 "", nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/desktop/source/lib/init.cxx:4431
 #19 0x00007fd4a24c6bb3 in doc_paintPartTile (pThis=0xed2fa10, pBuffer=0x12871f30 "", nPart=0, nMode=0, nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/desktop/source/lib/init.cxx:4629
 #20 0x00000000005f0f0e in lok::Document::paintPartTile (this=0xf521420, pBuffer=0x12871f30 "", nPart=0, nMode=0, nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/include/LibreOfficeKit/LibreOfficeKit.hxx:621
 #21 0x00000000005c2627 in RenderTiles::doRender(std::shared_ptr<lok::Document> const&, DeltaGenerator&, TileCombined&, ThreadPool&, std::function<void (unsigned char*, int, int, unsigned long, unsigned long, int, int, LibreOfficeKitTileMode)> const&, std::function<void (char const*, unsigned long)> const&, unsigned int, int, bool) (document=..., deltaGen=..., tileCombined=..., pngPool=..., blendWatermark=..., outputMessage=...,
     mobileAppDocId=3, canonicalViewId=1000, dumpTiles=false) at ./common/RenderTiles.hpp:123
 #22 0x00000000005cd29d in Document::renderTiles (this=0xe6eefc0, tileCombined=...) at kit/Kit.cpp:933

where otherwise the browser gets no update of the document size.

Change-Id: I396daa9c7ee5c306ee107839f6fba6b26a70683d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173936
Tested-by: Miklos Vajna <vmiklos@collabora.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 25, 2024
we want this to get through because of a scenario like

 #0  ignoreLibreOfficeKitViewCallback (nType=13, pImpl=0xf9bd620) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/viewsh.cxx:3219
 #1  0x00007fd4a2428979 in SfxViewShell::libreOfficeKitViewCallback (this=0xf9bd090, nType=13, pPayload=...) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/viewsh.cxx:3278
 #2  0x00007fd4a23ab80b in SfxLokHelper::notifyDocumentSizeChanged (pThisView=0xf9bd090, rPayload=..., pDoc=0xec53578, bInvalidateAll=true) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/lokhelper.cxx:711
 #3  0x00007fd484eba265 in SwViewShell::SizeChgNotify (this=0xf9bf3c0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:1154
 #4  0x00007fd484775a62 in AdjustSizeChgNotify (pRoot=0xed16880) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:842
 #5  0x00007fd48477e029 in SwRootFrame::CheckViewLayout (this=0xed16880, pViewOpt=0x0, pVisArea=0x0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:2436
 #6  0x00007fd484775da2 in SwPageFrame::Cut (this=0x120350f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:914
 #7  0x00007fd484779ec8 in SwRootFrame::RemovePage (this=0xed16880, pDelRef=0x7ffe90279548, eResult=SwRemoveResult::Prev) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:1511
 #8  0x00007fd48477a187 in SwRootFrame::RemoveSuperfluous (this=0xed16880) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:1550
 #9  0x00007fd4847336b2 in SwLayAction::InternalAction (this=0x7ffe90279a60, pRenderContext=0xf9bb5f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/layact.cxx:694
 #10 0x00007fd4847323b8 in SwLayAction::Action (this=0x7ffe90279a60, pRenderContext=0xf9bb5f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/layact.cxx:396
 #11 0x00007fd484eb5fc2 in SwViewShell::ImplEndAction (this=0xf9bf3c0, bIdleEnd=false) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:309
 #12 0x00007fd483fa3f78 in SwViewShell::EndAction (this=0xf9bf3c0, bIdleEnd=false) at /home/caolan/LibreOffice/co-24.04/sw/inc/viewsh.hxx:637
 #13 0x00007fd484ebf56b in SwViewShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:2235
 #14 0x00007fd484577013 in SwEditShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/core/edit/editsh.cxx:1094
 #15 0x00007fd48574a5cf in SwWrtShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/uibase/wrtsh/wrtsh1.cxx:2137
 #16 0x00007fd484ebe79e in SwViewShell::PaintTile (this=0xeddec90, rDevice=..., contextWidth=1792, contextHeight=768, tilePosX=0, tilePosY=113280, tileWidth=13440, tileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:2019
 #17 0x00007fd4855fc5f0 in SwXTextDocument::paintTile (this=0xec53280, rDevice=..., nOutputWidth=1792, nOutputHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/sw/source/uibase/uno/unotxdoc.cxx:3145
 #18 0x00007fd4a24c5ada in doc_paintTile (pThis=0xed2fa10, pBuffer=0x12871f30 "", nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/desktop/source/lib/init.cxx:4431
 #19 0x00007fd4a24c6bb3 in doc_paintPartTile (pThis=0xed2fa10, pBuffer=0x12871f30 "", nPart=0, nMode=0, nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/desktop/source/lib/init.cxx:4629
 #20 0x00000000005f0f0e in lok::Document::paintPartTile (this=0xf521420, pBuffer=0x12871f30 "", nPart=0, nMode=0, nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/include/LibreOfficeKit/LibreOfficeKit.hxx:621
 #21 0x00000000005c2627 in RenderTiles::doRender(std::shared_ptr<lok::Document> const&, DeltaGenerator&, TileCombined&, ThreadPool&, std::function<void (unsigned char*, int, int, unsigned long, unsigned long, int, int, LibreOfficeKitTileMode)> const&, std::function<void (char const*, unsigned long)> const&, unsigned int, int, bool) (document=..., deltaGen=..., tileCombined=..., pngPool=..., blendWatermark=..., outputMessage=...,
     mobileAppDocId=3, canonicalViewId=1000, dumpTiles=false) at ./common/RenderTiles.hpp:123
 #22 0x00000000005cd29d in Document::renderTiles (this=0xe6eefc0, tileCombined=...) at kit/Kit.cpp:933

where otherwise the browser gets no update of the document size.

Change-Id: I396daa9c7ee5c306ee107839f6fba6b26a70683d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173936
Tested-by: Miklos Vajna <vmiklos@collabora.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 25, 2024
we want this to get through because of a scenario like

 #0  ignoreLibreOfficeKitViewCallback (nType=13, pImpl=0xf9bd620) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/viewsh.cxx:3219
 #1  0x00007fd4a2428979 in SfxViewShell::libreOfficeKitViewCallback (this=0xf9bd090, nType=13, pPayload=...) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/viewsh.cxx:3278
 #2  0x00007fd4a23ab80b in SfxLokHelper::notifyDocumentSizeChanged (pThisView=0xf9bd090, rPayload=..., pDoc=0xec53578, bInvalidateAll=true) at /home/caolan/LibreOffice/co-24.04/sfx2/source/view/lokhelper.cxx:711
 #3  0x00007fd484eba265 in SwViewShell::SizeChgNotify (this=0xf9bf3c0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:1154
 #4  0x00007fd484775a62 in AdjustSizeChgNotify (pRoot=0xed16880) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:842
 #5  0x00007fd48477e029 in SwRootFrame::CheckViewLayout (this=0xed16880, pViewOpt=0x0, pVisArea=0x0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:2436
 #6  0x00007fd484775da2 in SwPageFrame::Cut (this=0x120350f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:914
 #7  0x00007fd484779ec8 in SwRootFrame::RemovePage (this=0xed16880, pDelRef=0x7ffe90279548, eResult=SwRemoveResult::Prev) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:1511
 #8  0x00007fd48477a187 in SwRootFrame::RemoveSuperfluous (this=0xed16880) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/pagechg.cxx:1550
 #9  0x00007fd4847336b2 in SwLayAction::InternalAction (this=0x7ffe90279a60, pRenderContext=0xf9bb5f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/layact.cxx:694
 #10 0x00007fd4847323b8 in SwLayAction::Action (this=0x7ffe90279a60, pRenderContext=0xf9bb5f0) at /home/caolan/LibreOffice/co-24.04/sw/source/core/layout/layact.cxx:396
 #11 0x00007fd484eb5fc2 in SwViewShell::ImplEndAction (this=0xf9bf3c0, bIdleEnd=false) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:309
 #12 0x00007fd483fa3f78 in SwViewShell::EndAction (this=0xf9bf3c0, bIdleEnd=false) at /home/caolan/LibreOffice/co-24.04/sw/inc/viewsh.hxx:637
 #13 0x00007fd484ebf56b in SwViewShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:2235
 #14 0x00007fd484577013 in SwEditShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/core/edit/editsh.cxx:1094
 #15 0x00007fd48574a5cf in SwWrtShell::ApplyViewOptions (this=0xeddec90, rOpt=...) at /home/caolan/LibreOffice/co-24.04/sw/source/uibase/wrtsh/wrtsh1.cxx:2137
 #16 0x00007fd484ebe79e in SwViewShell::PaintTile (this=0xeddec90, rDevice=..., contextWidth=1792, contextHeight=768, tilePosX=0, tilePosY=113280, tileWidth=13440, tileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/sw/source/core/view/viewsh.cxx:2019
 #17 0x00007fd4855fc5f0 in SwXTextDocument::paintTile (this=0xec53280, rDevice=..., nOutputWidth=1792, nOutputHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/sw/source/uibase/uno/unotxdoc.cxx:3145
 #18 0x00007fd4a24c5ada in doc_paintTile (pThis=0xed2fa10, pBuffer=0x12871f30 "", nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/desktop/source/lib/init.cxx:4431
 #19 0x00007fd4a24c6bb3 in doc_paintPartTile (pThis=0xed2fa10, pBuffer=0x12871f30 "", nPart=0, nMode=0, nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/desktop/source/lib/init.cxx:4629
 #20 0x00000000005f0f0e in lok::Document::paintPartTile (this=0xf521420, pBuffer=0x12871f30 "", nPart=0, nMode=0, nCanvasWidth=1792, nCanvasHeight=768, nTilePosX=0, nTilePosY=113280, nTileWidth=13440, nTileHeight=5760)
     at /home/caolan/LibreOffice/co-24.04/include/LibreOfficeKit/LibreOfficeKit.hxx:621
 #21 0x00000000005c2627 in RenderTiles::doRender(std::shared_ptr<lok::Document> const&, DeltaGenerator&, TileCombined&, ThreadPool&, std::function<void (unsigned char*, int, int, unsigned long, unsigned long, int, int, LibreOfficeKitTileMode)> const&, std::function<void (char const*, unsigned long)> const&, unsigned int, int, bool) (document=..., deltaGen=..., tileCombined=..., pngPool=..., blendWatermark=..., outputMessage=...,
     mobileAppDocId=3, canonicalViewId=1000, dumpTiles=false) at ./common/RenderTiles.hpp:123
 #22 0x00000000005cd29d in Document::renderTiles (this=0xe6eefc0, tileCombined=...) at kit/Kit.cpp:933

where otherwise the browser gets no update of the document size.

Change-Id: I396daa9c7ee5c306ee107839f6fba6b26a70683d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173936
Tested-by: Miklos Vajna <vmiklos@collabora.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit ed75469)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173907
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 26, 2024
 #2  0x0000000000ac8c3e in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
 #3  0x00007fa92f2fa26f in std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>)
     at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #4  std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #5  vcl::Window::CallEventListeners (this=this@entry=0x34eb4f40, nEvent=nEvent@entry=VclEventId::ObjectDying, pData=pData@entry=0x0)
     at libreoffice/vcl/source/window/event.cxx:272
 #6  0x00007fa92f38277a in vcl::Window::dispose (this=0x34eb4f40) at libreoffice/vcl/source/window/window.cxx:159
 #7  0x00007fa92f678064 in VclPtr<HelpTextWindow>::disposeAndClear (this=<synthetic pointer>) at libreoffice/include/rtl/ref.hxx:88
 #8  ImplDestroyHelpWindow (rHelpData=..., bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:576
 #9  0x00007fa92f6780f8 in ImplDestroyHelpWindow (bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:565
 #10 0x00007fa92f679125 in ImplShowHelpWindow (pParent=0x334cfb90, nHelpWinStyle=<optimized out>, nStyle=QuickHelpFlags::NONE, rHelpText="Chart Area", rScreenPos=Point = {...}, rHelpArea=...)
     at libreoffice/vcl/source/app/help.cxx:532
 #11 0x00007fa92f679544 in Help::ShowQuickHelp (pParent=pParent@entry=0x334cfb90, rScreenRect=..., rHelpText="Chart Area", nStyle=nStyle@entry=QuickHelpFlags::NONE)
     at libreoffice/vcl/source/app/help.cxx:189
 #12 0x00007fa91ae862e0 in chart::ChartWindow::RequestHelp (this=0x334cfb90, rHEvt=...)
     at libreoffice/chart2/source/controller/main/ChartWindow.cxx:227
 #13 0x00007fa92e2e88a0 in (anonymous namespace)::LOKPostAsyncEvent (pEv=0x35b4a320) at libreoffice/sfx2/source/view/lokhelper.cxx:1103
 #14 0x00007fa92e2e076a in LokChartHelper::postMouseEvent (this=this@entry=0x7ffd226dd650, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089, nCount=nCount@entry=1,
     nButtons=nButtons@entry=0, nModifier=0, fScaleX=fScaleX@entry=0.10000000000000001, fScaleY=fScaleY@entry=0.10000000000000001)
     at libreoffice/sfx2/source/view/lokcharthelper.cxx:294
 #15 0x00007fa92e2e5b80 in SfxLokHelper::testInPlaceComponentMouseEventHit (pViewShell=pViewShell@entry=0x337e52a0, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089,
     nCount=nCount@entry=1, nButtons=nButtons@entry=0, nModifier=0, fScaleX=0.10000000000000001, fScaleY=0.10000000000000001, bNegativeX=false)
     at libreoffice/include/rtl/ref.hxx:69
 #16 0x00007fa91dba1e0e in ScModelObj::postMouseEvent (this=0x4593d10, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/sc/source/ui/unoobj/docuno.cxx:799
 #17 0x00007fa92e39567f in doc_postMouseEvent (pThis=0x334b8290, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/desktop/source/lib/init.cxx:5597
 #18 0x0000000000578631 in lok::Document::postMouseEvent (nModifier=0, nButtons=0, nCount=1, nY=<optimized out>, nX=<optimized out>, nType=<optimized out>, this=<optimized out>)
     at libreoffice/include/LibreOfficeKit/LibreOfficeKit.hxx:297
 #19 ChildSession::mouseEvent (this=this@entry=0x317e3cf0, tokens=..., target=target@entry=LokEventTargetEnum::Document) at kit/ChildSession.cpp:1906
 #20 0x0000000000588485 in ChildSession::_handleInput (this=<optimized out>, buffer=<optimized out>, length=<optimized out>) at kit/ChildSession.cpp:634

Change-Id: Ic67c8b7c4553853d0ab36dd448642564b6b6fb69
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173986
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 27, 2024
 #2  0x0000000000ac8c3e in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
 #3  0x00007fa92f2fa26f in std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>)
     at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #4  std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #5  vcl::Window::CallEventListeners (this=this@entry=0x34eb4f40, nEvent=nEvent@entry=VclEventId::ObjectDying, pData=pData@entry=0x0)
     at libreoffice/vcl/source/window/event.cxx:272
 #6  0x00007fa92f38277a in vcl::Window::dispose (this=0x34eb4f40) at libreoffice/vcl/source/window/window.cxx:159
 #7  0x00007fa92f678064 in VclPtr<HelpTextWindow>::disposeAndClear (this=<synthetic pointer>) at libreoffice/include/rtl/ref.hxx:88
 #8  ImplDestroyHelpWindow (rHelpData=..., bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:576
 #9  0x00007fa92f6780f8 in ImplDestroyHelpWindow (bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:565
 #10 0x00007fa92f679125 in ImplShowHelpWindow (pParent=0x334cfb90, nHelpWinStyle=<optimized out>, nStyle=QuickHelpFlags::NONE, rHelpText="Chart Area", rScreenPos=Point = {...}, rHelpArea=...)
     at libreoffice/vcl/source/app/help.cxx:532
 #11 0x00007fa92f679544 in Help::ShowQuickHelp (pParent=pParent@entry=0x334cfb90, rScreenRect=..., rHelpText="Chart Area", nStyle=nStyle@entry=QuickHelpFlags::NONE)
     at libreoffice/vcl/source/app/help.cxx:189
 #12 0x00007fa91ae862e0 in chart::ChartWindow::RequestHelp (this=0x334cfb90, rHEvt=...)
     at libreoffice/chart2/source/controller/main/ChartWindow.cxx:227
 #13 0x00007fa92e2e88a0 in (anonymous namespace)::LOKPostAsyncEvent (pEv=0x35b4a320) at libreoffice/sfx2/source/view/lokhelper.cxx:1103
 #14 0x00007fa92e2e076a in LokChartHelper::postMouseEvent (this=this@entry=0x7ffd226dd650, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089, nCount=nCount@entry=1,
     nButtons=nButtons@entry=0, nModifier=0, fScaleX=fScaleX@entry=0.10000000000000001, fScaleY=fScaleY@entry=0.10000000000000001)
     at libreoffice/sfx2/source/view/lokcharthelper.cxx:294
 #15 0x00007fa92e2e5b80 in SfxLokHelper::testInPlaceComponentMouseEventHit (pViewShell=pViewShell@entry=0x337e52a0, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089,
     nCount=nCount@entry=1, nButtons=nButtons@entry=0, nModifier=0, fScaleX=0.10000000000000001, fScaleY=0.10000000000000001, bNegativeX=false)
     at libreoffice/include/rtl/ref.hxx:69
 #16 0x00007fa91dba1e0e in ScModelObj::postMouseEvent (this=0x4593d10, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/sc/source/ui/unoobj/docuno.cxx:799
 #17 0x00007fa92e39567f in doc_postMouseEvent (pThis=0x334b8290, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/desktop/source/lib/init.cxx:5597
 #18 0x0000000000578631 in lok::Document::postMouseEvent (nModifier=0, nButtons=0, nCount=1, nY=<optimized out>, nX=<optimized out>, nType=<optimized out>, this=<optimized out>)
     at libreoffice/include/LibreOfficeKit/LibreOfficeKit.hxx:297
 #19 ChildSession::mouseEvent (this=this@entry=0x317e3cf0, tokens=..., target=target@entry=LokEventTargetEnum::Document) at kit/ChildSession.cpp:1906
 #20 0x0000000000588485 in ChildSession::_handleInput (this=<optimized out>, buffer=<optimized out>, length=<optimized out>) at kit/ChildSession.cpp:634

Change-Id: Ic67c8b7c4553853d0ab36dd448642564b6b6fb69
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173922
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 28, 2024
 #2  0x0000000000ac8c3e in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
 #3  0x00007fa92f2fa26f in std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>)
     at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #4  std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #5  vcl::Window::CallEventListeners (this=this@entry=0x34eb4f40, nEvent=nEvent@entry=VclEventId::ObjectDying, pData=pData@entry=0x0)
     at libreoffice/vcl/source/window/event.cxx:272
 #6  0x00007fa92f38277a in vcl::Window::dispose (this=0x34eb4f40) at libreoffice/vcl/source/window/window.cxx:159
 #7  0x00007fa92f678064 in VclPtr<HelpTextWindow>::disposeAndClear (this=<synthetic pointer>) at libreoffice/include/rtl/ref.hxx:88
 #8  ImplDestroyHelpWindow (rHelpData=..., bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:576
 #9  0x00007fa92f6780f8 in ImplDestroyHelpWindow (bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:565
 #10 0x00007fa92f679125 in ImplShowHelpWindow (pParent=0x334cfb90, nHelpWinStyle=<optimized out>, nStyle=QuickHelpFlags::NONE, rHelpText="Chart Area", rScreenPos=Point = {...}, rHelpArea=...)
     at libreoffice/vcl/source/app/help.cxx:532
 #11 0x00007fa92f679544 in Help::ShowQuickHelp (pParent=pParent@entry=0x334cfb90, rScreenRect=..., rHelpText="Chart Area", nStyle=nStyle@entry=QuickHelpFlags::NONE)
     at libreoffice/vcl/source/app/help.cxx:189
 #12 0x00007fa91ae862e0 in chart::ChartWindow::RequestHelp (this=0x334cfb90, rHEvt=...)
     at libreoffice/chart2/source/controller/main/ChartWindow.cxx:227
 #13 0x00007fa92e2e88a0 in (anonymous namespace)::LOKPostAsyncEvent (pEv=0x35b4a320) at libreoffice/sfx2/source/view/lokhelper.cxx:1103
 #14 0x00007fa92e2e076a in LokChartHelper::postMouseEvent (this=this@entry=0x7ffd226dd650, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089, nCount=nCount@entry=1,
     nButtons=nButtons@entry=0, nModifier=0, fScaleX=fScaleX@entry=0.10000000000000001, fScaleY=fScaleY@entry=0.10000000000000001)
     at libreoffice/sfx2/source/view/lokcharthelper.cxx:294
 #15 0x00007fa92e2e5b80 in SfxLokHelper::testInPlaceComponentMouseEventHit (pViewShell=pViewShell@entry=0x337e52a0, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089,
     nCount=nCount@entry=1, nButtons=nButtons@entry=0, nModifier=0, fScaleX=0.10000000000000001, fScaleY=0.10000000000000001, bNegativeX=false)
     at libreoffice/include/rtl/ref.hxx:69
 #16 0x00007fa91dba1e0e in ScModelObj::postMouseEvent (this=0x4593d10, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/sc/source/ui/unoobj/docuno.cxx:799
 #17 0x00007fa92e39567f in doc_postMouseEvent (pThis=0x334b8290, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/desktop/source/lib/init.cxx:5597
 #18 0x0000000000578631 in lok::Document::postMouseEvent (nModifier=0, nButtons=0, nCount=1, nY=<optimized out>, nX=<optimized out>, nType=<optimized out>, this=<optimized out>)
     at libreoffice/include/LibreOfficeKit/LibreOfficeKit.hxx:297
 #19 ChildSession::mouseEvent (this=this@entry=0x317e3cf0, tokens=..., target=target@entry=LokEventTargetEnum::Document) at kit/ChildSession.cpp:1906
 #20 0x0000000000588485 in ChildSession::_handleInput (this=<optimized out>, buffer=<optimized out>, length=<optimized out>) at kit/ChildSession.cpp:634

Change-Id: Ic67c8b7c4553853d0ab36dd448642564b6b6fb69
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173986
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
tdf-gerrit pushed a commit that referenced this pull request Sep 30, 2024
 #2  0x0000000000ac8c3e in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
 #3  0x00007fa92f2fa26f in std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>)
     at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #4  std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #5  vcl::Window::CallEventListeners (this=this@entry=0x34eb4f40, nEvent=nEvent@entry=VclEventId::ObjectDying, pData=pData@entry=0x0)
     at libreoffice/vcl/source/window/event.cxx:272
 #6  0x00007fa92f38277a in vcl::Window::dispose (this=0x34eb4f40) at libreoffice/vcl/source/window/window.cxx:159
 #7  0x00007fa92f678064 in VclPtr<HelpTextWindow>::disposeAndClear (this=<synthetic pointer>) at libreoffice/include/rtl/ref.hxx:88
 #8  ImplDestroyHelpWindow (rHelpData=..., bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:576
 #9  0x00007fa92f6780f8 in ImplDestroyHelpWindow (bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:565
 #10 0x00007fa92f679125 in ImplShowHelpWindow (pParent=0x334cfb90, nHelpWinStyle=<optimized out>, nStyle=QuickHelpFlags::NONE, rHelpText="Chart Area", rScreenPos=Point = {...}, rHelpArea=...)
     at libreoffice/vcl/source/app/help.cxx:532
 #11 0x00007fa92f679544 in Help::ShowQuickHelp (pParent=pParent@entry=0x334cfb90, rScreenRect=..., rHelpText="Chart Area", nStyle=nStyle@entry=QuickHelpFlags::NONE)
     at libreoffice/vcl/source/app/help.cxx:189
 #12 0x00007fa91ae862e0 in chart::ChartWindow::RequestHelp (this=0x334cfb90, rHEvt=...)
     at libreoffice/chart2/source/controller/main/ChartWindow.cxx:227
 #13 0x00007fa92e2e88a0 in (anonymous namespace)::LOKPostAsyncEvent (pEv=0x35b4a320) at libreoffice/sfx2/source/view/lokhelper.cxx:1103
 #14 0x00007fa92e2e076a in LokChartHelper::postMouseEvent (this=this@entry=0x7ffd226dd650, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089, nCount=nCount@entry=1,
     nButtons=nButtons@entry=0, nModifier=0, fScaleX=fScaleX@entry=0.10000000000000001, fScaleY=fScaleY@entry=0.10000000000000001)
     at libreoffice/sfx2/source/view/lokcharthelper.cxx:294
 #15 0x00007fa92e2e5b80 in SfxLokHelper::testInPlaceComponentMouseEventHit (pViewShell=pViewShell@entry=0x337e52a0, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089,
     nCount=nCount@entry=1, nButtons=nButtons@entry=0, nModifier=0, fScaleX=0.10000000000000001, fScaleY=0.10000000000000001, bNegativeX=false)
     at libreoffice/include/rtl/ref.hxx:69
 #16 0x00007fa91dba1e0e in ScModelObj::postMouseEvent (this=0x4593d10, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/sc/source/ui/unoobj/docuno.cxx:799
 #17 0x00007fa92e39567f in doc_postMouseEvent (pThis=0x334b8290, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/desktop/source/lib/init.cxx:5597
 #18 0x0000000000578631 in lok::Document::postMouseEvent (nModifier=0, nButtons=0, nCount=1, nY=<optimized out>, nX=<optimized out>, nType=<optimized out>, this=<optimized out>)
     at libreoffice/include/LibreOfficeKit/LibreOfficeKit.hxx:297
 #19 ChildSession::mouseEvent (this=this@entry=0x317e3cf0, tokens=..., target=target@entry=LokEventTargetEnum::Document) at kit/ChildSession.cpp:1906
 #20 0x0000000000588485 in ChildSession::_handleInput (this=<optimized out>, buffer=<optimized out>, length=<optimized out>) at kit/ChildSession.cpp:634

Change-Id: Ic67c8b7c4553853d0ab36dd448642564b6b6fb69
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173922
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 6f53881)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174022
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
tdf-gerrit pushed a commit that referenced this pull request Oct 1, 2024
 #2  0x0000000000ac8c3e in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
 #3  0x00007fa92f2fa26f in std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>)
     at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #4  std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #5  vcl::Window::CallEventListeners (this=this@entry=0x34eb4f40, nEvent=nEvent@entry=VclEventId::ObjectDying, pData=pData@entry=0x0)
     at libreoffice/vcl/source/window/event.cxx:272
 #6  0x00007fa92f38277a in vcl::Window::dispose (this=0x34eb4f40) at libreoffice/vcl/source/window/window.cxx:159
 #7  0x00007fa92f678064 in VclPtr<HelpTextWindow>::disposeAndClear (this=<synthetic pointer>) at libreoffice/include/rtl/ref.hxx:88
 #8  ImplDestroyHelpWindow (rHelpData=..., bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:576
 #9  0x00007fa92f6780f8 in ImplDestroyHelpWindow (bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:565
 #10 0x00007fa92f679125 in ImplShowHelpWindow (pParent=0x334cfb90, nHelpWinStyle=<optimized out>, nStyle=QuickHelpFlags::NONE, rHelpText="Chart Area", rScreenPos=Point = {...}, rHelpArea=...)
     at libreoffice/vcl/source/app/help.cxx:532
 #11 0x00007fa92f679544 in Help::ShowQuickHelp (pParent=pParent@entry=0x334cfb90, rScreenRect=..., rHelpText="Chart Area", nStyle=nStyle@entry=QuickHelpFlags::NONE)
     at libreoffice/vcl/source/app/help.cxx:189
 #12 0x00007fa91ae862e0 in chart::ChartWindow::RequestHelp (this=0x334cfb90, rHEvt=...)
     at libreoffice/chart2/source/controller/main/ChartWindow.cxx:227
 #13 0x00007fa92e2e88a0 in (anonymous namespace)::LOKPostAsyncEvent (pEv=0x35b4a320) at libreoffice/sfx2/source/view/lokhelper.cxx:1103
 #14 0x00007fa92e2e076a in LokChartHelper::postMouseEvent (this=this@entry=0x7ffd226dd650, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089, nCount=nCount@entry=1,
     nButtons=nButtons@entry=0, nModifier=0, fScaleX=fScaleX@entry=0.10000000000000001, fScaleY=fScaleY@entry=0.10000000000000001)
     at libreoffice/sfx2/source/view/lokcharthelper.cxx:294
 #15 0x00007fa92e2e5b80 in SfxLokHelper::testInPlaceComponentMouseEventHit (pViewShell=pViewShell@entry=0x337e52a0, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089,
     nCount=nCount@entry=1, nButtons=nButtons@entry=0, nModifier=0, fScaleX=0.10000000000000001, fScaleY=0.10000000000000001, bNegativeX=false)
     at libreoffice/include/rtl/ref.hxx:69
 #16 0x00007fa91dba1e0e in ScModelObj::postMouseEvent (this=0x4593d10, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/sc/source/ui/unoobj/docuno.cxx:799
 #17 0x00007fa92e39567f in doc_postMouseEvent (pThis=0x334b8290, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/desktop/source/lib/init.cxx:5597
 #18 0x0000000000578631 in lok::Document::postMouseEvent (nModifier=0, nButtons=0, nCount=1, nY=<optimized out>, nX=<optimized out>, nType=<optimized out>, this=<optimized out>)
     at libreoffice/include/LibreOfficeKit/LibreOfficeKit.hxx:297
 #19 ChildSession::mouseEvent (this=this@entry=0x317e3cf0, tokens=..., target=target@entry=LokEventTargetEnum::Document) at kit/ChildSession.cpp:1906
 #20 0x0000000000588485 in ChildSession::_handleInput (this=<optimized out>, buffer=<optimized out>, length=<optimized out>) at kit/ChildSession.cpp:634

Change-Id: Ic67c8b7c4553853d0ab36dd448642564b6b6fb69
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173922
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 6f53881)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174022
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
(cherry picked from commit 406aaa3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174023
tdf-gerrit pushed a commit that referenced this pull request Oct 3, 2024
...in code newly introduced in 135ce25
"tdf#146487 Don't show generic diagram title when there is an empty title
given", which caused CppunitTest_chart2_export2 to fail with

> /oox/inc/drawingml/chart/plotareaconverter.hxx:78:62: runtime error: load of value 222, which is not a valid value for type 'bool'
>     #0 0x7f95cd9ed87c in oox::drawingml::chart::PlotAreaConverter::isSingleSeriesTitle() const /oox/inc/drawingml/chart/plotareaconverter.hxx:78:62
>     #1 0x7f95cd9e506f in oox::drawingml::chart::ChartSpaceConverter::convertFromModel(com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&, com::sun::star::awt::Point const&) /oox/source/drawingml/chart/chartspaceconverter.cxx:189:53
>     #2 0x7f95cd9b6c34 in oox::drawingml::chart::ChartConverter::convertFromModel(oox::core::XmlFilterBase&, oox::drawingml::chart::ChartSpaceModel&, com::sun::star::uno::Reference<com::sun::star::chart2::XChartDocument> const&, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&, com::sun::star::awt::Point const&, com::sun::star::awt::Size const&) /oox/source/drawingml/chart/chartconverter.cxx:93:20
>     #3 0x7f95ce548f59 in oox::drawingml::Shape::finalizeXShape(oox::core::XmlFilterBase&, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&) /oox/source/drawingml/shape.cxx:2245:50
>     #4 0x7f95438150b2 in oox::xls::Shape::finalizeXShape(oox::core::XmlFilterBase&, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&) /sc/source/filter/oox/drawingfragment.cxx:113:30
>     #5 0x7f95ce5267bb in oox::drawingml::Shape::createAndInsert(oox::core::XmlFilterBase&, rtl::OUString const&, oox::drawingml::Theme const*, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&, bool, bool, basegfx::B2DHomMatrix&, oox::drawingml::FillProperties const&, std::shared_ptr<oox::drawingml::Shape>) /oox/source/drawingml/shape.cxx:1964:9
>     #6 0x7f95ce4edb54 in oox::drawingml::Shape::addShape(oox::core::XmlFilterBase&, oox::drawingml::Theme const*, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&, basegfx::B2DHomMatrix const&, oox::drawingml::FillProperties const&, std::__debug::map<rtl::OUString, std::shared_ptr<oox::drawingml::Shape>, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::shared_ptr<oox::drawingml::Shape> > > >*, std::shared_ptr<oox::drawingml::Shape>) /oox/source/drawingml/shape.cxx:366:41
>     #7 0x7f954381ef79 in oox::xls::DrawingFragment::onEndElement() /sc/source/filter/oox/drawingfragment.cxx:335:30
>     #8 0x7f95cdcaee54 in oox::core::ContextHandler2Helper::implEndElement(int) /oox/source/core/contexthandler2.cxx:125:9
>     #9 0x7f95cdd5c116 in oox::core::FragmentHandler2::endFastElement(int) /oox/source/core/fragmenthandler2.cxx:91:5
>     #10 0x7f95caf68fca in (anonymous namespace)::Entity::endElement() /sax/source/fastparser/fastparser.cxx:514:27
>     #11 0x7f95caf68998 in sax_fastparser::FastSaxParserImpl::callbackEndElement() /sax/source/fastparser/fastparser.cxx:1331:17
>     #12 0x7f95caf58444 in (anonymous namespace)::call_callbackEndElement(void*, unsigned char const*, unsigned char const*, unsigned char const*) /sax/source/fastparser/fastparser.cxx:338:18
>     #13 0x7f960adebeda in xmlParseEndTag2 /workdir/UnpackedTarball/libxml2/parser.c:10090:2
>     #14 0x7f960ad929b5 in xmlParseTryOrFinish /workdir/UnpackedTarball/libxml2/parser.c:11868:14
>     #15 0x7f960ad86334 in xmlParseChunk /workdir/UnpackedTarball/libxml2/parser.c:12151:5
>     #16 0x7f95caf53231 in sax_fastparser::FastSaxParserImpl::parse() /sax/source/fastparser/fastparser.cxx:1085:21
>     #17 0x7f95caf4cd18 in sax_fastparser::FastSaxParserImpl::parseStream(com::sun::star::xml::sax::InputSource const&) /sax/source/fastparser/fastparser.cxx:890:9
>     #18 0x7f95caf6e950 in sax_fastparser::FastSaxParser::parseStream(com::sun::star::xml::sax::InputSource const&) /sax/source/fastparser/fastparser.cxx:1470:13
>     #19 0x7f95cdce50d1 in oox::core::FastParser::parseStream(com::sun::star::xml::sax::InputSource const&, bool) /oox/source/core/fastparser.cxx:121:15
>     #20 0x7f95cdce5868 in oox::core::FastParser::parseStream(com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, rtl::OUString const&) /oox/source/core/fastparser.cxx:129:5
>     #21 0x7f95cddbb234 in oox::core::XmlFilterBase::importFragment(rtl::Reference<oox::core::FragmentHandler> const&, oox::core::FastParser&) /oox/source/core/xmlfilterbase.cxx:414:21
>     #22 0x7f95cddb9b8d in oox::core::XmlFilterBase::importFragment(rtl::Reference<oox::core::FragmentHandler> const&) /oox/source/core/xmlfilterbase.cxx:344:12
>     #23 0x7f95441ceaa8 in oox::xls::WorkbookHelper::importOoxFragment(rtl::Reference<oox::core::FragmentHandler> const&) /sc/source/filter/oox/workbookhelper.cxx:1046:27
>     #24 0x7f95442797f1 in oox::xls::WorksheetGlobals::finalizeDrawings() /sc/source/filter/oox/worksheethelper.cxx:1373:9
>     #25 0x7f95442789e0 in oox::xls::WorksheetGlobals::finalizeDrawingImport() /sc/source/filter/oox/worksheethelper.cxx:996:5
>     #26 0x7f954428744d in oox::xls::WorksheetHelper::finalizeDrawingImport() /sc/source/filter/oox/worksheethelper.cxx:1637:17
>     #27 0x7f95441771de in oox::xls::WorkbookFragment::finalizeImport() /sc/source/filter/oox/workbookfragment.cxx:511:18
>     #28 0x7f95cdd5b3ae in oox::core::FragmentHandler2::endDocument() /oox/source/core/fragmenthandler2.cxx:53:5
>     #29 0x7f95caf4cfc2 in sax_fastparser::FastSaxParserImpl::parseStream(com::sun::star::xml::sax::InputSource const&) /sax/source/fastparser/fastparser.cxx:896:36
>     #30 0x7f95caf6e950 in sax_fastparser::FastSaxParser::parseStream(com::sun::star::xml::sax::InputSource const&) /sax/source/fastparser/fastparser.cxx:1470:13
>     #31 0x7f95cdce50d1 in oox::core::FastParser::parseStream(com::sun::star::xml::sax::InputSource const&, bool) /oox/source/core/fastparser.cxx:121:15
>     #32 0x7f95cdce5868 in oox::core::FastParser::parseStream(com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, rtl::OUString const&) /oox/source/core/fastparser.cxx:129:5
>     #33 0x7f95cddbb234 in oox::core::XmlFilterBase::importFragment(rtl::Reference<oox::core::FragmentHandler> const&, oox::core::FastParser&) /oox/source/core/xmlfilterbase.cxx:414:21
>     #34 0x7f95cddb9b8d in oox::core::XmlFilterBase::importFragment(rtl::Reference<oox::core::FragmentHandler> const&) /oox/source/core/xmlfilterbase.cxx:344:12
>     #35 0x7f95435c4daa in oox::xls::ExcelFilter::importDocument() /sc/source/filter/oox/excelfilter.cxx:113:25
>     #36 0x7f95cdcf953b in oox::core::FilterBase::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /oox/source/core/filterbase.cxx:488:49
>     #37 0x7f95435c7733 in oox::xls::ExcelFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sc/source/filter/oox/excelfilter.cxx:176:25
>     #38 0x7f95857c5b40 in SfxObjectShell::ImportFrom(SfxMedium&, com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) /sfx2/source/doc/objstor.cxx:2393:34
>     #39 0x7f9585781c6a in SfxObjectShell::DoLoad(SfxMedium*) /sfx2/source/doc/objstor.cxx:761:23
>     #40 0x7f95859a9652 in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/sfxbasemodel.cxx:1980:36
>     #41 0x7f95862145e9 in (anonymous namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) /sfx2/source/view/frmload.cxx:720:28
>     #42 0x7f95536a9900 in framework::LoadEnv::impl_loadContent() /framework/source/loadenv/loadenv.cxx:1176:37
>     #43 0x7f95536a091b in framework::LoadEnv::start() /framework/source/loadenv/loadenv.cxx:412:20
>     #44 0x7f9553698f59 in framework::LoadEnv::startLoading(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, rtl::OUString const&, int, LoadEnvFeatures) /framework/source/loadenv/loadenv.cxx:308:5
>     #45 0x7f95536946e7 in framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/loadenv/loadenv.cxx:168:14
>     #46 0x7f955376867d in framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/desktop.cxx:591:16
>     #47 0x7f95537688a6 in non-virtual thunk to framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/desktop.cxx
>     #48 0x7f9569f7cafa in unotest::MacrosTest::loadFromDesktop(rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /unotest/source/cpp/macros_test.cxx:71:62
>     #49 0x7f9580718c56 in UnoApiTest::loadWithParams(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /test/source/unoapi_test.cxx:126:19
>     #50 0x7f9580717ef8 in UnoApiTest::load(rtl::OUString const&, char const*) /test/source/unoapi_test.cxx:108:5
>     #51 0x7f9580719254 in UnoApiTest::loadFromFile(std::basic_string_view<char16_t, std::char_traits<char16_t> >, char const*) /test/source/unoapi_test.cxx:132:5
>     #52 0x7f95d8bf1018 in testTdf123647::TestBody() /chart2/qa/extras/chart2export2.cxx:1242:5

(<https://ci.libreoffice.org//job/lo_ubsan/3048/>)

Change-Id: I870d811e78b8c55b84627ae609f98f623465dd9d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162294
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
(cherry picked from commit 3fb9859)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174442
Tested-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
tdf-gerrit pushed a commit that referenced this pull request Oct 22, 2024
Instead of using a custom (non-recursive) std::mutex in the
extension manager dialog, hold the (recursive) SolarMutex instead.

As the backtrace in attachment 197155 in tdf#161625 (s.a. below)
shows, a recursive mutex is needed:

dp_gui::ExtMgrDialog::TimeOutHdl (frame 17) locks the mutex, then
dp_gui::ExtMgrDialog::startProgress (frame 6) wants to lock it
again, causing a deadlock.

(Switching ExtMgrDialog::m_aMutex to be a std::recursive_mutex
could be an alternative, but follow the common pattern of holding
the SolarMutex while doing UI stuff instead.)

Somewhat similar commit:

    commit 406a7e9
    Date:   Wed Jul 10 12:46:50 2024 +0200

        fix locking in UpdateRequiredDialog

Backtrace of deadlock:

    #0  0x00007f883f6adc70 in ?? () from /usr/lib/libc.so.6
    #1  0x00007f883f6b4b01 in pthread_mutex_lock () from /usr/lib/libc.so.6
    #2  0x00007f87f3ea068e in __gthread_mutex_lock (__mutex=0x5782aab26e48) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h:762
    #3  std::mutex::lock (this=0x5782aab26e48) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/std_mutex.h:113
    #4  std::unique_lock<std::mutex>::lock (this=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/unique_lock.h:147
    #5  std::unique_lock<std::mutex>::unique_lock (__m=..., this=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/unique_lock.h:73
    #6  dp_gui::ExtMgrDialog::startProgress (this=0x5782aab26de0, _bLockInterface=0x80) at /home/user/libreofficetwo/desktop/source/deployment/gui/dp_gui_dialog2.cxx:779
    #7  0x00007f883b4080a1 in Link<void*, void>::Call (this=0x7f86b0000c08, data=0x80) at include/tools/link.hxx:111
    #8  ImplHandleUserEvent (pSVEvent=pSVEvent@entry=0x7f86b0000c00) at /home/user/libreofficetwo/vcl/source/window/winproc.cxx:2285
    #9  0x00007f883b40616a in ImplWindowFrameProc (_pWindow=0x5782a76df9f0, nEvent=SalEvent::UserEvent, pEvent=0x7f86b0000c00) at /home/user/libreofficetwo/vcl/source/window/winproc.cxx:2849
    #10 0x00007f883b6c711e in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=<optimized out>) at /home/user/libreofficetwo/vcl/source/app/salusereventlist.cxx:119
    #11 SalUserEventList::DispatchUserEvents (this=0x5782a62edb08, bHandleAllCurrentEvents=false) at /home/user/libreofficetwo/vcl/source/app/salusereventlist.cxx:120
    #12 0x00007f8833fb7827 in QtInstance::ImplYield (this=this@entry=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:447
    #13 0x00007f8833fb9e11 in QtInstance::DoYield (this=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:469
    #14 0x00007f883b70fc72 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:385
    #15 Application::Yield () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:473
    #16 0x00007f883b486415 in ProgressBar::SetValue (this=<optimized out>, nNewPercent=<optimized out>) at /home/user/libreofficetwo/vcl/source/control/prgsbar.cxx:199
    #17 0x00007f87f3ea14ca in dp_gui::ExtMgrDialog::TimeOutHdl (this=0x5782aab26de0) at /home/user/libreofficetwo/desktop/source/deployment/gui/dp_gui_dialog2.cxx:976
    #18 0x00007f883b6ff8c7 in Scheduler::CallbackTaskScheduling () at /home/user/libreofficetwo/vcl/source/app/scheduler.cxx:509
    #19 0x00007f8833fd4013 in SalTimer::CallCallback (this=0x5782a77b83d0) at vcl/inc/saltimer.hxx:53
    #20 QtTimer::timeoutActivated (this=0x5782a77b83c0) at vcl/qt6/../qt5/QtTimer.cxx:51
    #21 0x00007f88341a3397 in ?? () from /usr/lib/libQt6Core.so.6
    #22 0x00007f88341ab5e5 in QTimer::timerEvent(QTimerEvent*) () from /usr/lib/libQt6Core.so.6
    #23 0x00007f883418d859 in QObject::event(QEvent*) () from /usr/lib/libQt6Core.so.6
    #24 0x00007f8832efc8cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6
    #25 0x00007f8834145aa8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6
    #26 0x00007f88342c7658 in QTimerInfoList::activateTimers() () from /usr/lib/libQt6Core.so.6
    #27 0x00007f88343a9f99 in ?? () from /usr/lib/libQt6Core.so.6
    #28 0x00007f8837877299 in ?? () from /usr/lib/libglib-2.0.so.0
    #29 0x00007f88378d9ec7 in ?? () from /usr/lib/libglib-2.0.so.0
    #30 0x00007f8837876795 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
    #31 0x00007f88343a82bd in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6
    #32 0x00007f8833fb789d in QtInstance::ImplYield (this=this@entry=0x5782a62edad0, bWait=<optimized out>, bHandleAllCurrentEvents=<optimized out>) at vcl/qt6/../qt5/QtInstance.cxx:458
    #33 0x00007f8833fb9e11 in QtInstance::DoYield (this=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:469
    #34 0x00007f883b70fc72 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:385
    #35 Application::Yield () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:473
    #36 0x00007f883b70fb90 in Application::Execute () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:360
    #37 0x00007f883f8e1770 in desktop::Desktop::Main (this=0x7ffc2a5b0d28) at /home/user/libreofficetwo/desktop/source/app/app.cxx:1691
    #38 0x00007f883b717e1e in ImplSVMain () at /home/user/libreofficetwo/vcl/source/app/svmain.cxx:228
    #39 0x00007f883f90ef8a in soffice_main () at /home/user/libreofficetwo/desktop/source/app/sofficemain.cxx:121
    #40 0x000057829d6f683b in sal_main () at /home/user/libreofficetwo/desktop/source/app/main.c:51
    #41 main (argc=<optimized out>, argv=<optimized out>) at /home/user/libreofficetwo/desktop/source/app/main.c:49

Change-Id: I96d746eb1493aaf5b56d50664c9d1817699f21bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175298
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Reviewed-by: Rafael Lima <rafael.palma.lima@gmail.com>
Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
tdf-gerrit pushed a commit that referenced this pull request Oct 22, 2024
Instead of using a custom (non-recursive) std::mutex in the
extension manager dialog, hold the (recursive) SolarMutex instead.

As the backtrace in attachment 197155 in tdf#161625 (s.a. below)
shows, a recursive mutex is needed:

dp_gui::ExtMgrDialog::TimeOutHdl (frame 17) locks the mutex, then
dp_gui::ExtMgrDialog::startProgress (frame 6) wants to lock it
again, causing a deadlock.

(Switching ExtMgrDialog::m_aMutex to be a std::recursive_mutex
could be an alternative, but follow the common pattern of holding
the SolarMutex while doing UI stuff instead.)

Somewhat similar commit:

    commit 406a7e9
    Date:   Wed Jul 10 12:46:50 2024 +0200

        fix locking in UpdateRequiredDialog

Backtrace of deadlock:

    #0  0x00007f883f6adc70 in ?? () from /usr/lib/libc.so.6
    #1  0x00007f883f6b4b01 in pthread_mutex_lock () from /usr/lib/libc.so.6
    #2  0x00007f87f3ea068e in __gthread_mutex_lock (__mutex=0x5782aab26e48) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h:762
    #3  std::mutex::lock (this=0x5782aab26e48) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/std_mutex.h:113
    #4  std::unique_lock<std::mutex>::lock (this=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/unique_lock.h:147
    #5  std::unique_lock<std::mutex>::unique_lock (__m=..., this=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/unique_lock.h:73
    #6  dp_gui::ExtMgrDialog::startProgress (this=0x5782aab26de0, _bLockInterface=0x80) at /home/user/libreofficetwo/desktop/source/deployment/gui/dp_gui_dialog2.cxx:779
    #7  0x00007f883b4080a1 in Link<void*, void>::Call (this=0x7f86b0000c08, data=0x80) at include/tools/link.hxx:111
    #8  ImplHandleUserEvent (pSVEvent=pSVEvent@entry=0x7f86b0000c00) at /home/user/libreofficetwo/vcl/source/window/winproc.cxx:2285
    #9  0x00007f883b40616a in ImplWindowFrameProc (_pWindow=0x5782a76df9f0, nEvent=SalEvent::UserEvent, pEvent=0x7f86b0000c00) at /home/user/libreofficetwo/vcl/source/window/winproc.cxx:2849
    #10 0x00007f883b6c711e in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=<optimized out>) at /home/user/libreofficetwo/vcl/source/app/salusereventlist.cxx:119
    #11 SalUserEventList::DispatchUserEvents (this=0x5782a62edb08, bHandleAllCurrentEvents=false) at /home/user/libreofficetwo/vcl/source/app/salusereventlist.cxx:120
    #12 0x00007f8833fb7827 in QtInstance::ImplYield (this=this@entry=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:447
    #13 0x00007f8833fb9e11 in QtInstance::DoYield (this=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:469
    #14 0x00007f883b70fc72 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:385
    #15 Application::Yield () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:473
    #16 0x00007f883b486415 in ProgressBar::SetValue (this=<optimized out>, nNewPercent=<optimized out>) at /home/user/libreofficetwo/vcl/source/control/prgsbar.cxx:199
    #17 0x00007f87f3ea14ca in dp_gui::ExtMgrDialog::TimeOutHdl (this=0x5782aab26de0) at /home/user/libreofficetwo/desktop/source/deployment/gui/dp_gui_dialog2.cxx:976
    #18 0x00007f883b6ff8c7 in Scheduler::CallbackTaskScheduling () at /home/user/libreofficetwo/vcl/source/app/scheduler.cxx:509
    #19 0x00007f8833fd4013 in SalTimer::CallCallback (this=0x5782a77b83d0) at vcl/inc/saltimer.hxx:53
    #20 QtTimer::timeoutActivated (this=0x5782a77b83c0) at vcl/qt6/../qt5/QtTimer.cxx:51
    #21 0x00007f88341a3397 in ?? () from /usr/lib/libQt6Core.so.6
    #22 0x00007f88341ab5e5 in QTimer::timerEvent(QTimerEvent*) () from /usr/lib/libQt6Core.so.6
    #23 0x00007f883418d859 in QObject::event(QEvent*) () from /usr/lib/libQt6Core.so.6
    #24 0x00007f8832efc8cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6
    #25 0x00007f8834145aa8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6
    #26 0x00007f88342c7658 in QTimerInfoList::activateTimers() () from /usr/lib/libQt6Core.so.6
    #27 0x00007f88343a9f99 in ?? () from /usr/lib/libQt6Core.so.6
    #28 0x00007f8837877299 in ?? () from /usr/lib/libglib-2.0.so.0
    #29 0x00007f88378d9ec7 in ?? () from /usr/lib/libglib-2.0.so.0
    #30 0x00007f8837876795 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
    #31 0x00007f88343a82bd in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6
    #32 0x00007f8833fb789d in QtInstance::ImplYield (this=this@entry=0x5782a62edad0, bWait=<optimized out>, bHandleAllCurrentEvents=<optimized out>) at vcl/qt6/../qt5/QtInstance.cxx:458
    #33 0x00007f8833fb9e11 in QtInstance::DoYield (this=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:469
    #34 0x00007f883b70fc72 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:385
    #35 Application::Yield () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:473
    #36 0x00007f883b70fb90 in Application::Execute () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:360
    #37 0x00007f883f8e1770 in desktop::Desktop::Main (this=0x7ffc2a5b0d28) at /home/user/libreofficetwo/desktop/source/app/app.cxx:1691
    #38 0x00007f883b717e1e in ImplSVMain () at /home/user/libreofficetwo/vcl/source/app/svmain.cxx:228
    #39 0x00007f883f90ef8a in soffice_main () at /home/user/libreofficetwo/desktop/source/app/sofficemain.cxx:121
    #40 0x000057829d6f683b in sal_main () at /home/user/libreofficetwo/desktop/source/app/main.c:51
    #41 main (argc=<optimized out>, argv=<optimized out>) at /home/user/libreofficetwo/desktop/source/app/main.c:49

Change-Id: I96d746eb1493aaf5b56d50664c9d1817699f21bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175298
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Reviewed-by: Rafael Lima <rafael.palma.lima@gmail.com>
Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175402
tdf-gerrit pushed a commit that referenced this pull request Oct 23, 2024
...as seen at

> /tools/source/misc/fix16.cxx:79:53: runtime error: signed integer overflow: -2147483648 - 1 cannot be represented in type 'int'
>     #0 0x7fc2f9f50a60 in mask(int) /tools/source/misc/fix16.cxx:79:53
>     #1 0x7fc2f9f505fd in fix16_div(int, int) /tools/source/misc/fix16.cxx:122:34
>     #2 0x7fc2f00d12e0 in vcl::fixedDiv(int, int) /vcl/source/fontsubset/sft.cxx:127:12
>     #3 0x7fc2f00d11c1 in vcl::fixedMulDiv(int, int, int) /vcl/source/fontsubset/sft.cxx:135:12
>     #4 0x7fc2f00d0851 in vcl::GetCompoundTTOutline(vcl::AbstractTrueTypeFont*, unsigned int, std::__debug::vector<vcl::ControlPoint, std::allocator<vcl::ControlPoint> >&, vcl::(anonymous namespace)::TTGlyphMetrics*, std::__debug::vector<unsigned int, std::allocator<unsigned int> >&) /vcl/source/fontsubset/sft.cxx:544:91
>     #5 0x7fc2f00af5f1 in vcl::GetTTGlyphOutline(vcl::AbstractTrueTypeFont*, unsigned int, std::__debug::vector<vcl::ControlPoint, std::allocator<vcl::ControlPoint> >&, vcl::(anonymous namespace)::TTGlyphMetrics*, std::__debug::vector<unsigned int, std::allocator<unsigned int> >*) /vcl/source/fontsubset/sft.cxx:621:15
>     #6 0x7fc2f00aea34 in vcl::GetTTGlyphPoints(vcl::AbstractTrueTypeFont*, unsigned int, std::__debug::vector<vcl::ControlPoint, std::allocator<vcl::ControlPoint> >&) /vcl/source/fontsubset/sft.cxx:1239:12
>     #7 0x7fc2f00b92de in vcl::GetTTRawGlyphData(vcl::AbstractTrueTypeFont*, unsigned int) /vcl/source/fontsubset/sft.cxx:1667:9
>     #8 0x7fc2f00b23ed in vcl::CreateTTFromTTGlyphs(vcl::AbstractTrueTypeFont*, std::__debug::vector<unsigned char, std::allocator<unsigned char> >&, unsigned short const*, unsigned char const*, int) /vcl/source/fontsubset/sft.cxx:1374:32
>     #9 0x7fc2f00bc71a in vcl::CreateTTFfontSubset(vcl::AbstractTrueTypeFont&, std::__debug::vector<unsigned char, std::allocator<unsigned char> >&, unsigned int const*, unsigned char const*, int, FontSubsetInfo&) /vcl/source/fontsubset/sft.cxx:1549:13
>     #10 0x7fc2eff57836 in vcl::font::PhysicalFontFace::CreateFontSubset(std::__debug::vector<unsigned char, std::allocator<unsigned char> >&, unsigned int const*, unsigned char const*, int, FontSubsetInfo&) const /vcl/source/font/PhysicalFontFace.cxx:367:12
>     #11 0x7fc2ee4e0472 in vcl::PDFWriterImpl::emitFonts() /vcl/source/gdi/pdfwriter_impl.cxx:3152:24
>     #12 0x7fc2ee4e9cb9 in vcl::PDFWriterImpl::emitResources() /vcl/source/gdi/pdfwriter_impl.cxx:3363:10
>     #13 0x7fc2ee53f91d in vcl::PDFWriterImpl::emitCatalog() /vcl/source/gdi/pdfwriter_impl.cxx:5288:10
>     #14 0x7fc2ee567ae3 in vcl::PDFWriterImpl::emit() /vcl/source/gdi/pdfwriter_impl.cxx:6341:10
>     #15 0x7fc2ee3d3f2a in vcl::PDFWriter::Emit() /vcl/source/gdi/pdfwriter.cxx:53:29
>     #16 0x7fc249b4b82a in PDFExport::Export(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdfexport.cxx:1127:39
>     #17 0x7fc249bb2782 in PDFFilter::implExport(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdffilter.cxx:182:24
>     #18 0x7fc249bb342b in PDFFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdffilter.cxx:247:23
>     #19 0x7fc2a51ebec6 in SfxObjectShell::ExportTo(SfxMedium&) /sfx2/source/doc/objstor.cxx:2945:25
>     #20 0x7fc2a51d7bec in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) /sfx2/source/doc/objstor.cxx:1943:19
>     #21 0x7fc2a5213f83 in SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString const&, rtl::OUString const&, SfxItemSet const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/objstor.cxx:3459:39
>     #22 0x7fc2a520b709 in SfxObjectShell::CommonSaveAs_Impl(INetURLObject const&, rtl::OUString const&, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/objstor.cxx:3249:9
>     #23 0x7fc2a5147a8b in SfxObjectShell::APISaveAs_Impl(std::basic_string_view<char16_t, std::char_traits<char16_t> >, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/objserv.cxx:320:19
>     #24 0x7fc2a543024c in SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, bool) /sfx2/source/doc/sfxbasemodel.cxx:3231:42
>     #25 0x7fc2a54374f4 in SfxBaseModel::storeToURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/sfxbasemodel.cxx:1813:13
>     #26 0x7fc2c74053ae in ScPDFExportTest::exportToPDF(com::sun::star::uno::Reference<com::sun::star::frame::XModel> const&, ScRange const&) /sc/qa/extras/scpdfexport.cxx:179:16
>     #27 0x7fc2c7437e0f in ScPDFExportTest::testForcepoint97() /sc/qa/extras/scpdfexport.cxx:915:5

during CppunitTest_sc_pdf_export
(<https://ci.libreoffice.org/job/lo_ubsan/3346/>)

Change-Id: I3074479ea3267417a73ecafa81b4a9898f19d1a9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175469
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
tdf-gerrit pushed a commit that referenced this pull request Oct 29, 2024
 #2  0x0000000000ac8c3e in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
 #3  0x00007fa92f2fa26f in std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>)
     at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #4  std::unique_ptr<WindowImpl, std::default_delete<WindowImpl> >::operator* (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:443
 #5  vcl::Window::CallEventListeners (this=this@entry=0x34eb4f40, nEvent=nEvent@entry=VclEventId::ObjectDying, pData=pData@entry=0x0)
     at libreoffice/vcl/source/window/event.cxx:272
 #6  0x00007fa92f38277a in vcl::Window::dispose (this=0x34eb4f40) at libreoffice/vcl/source/window/window.cxx:159
 #7  0x00007fa92f678064 in VclPtr<HelpTextWindow>::disposeAndClear (this=<synthetic pointer>) at libreoffice/include/rtl/ref.hxx:88
 #8  ImplDestroyHelpWindow (rHelpData=..., bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:576
 #9  0x00007fa92f6780f8 in ImplDestroyHelpWindow (bUpdateHideTime=<optimized out>) at libreoffice/vcl/source/app/help.cxx:565
 #10 0x00007fa92f679125 in ImplShowHelpWindow (pParent=0x334cfb90, nHelpWinStyle=<optimized out>, nStyle=QuickHelpFlags::NONE, rHelpText="Chart Area", rScreenPos=Point = {...}, rHelpArea=...)
     at libreoffice/vcl/source/app/help.cxx:532
 #11 0x00007fa92f679544 in Help::ShowQuickHelp (pParent=pParent@entry=0x334cfb90, rScreenRect=..., rHelpText="Chart Area", nStyle=nStyle@entry=QuickHelpFlags::NONE)
     at libreoffice/vcl/source/app/help.cxx:189
 #12 0x00007fa91ae862e0 in chart::ChartWindow::RequestHelp (this=0x334cfb90, rHEvt=...)
     at libreoffice/chart2/source/controller/main/ChartWindow.cxx:227
 #13 0x00007fa92e2e88a0 in (anonymous namespace)::LOKPostAsyncEvent (pEv=0x35b4a320) at libreoffice/sfx2/source/view/lokhelper.cxx:1103
 #14 0x00007fa92e2e076a in LokChartHelper::postMouseEvent (this=this@entry=0x7ffd226dd650, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089, nCount=nCount@entry=1,
     nButtons=nButtons@entry=0, nModifier=0, fScaleX=fScaleX@entry=0.10000000000000001, fScaleY=fScaleY@entry=0.10000000000000001)
     at libreoffice/sfx2/source/view/lokcharthelper.cxx:294
 #15 0x00007fa92e2e5b80 in SfxLokHelper::testInPlaceComponentMouseEventHit (pViewShell=pViewShell@entry=0x337e52a0, nType=nType@entry=2, nX=nX@entry=15405, nY=nY@entry=4089,
     nCount=nCount@entry=1, nButtons=nButtons@entry=0, nModifier=0, fScaleX=0.10000000000000001, fScaleY=0.10000000000000001, bNegativeX=false)
     at libreoffice/include/rtl/ref.hxx:69
 #16 0x00007fa91dba1e0e in ScModelObj::postMouseEvent (this=0x4593d10, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/sc/source/ui/unoobj/docuno.cxx:799
 #17 0x00007fa92e39567f in doc_postMouseEvent (pThis=0x334b8290, nType=2, nX=15405, nY=4089, nCount=1, nButtons=0, nModifier=0)
     at libreoffice/desktop/source/lib/init.cxx:5597
 #18 0x0000000000578631 in lok::Document::postMouseEvent (nModifier=0, nButtons=0, nCount=1, nY=<optimized out>, nX=<optimized out>, nType=<optimized out>, this=<optimized out>)
     at libreoffice/include/LibreOfficeKit/LibreOfficeKit.hxx:297
 #19 ChildSession::mouseEvent (this=this@entry=0x317e3cf0, tokens=..., target=target@entry=LokEventTargetEnum::Document) at kit/ChildSession.cpp:1906
 #20 0x0000000000588485 in ChildSession::_handleInput (this=<optimized out>, buffer=<optimized out>, length=<optimized out>) at kit/ChildSession.cpp:634

Change-Id: Ic67c8b7c4553853d0ab36dd448642564b6b6fb69
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173922
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
(cherry picked from commit 6f53881)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174022
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
(cherry picked from commit 406aaa3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174023
(cherry picked from commit d7f677f)
tdf-gerrit pushed a commit that referenced this pull request Oct 29, 2024
At least with one ASan/UBSan setup of mine using LODE's Clang 12.0.1,
./autogen.sh would occasionally detect -std=gnu11 as the required CC "option to
enable C11 features" (which would in turn cause building external/firebird to
fail oddly; an issue worth investigations of its own), because Clang would
occasionally crash with a SEGV on the corresponding configure test program's
first invocation (without -std=gnu11) when invoked with -O2 (and happen to
succeed on second invocation with -std=gnu11, so configure thinks that's
needed), see below for a relevant config.log excerpt.

When CC/CXX are already set (as is the case in this scenario), we could arguably
skip the AC_PROG_CC/CXX checks entirely (and thus avoid configure potentially
adding -std=gnu11 to CC), but at least AC_PROG_CC also internally sets the GCC
shell var, which we use in configure.ac.  So better be conservative and just
avoid -O2 during AC_PROG_CC/CXX (whatever the autoconf motivation to include it
in the first place).

> configure:8165: checking for /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist option to enable C11 features
> configure:8180: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist  -c -g -O2  conftest.c >&5
> PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
> Stack dump:
> 0.	Program arguments: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist -c -g -O2 conftest.c
> 1.	<eof> parser at end of file
> 2.	Code generation
>  #0 0x000055f3a890caf2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1c3eaf2)
>  #1 0x000055f3a890a734 llvm::sys::RunSignalHandlers() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1c3c734)
>  #2 0x000055f3a887b998 CrashRecoverySignalHandler(int) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1bad998)
>  #3 0x00007f750d24e520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
>  #4 0x000055f3a93f9cd4 llvm::DIE::getUnitDie() const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x272bcd4)
>  #5 0x000055f3a9404574 llvm::DwarfDebug::finishEntityDefinitions() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2736574)
>  #6 0x000055f3a941df99 llvm::DwarfDebug::finalizeModuleInfo() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x274ff99)
>  #7 0x000055f3a9421128 llvm::DwarfDebug::endModule() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2753128)
>  #8 0x000055f3a93f1219 llvm::AsmPrinter::doFinalization(llvm::Module&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2723219)
>  #9 0x000055f3a82478f5 llvm::FPPassManager::doFinalization(llvm::Module&) (.localalias) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x15798f5)
> #10 0x000055f3a8253900 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1585900)
> #11 0x000055f3a8bb57d3 (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (.constprop.0) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1ee77d3)
> #12 0x000055f3a8bb76ea clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1ee96ea)
> #13 0x000055f3a9825876 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2b57876)
> #14 0x000055f3aa35c549 clang::ParseAST(clang::Sema&, bool, bool) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x368e549)
> #15 0x000055f3a91ef2d9 clang::FrontendAction::Execute() (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x25212d9)
> #16 0x000055f3a91903a3 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x24c23a3)
> #17 0x000055f3a92a2fd8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x25d4fd8)
> #18 0x000055f3a7798815 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xaca815)
> #19 0x000055f3a77961a7 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xac81a7)
> #20 0x000055f3a9039689 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x236b689)
> #21 0x000055f3a887baa7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x1badaa7)
> #22 0x000055f3a903a802 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (.part.0) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x236c802)
> #23 0x000055f3a900fbec clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2341bec)
> #24 0x000055f3a9010679 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x2342679)
> #25 0x000055f3a901e8f1 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0x23508f1)
> #26 0x000055f3a7717e6f main (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xa49e6f)
> #27 0x00007f750d235d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
> #28 0x00007f750d235e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
> #29 0x000055f3a7795b55 _start (/home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang+0xac7b55)
> clang-12: error: clang frontend command failed with exit code 139 (use -v to see invocation)
> clang version 12.0.1 (https://github.com/llvm/llvm-project.git fed41342a82f5a3a9201819a82bf7a48313e296b)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
> InstalledDir: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin
> clang-12: note: diagnostic msg:
> ********************
>
> PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
> Preprocessed source(s) and associated run script(s) are located at:
> clang-12: note: diagnostic msg: /tmp/conftest-968380.c
> clang-12: note: diagnostic msg: /tmp/conftest-968380.sh
> clang-12: note: diagnostic msg:
>
> ********************
> configure:8180: $? = 139
> configure: failed program was:
> | /* confdefs.h */
> | #define PACKAGE_NAME "LibreOffice"
> | #define PACKAGE_TARNAME "libreoffice"
> | #define PACKAGE_VERSION "24.8.0.0.alpha0+"
> | #define PACKAGE_STRING "LibreOffice 24.8.0.0.alpha0+"
> | #define PACKAGE_BUGREPORT ""
> | #define PACKAGE_URL "http://documentfoundation.org/"
> | #define LIBO_VERSION_MAJOR 24
> | #define LIBO_VERSION_MINOR 8
> | #define LIBO_VERSION_MICRO 0
> | #define LIBO_VERSION_PATCH 0
> | #define LIBO_THIS_YEAR 2024
> | #define SRCDIR "/home/sberg/lo0/core"
> | #define SRC_ROOT "/home/sberg/lo0/core"
> | #define BUILDDIR "/home/sberg/lo0/core"
> | #define USE_HEADLESS_CODE 1
> | #define ENABLE_HEADLESS 1
> | /* end confdefs.h.  */
> |
> | /* Does the compiler advertise C89 conformance?
> |    Do not test the value of __STDC__, because some compilers set it to 0
> |    while being otherwise adequately conformant. */
> | #if !defined __STDC__
> | # error "Compiler does not advertise C89 conformance"
> | #endif
> |
> | #include <stddef.h>
> | #include <stdarg.h>
> | struct stat;
> | /* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
> | struct buf { int x; };
> | struct buf * (*rcsopen) (struct buf *, struct stat *, int);
> | static char *e (p, i)
> |      char **p;
> |      int i;
> | {
> |   return p[i];
> | }
> | static char *f (char * (*g) (char **, int), char **p, ...)
> | {
> |   char *s;
> |   va_list v;
> |   va_start (v,p);
> |   s = g (p, va_arg (v,int));
> |   va_end (v);
> |   return s;
> | }
> |
> | /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
> |    function prototypes and stuff, but not \xHH hex character constants.
> |    These do not provoke an error unfortunately, instead are silently treated
> |    as an "x".  The following induces an error, until -std is added to get
> |    proper ANSI mode.  Curiously \x00 != x always comes out true, for an
> |    array size at least.  It is necessary to write \x00 == 0 to get something
> |    that is true only with -std.  */
> | int osf4_cc_array ['\x00' == 0 ? 1 : -1];
> |
> | /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
> |    inside strings and character constants.  */
> | #define FOO(x) 'x'
> | int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
> |
> | int test (int i, double x);
> | struct s1 {int (*f) (int a);};
> | struct s2 {int (*f) (double a);};
> | int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
> |                int, int);
> |
> | // Does the compiler advertise C99 conformance?
> | #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
> | # error "Compiler does not advertise C99 conformance"
> | #endif
> |
> | #include <stdbool.h>
> | extern int puts (const char *);
> | extern int printf (const char *, ...);
> | extern int dprintf (int, const char *, ...);
> | extern void *malloc (size_t);
> |
> | // Check varargs macros.  These examples are taken from C99 6.10.3.5.
> | // dprintf is used instead of fprintf to avoid needing to declare
> | // FILE and stderr.
> | #define debug(...) dprintf (2, __VA_ARGS__)
> | #define showlist(...) puts (#__VA_ARGS__)
> | #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
> | static void
> | test_varargs_macros (void)
> | {
> |   int x = 1234;
> |   int y = 5678;
> |   debug ("Flag");
> |   debug ("X = %d\n", x);
> |   showlist (The first, second, and third items.);
> |   report (x>y, "x is %d but y is %d", x, y);
> | }
> |
> | // Check long long types.
> | #define BIG64 18446744073709551615ull
> | #define BIG32 4294967295ul
> | #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
> | #if !BIG_OK
> |   #error "your preprocessor is broken"
> | #endif
> | #if BIG_OK
> | #else
> |   #error "your preprocessor is broken"
> | #endif
> | static long long int bignum = -9223372036854775807LL;
> | static unsigned long long int ubignum = BIG64;
> |
> | struct incomplete_array
> | {
> |   int datasize;
> |   double data[];
> | };
> |
> | struct named_init {
> |   int number;
> |   const wchar_t *name;
> |   double average;
> | };
> |
> | typedef const char *ccp;
> |
> | static inline int
> | test_restrict (ccp restrict text)
> | {
> |   // See if C++-style comments work.
> |   // Iterate through items via the restricted pointer.
> |   // Also check for declarations in for loops.
> |   for (unsigned int i = 0; *(text+i) != '\0'; ++i)
> |     continue;
> |   return 0;
> | }
> |
> | // Check varargs and va_copy.
> | static bool
> | test_varargs (const char *format, ...)
> | {
> |   va_list args;
> |   va_start (args, format);
> |   va_list args_copy;
> |   va_copy (args_copy, args);
> |
> |   const char *str = "";
> |   int number = 0;
> |   float fnumber = 0;
> |
> |   while (*format)
> |     {
> |       switch (*format++)
> | 	{
> | 	case 's': // string
> | 	  str = va_arg (args_copy, const char *);
> | 	  break;
> | 	case 'd': // int
> | 	  number = va_arg (args_copy, int);
> | 	  break;
> | 	case 'f': // float
> | 	  fnumber = va_arg (args_copy, double);
> | 	  break;
> | 	default:
> | 	  break;
> | 	}
> |     }
> |   va_end (args_copy);
> |   va_end (args);
> |
> |   return *str && number && fnumber;
> | }
> |
> |
> | // Does the compiler advertise C11 conformance?
> | #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
> | # error "Compiler does not advertise C11 conformance"
> | #endif
> |
> | // Check _Alignas.
> | char _Alignas (double) aligned_as_double;
> | char _Alignas (0) no_special_alignment;
> | extern char aligned_as_int;
> | char _Alignas (0) _Alignas (int) aligned_as_int;
> |
> | // Check _Alignof.
> | enum
> | {
> |   int_alignment = _Alignof (int),
> |   int_array_alignment = _Alignof (int[100]),
> |   char_alignment = _Alignof (char)
> | };
> | _Static_assert (0 < -_Alignof (int), "_Alignof is signed");
> |
> | // Check _Noreturn.
> | int _Noreturn does_not_return (void) { for (;;) continue; }
> |
> | // Check _Static_assert.
> | struct test_static_assert
> | {
> |   int x;
> |   _Static_assert (sizeof (int) <= sizeof (long int),
> |                   "_Static_assert does not work in struct");
> |   long int y;
> | };
> |
> | // Check UTF-8 literals.
> | #define u8 syntax error!
> | char const utf8_literal[] = u8"happens to be ASCII" "another string";
> |
> | // Check duplicate typedefs.
> | typedef long *long_ptr;
> | typedef long int *long_ptr;
> | typedef long_ptr long_ptr;
> |
> | // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
> | struct anonymous
> | {
> |   union {
> |     struct { int i; int j; };
> |     struct { int k; long int l; } w;
> |   };
> |   int m;
> | } v1;
> |
> |
> | int
> | main (int argc, char **argv)
> | {
> |   int ok = 0;
> |
> | ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
> |
> |
> |   // Check bool.
> |   _Bool success = false;
> |   success |= (argc != 0);
> |
> |   // Check restrict.
> |   if (test_restrict ("String literal") == 0)
> |     success = true;
> |   char *restrict newvar = "Another string";
> |
> |   // Check varargs.
> |   success &= test_varargs ("s, d' f .", "string", 65, 34.234);
> |   test_varargs_macros ();
> |
> |   // Check flexible array members.
> |   struct incomplete_array *ia =
> |     malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
> |   ia->datasize = 10;
> |   for (int i = 0; i < ia->datasize; ++i)
> |     ia->data[i] = i * 1.234;
> |
> |   // Check named initializers.
> |   struct named_init ni = {
> |     .number = 34,
> |     .name = L"Test wide string",
> |     .average = 543.34343,
> |   };
> |
> |   ni.number = 58;
> |
> |   int dynamic_array[ni.number];
> |   dynamic_array[0] = argv[0][0];
> |   dynamic_array[ni.number - 1] = 543;
> |
> |   // work around unused variable warnings
> |   ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
> | 	 || dynamic_array[ni.number - 1] != 543);
> |
> |
> |   _Static_assert ((offsetof (struct anonymous, i)
> | 		   == offsetof (struct anonymous, w.k)),
> | 		  "Anonymous union alignment botch");
> |   v1.i = 2;
> |   v1.w.k = 5;
> |   ok |= v1.i != 5;
> |
> |   return ok;
> | }
> |
> configure:8180: /home/builder/lode/opt_private/clang-llvmorg-12.0.1/bin/clang -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=local-bounds -fsanitize-blacklist=/home/sberg/lo0/core/sanitize-ubsan-excludelist -std=gnu11 -c -g -O2  conftest.c >&5
> configure:8180: $? = 0
> configure:8201: result: -std=gnu11

Change-Id: I9122d0d853d0010155d57cb1d1d56f7c453d5208
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165904
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
(cherry picked from commit 42f6e89)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175755
Tested-by: allotropia jenkins <jenkins@allotropia.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant