Skip to content

Conversation

@nvpp
Copy link

@nvpp nvpp commented May 6, 2015

Cannot apply color gradient to text in LO Impress. Also gradient applied to text in ppt is not viewable in LO

philipzae and others added 30 commits April 23, 2015 23:17
Change-Id: I84a2581429b1453a5e2ba896402dc6b687cad0c4
Reviewed-on: https://gerrit.libreoffice.org/15379
Tested-by: Jenkins <[email protected]>
Reviewed-by: Yousuf Philips <[email protected]>
(cherry picked from commit e192906)
Reviewed-on: https://gerrit.libreoffice.org/15407
Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
Tested-by: Adolfo Jayme Barrientos <[email protected]>
SwExtraRedlineTbl::DeleteAllTableRedlines() increments its position even
when deleting the current element from the vector.

Change-Id: Ie827a7b66fa9690bbabaf53204e9ec77247239f2
(cherry picked from commit 28764d7)
Reviewed-on: https://gerrit.libreoffice.org/15480
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Miklos Vajna <[email protected]>
Regression from commit 1f77a5e
(n#203704 fix RTF export table output for subtables, 2012-02-08), the
problem is that RtfAttributeOutput::StartTableRow() has two callers
depending on if it's the first or a later row, but the m_bTableRowEnded
flag storing if that method is called is only set in one case.

Fix the problem by moving the update of the flag to the method itself.

(cherry picked from commit 5e2708a)

Conflicts:
	sw/qa/extras/rtfexport/rtfexport.cxx

Change-Id: Ieae1fb53f9528fc74d037d2fd783b3979b17cab8
Reviewed-on: https://gerrit.libreoffice.org/15506
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Caolán McNamara <[email protected]>
because an unchecked checkbox can have a smaller paint area
than a checked checkbox. This has always bugged me

(cherry picked from commit d194074)

Conflicts:
	vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx

Change-Id: Iac0f075089611b47c381863a9655445d732bfddc
Reviewed-on: https://gerrit.libreoffice.org/15508
Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
Tested-by: Adolfo Jayme Barrientos <[email protected]>
SwPaM copy ctor has the surprising habit of linking the new one into the
old one's Ring.  If you copy a shell cursor, *this* epic fail happens:

==948== Thread 6 SelectionManager:
==948== Invalid free() / delete / delete[] / realloc()
==948==    at 0x4A07CE9: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==948==    by 0x222F542B: SwPaM::operator delete(void*, unsigned long) (in /libreoffice-4-3/instdir/program/libswlo.so)
==948==    by 0x2239E20E: SwPaM::~SwPaM() (pam.cxx:422)
==948==    by 0x22368630: CheckRange(SwCursor*) (crsrsh.cxx:111)
==948==    by 0x2236DECC: SwCrsrShell::UpdateCrsr(unsigned short, bool) (crsrsh.cxx:1397)
==948==    by 0x22369113: SwCrsrShell::EndAction(bool) (crsrsh.cxx:290)
==948==    by 0x2268971F: SwEditShell::EndAllAction() (edws.cxx:87)
==948==    by 0x2262BEF3: SwBaseLink::DataChanged(rtl::OUString const&, com::sun::star::uno::Any const&) (swbaslnk.cxx:274)
==948==    by 0x2262C78E: SwBaseLink::SwapIn(bool, bool) (swbaslnk.cxx:411)
==948==    by 0x227102EC: SwGrfNode::SwapIn(bool) (ndgrf.cxx:539)
==948==    by 0x227121BC: SwGrfNode::MakeCopy(SwDoc*, SwNodeIndex const&) const (ndgrf.cxx:999)
==948==    by 0x22610E4D: SwNodes::_CopyNodes(SwNodeRange const&, SwNodeIndex const&, bool, bool) const (nodes.cxx:1862)
==948==    by 0x225B98E0: SwDoc::CopyWithFlyInFly(SwNodeRange const&, int, SwNodeIndex const&, SwPaM const*, bool, bool, bool) const (ndcopy.cxx:1336)
==948==    by 0x224AC1FF: SwDoc::CopyLayoutFmt(SwFrmFmt const&, SwFmtAnchor const&, bool, bool) (doclay.cxx:446)
==948==    by 0x2294D2D4: SwTxtFlyCnt::CopyFlyFmt(SwDoc*) (atrflyin.cxx:130)
==948==    by 0x229A5B96: MakeTxtAttr(SwDoc&, SfxPoolItem&, int, int, CopyOrNew_t, SwTxtNode*) (thints.cxx:1060)
==948==    by 0x229A64E6: SwTxtNode::InsertItem(SfxPoolItem&, int, int, unsigned short) (thints.cxx:1224)
==948==    by 0x2298E536: SwTxtNode::CopyText(SwTxtNode*, SwIndex const&, SwIndex const&, int, bool) (ndtxt.cxx:1773)
==948==    by 0x2298DC08: SwTxtNode::CopyText(SwTxtNode*, SwIndex const&, int, bool) (ndtxt.cxx:1555)
==948==    by 0x225B4C9D: SwTxtNode::MakeCopy(SwDoc*, SwNodeIndex const&) const (ndcopy.cxx:286)
==948==    by 0x22610E4D: SwNodes::_CopyNodes(SwNodeRange const&, SwNodeIndex const&, bool, bool) const (nodes.cxx:1862)
==948==    by 0x223EF3C2: SwNodes::_Copy(SwNodeRange const&, SwNodeIndex const&, bool) const (ndarr.hxx:182)
==948==    by 0x225B5D8D: SwTableNode::MakeCopy(SwDoc*, SwNodeIndex const&) const (ndcopy.cxx:475)
==948==    by 0x22610ACA: SwNodes::_CopyNodes(SwNodeRange const&, SwNodeIndex const&, bool, bool) const (nodes.cxx:1790)
==948==    by 0x223EF3C2: SwNodes::_Copy(SwNodeRange const&, SwNodeIndex const&, bool) const (ndarr.hxx:182)
==948==    by 0x225CA663: SwSectionNode::MakeCopy(SwDoc*, SwNodeIndex const&) const (ndsect.cxx:1270)
==948==    by 0x22610BFC: SwNodes::_CopyNodes(SwNodeRange const&, SwNodeIndex const&, bool, bool) const (nodes.cxx:1817)
==948==    by 0x223EF3C2: SwNodes::_Copy(SwNodeRange const&, SwNodeIndex const&, bool) const (ndarr.hxx:182)
==948==    by 0x225CA663: SwSectionNode::MakeCopy(SwDoc*, SwNodeIndex const&) const (ndsect.cxx:1270)
==948==    by 0x22610BFC: SwNodes::_CopyNodes(SwNodeRange const&, SwNodeIndex const&, bool, bool) const (nodes.cxx:1817)
==948==    by 0x223EF3C2: SwNodes::_Copy(SwNodeRange const&, SwNodeIndex const&, bool) const (ndarr.hxx:182)
==948==    by 0x225CA663: SwSectionNode::MakeCopy(SwDoc*, SwNodeIndex const&) const (ndsect.cxx:1270)
==948==    by 0x22610BFC: SwNodes::_CopyNodes(SwNodeRange const&, SwNodeIndex const&, bool, bool) const (nodes.cxx:1817)
==948==    by 0x225B98E0: SwDoc::CopyWithFlyInFly(SwNodeRange const&, int, SwNodeIndex const&, SwPaM const*, bool, bool, bool) const (ndcopy.cxx:1336)
==948==    by 0x225B8F15: SwDoc::CopyImpl(SwPaM&, SwPosition&, bool, bool, SwPaM*) const (ndcopy.cxx:1239)
==948==    by 0x225B6EE0: SwDoc::CopyRange(SwPaM&, SwPosition&, bool) const (ndcopy.cxx:707)
==948==    by 0x22667E69: SwEditShell::_CopySelToDoc(SwDoc*, SwNodeIndex*) (edglss.cxx:244)
==948==    by 0x226C8400: SwFEShell::Copy(SwDoc*, rtl::OUString const*) (fecopy.cxx:214)
==948==    by 0x22DBF72B: (anonymous namespace)::lclOverWriteDoc(SwWrtShell&, SwDoc&) (swdtflvr.cxx:373)
==948==    by 0x22DBFBC6: SwTransferable::GetData(com::sun::star::datatransfer::DataFlavor const&, rtl::OUString const&) (swdtflvr.cxx:439)
==948==    by 0x7CB36C7: TransferableHelper::getTransferData2(com::sun::star::datatransfer::DataFlavor const&, rtl::OUString const&) (transfer.cxx:332)
==948==    by 0x7CB34B5: TransferableHelper::getTransferData(com::sun::star::datatransfer::DataFlavor const&) (transfer.cxx:306)
==948==    by 0x17A7E949: x11::SelectionManager::convertData(com::sun::star::uno::Reference<com::sun::star::datatransfer::XTransferable> const&, unsigned long, unsigned long, int&, com::sun::star::uno::Sequence<signed char>&) (X11_selection.cxx:655)
==948==    by 0x17A823CA: x11::SelectionManager::sendData(x11::SelectionAdaptor*, unsigned long, unsigned long, unsigned long, unsigned long) (X11_selection.cxx:1503)
==948==    by 0x17A82E03: x11::SelectionManager::handleSelectionRequest(XSelectionRequestEvent&) (X11_selection.cxx:1729)
==948==    by 0x17A8A08A: x11::SelectionManager::handleXEvent(_XEvent&) (X11_selection.cxx:3574)
==948==  Address 0x21e31a60 is on thread 6's stack
==948==  in frame #40, created by SwEditShell::_CopySelToDoc(SwDoc*, SwNodeIndex*) (edglss.cxx:158)

(regression from 4950533)

(cherry picked from commit c55599f)

Conflicts:
	sw/source/core/edit/edglss.cxx

Change-Id: I3d0a288a83b4719dda7977b4898dea656ea67388
Reviewed-on: https://gerrit.libreoffice.org/15533
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Miklos Vajna <[email protected]>
It happens that SwAccessibleParagraph::getCharacterBounds() is called
from ATK with a clearly invalid pPortionData member; the SwTxtNode has
no text but there are portions.

This is because after a deletion both a POS_CHANGED and a
INVALID_CONTENT event are created for the same SwAccessibleParagraph,
and they are merged into one POS_CHANGED event by
SwAccessibleMap::AppendEvent(), but
SwAccessibleContext::InvalidatePosOrSize() returns early if the
paragraph happens to not be visible, skipping the invalidation.

(regression from 76c549e, which
 removed a Dispose() call; not sure if the Dispose() is needed here)

Change-Id: I985e9a439ee6c7024963eace876186f2247b9e03
(cherry picked from commit 104ed86)
Reviewed-on: https://gerrit.libreoffice.org/15534
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Miklos Vajna <[email protected]>
Change-Id: I62ff8a172a9c4f361ef5fcb6d60bd9fd2e959c2d
(cherry picked from commit b8cf9b3)
Change-Id: I94271681ea4ec7617eaf706fb443ebb9d1b0bc15
(cherry picked from commit cb3518f)
(cherry picked from commit b8ca219)
Conflicts:
	sd/qa/unit/import-tests.cxx

Change-Id: Ie3dda6d7ea24031eadf86801867a94f95c11310e
Change-Id: Ia20fea0a7c265aedb11e0018c321395ee874fd1e
Reviewed-on: https://gerrit.libreoffice.org/15507
Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
Tested-by: Adolfo Jayme Barrientos <[email protected]>
Change-Id: I1a5276600cf0dd00d02f6278c49dd16f51131130
Reviewed-on: https://gerrit.libreoffice.org/15496
Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
Tested-by: Adolfo Jayme Barrientos <[email protected]>
also handle the SQLNULL case

Conflicts:
	connectivity/source/commontools/FValue.cxx

Change-Id: Ie7fffd6b46ed8b3dfa7231928f55743f71d2ea98
Reviewed-on: https://gerrit.libreoffice.org/15530
Reviewed-by: Michael Stahl <[email protected]>
Tested-by: Michael Stahl <[email protected]>
Change-Id: Ifb3431a50f92b95dfc1e851f9584533271e69324
Reviewed-on: https://gerrit.libreoffice.org/15519
Reviewed-by: Michael Stahl <[email protected]>
Tested-by: Michael Stahl <[email protected]>
Change-Id: Ic66d1904a5e677472539ceb552a53d6700e545e1
Reviewed-on: https://gerrit.libreoffice.org/15522
Tested-by: Jenkins <[email protected]>
Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
(cherry picked from commit aa0d8cc)
Reviewed-on: https://gerrit.libreoffice.org/15524
Tested-by: David Tardon <[email protected]>
Reviewed-by: David Tardon <[email protected]>
This was crashing on selected versions for Windows.

Change-Id: I7e9dd39db06f6ed93d2ae0d49275387e53983a89
Reviewed-on: https://gerrit.libreoffice.org/15559
Reviewed-by: Thorsten Behrens <[email protected]>
Tested-by: Thorsten Behrens <[email protected]>
(cherry picked from commit 84c73c9)
Reviewed-on: https://gerrit.libreoffice.org/15560
Reviewed-by: Katarina Behrens <[email protected]>
Tested-by: Katarina Behrens <[email protected]>
Change-Id: Icd2f5cc0b07dc996cab2ad7cf8695e14c9438122
Instead of using a hardcoded stroking value, adopt the formula used by
AOO which seems to give better results.

Change-Id: I87d55e1fadccf4521c26cd60458d968fcd8a2386
Reviewed-on: https://gerrit.libreoffice.org/15563
Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
Tested-by: Adolfo Jayme Barrientos <[email protected]>
(cherry picked from commit ae08fce)

unotest: unobootstrapprotector needs runtime dependency on unorc

Change-Id: Ie6ed784bb9676b9de8a51762aa58d0c75e071cfd
(cherry picked from commit 7289ee9)
Reviewed-on: https://gerrit.libreoffice.org/15558
Tested-by: David Tardon <[email protected]>
Reviewed-by: David Tardon <[email protected]>
This convoluted logic may pass FUNC_NOTFOUND -1 as position around if
there was no initial function.

Change-Id: I217fc745d8e0b8e532642d0f69110371d183610d
(cherry picked from commit d6635af)
Reviewed-on: https://gerrit.libreoffice.org/15570
Tested-by: Markus Mohrhard <[email protected]>
Reviewed-by: Markus Mohrhard <[email protected]>
... by adding a XCloseListener that vetoes any attempt to close it.

The Calc document can be opened by the user in the UI and closed again.

(cherry picked from commit 7368b6c)

Conflicts:
	unotools/source/misc/closeveto.cxx

Change-Id: Ied427b67274d925c911e516c0a50a4c0b2b18db9
Reviewed-on: https://gerrit.libreoffice.org/15567
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Caolán McNamara <[email protected]>
For example, 'C' was displayed as "C_"
Also, append Variant if present to display the full locale identifier,
for example "en_US.UTF-8"

Change-Id: I00c7bf832df25c00cc014589c4662806f8bf1137
(cherry picked from commit f318e30)
Reviewed-on: https://gerrit.libreoffice.org/15557
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Caolán McNamara <[email protected]>
Add extra check to keep images proportionally scaling by default
from affecting interactive crop preview rectangle.

Change-Id: I2b15bbc8628934e3d3cf17927885ede890505cd3
Reviewed-on: https://gerrit.libreoffice.org/15505
Tested-by: Jenkins <[email protected]>
Reviewed-by: Yousuf Philips <[email protected]>
(cherry picked from commit 18a592a)
Reviewed-on: https://gerrit.libreoffice.org/15521
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Caolán McNamara <[email protected]>
These were added by commit cfc4650
(Added some teaks to 'model.xml', 2014-09-16), but the matching dmapper
part is missing, so they aren't useful in practice, and cause a crash on
import of crashtest's File_953.docx.

Change-Id: I3d1c138534a37dc9ba500f1134ca4bb9ebae0e96
(cherry picked from commit 57d254d)
Reviewed-on: https://gerrit.libreoffice.org/15574
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Caolán McNamara <[email protected]>
… r/o

b9ecec7 "Allow for editing of read-only
documents" introduced

 "A new state of 'IsOriginallyReadOnly' needed to be added to the medium, to
  keep track whether the medium was originally opened r/o (and is thus assumed
  to be physically r/o), as toggling SID_EDITDOC in the view also changes the
  open mode of the underlying medium.  Instead of trying to fully understand and
  disentangle that horrible mess, I just added yet another state to the mess..."

But that heuristic is apparently too simplistic, as it treats documents
originally opened "logically r/o" (via --view command line argument, or by
checking the corresponding checkbox in the Open dialog) as "physically r/o" too,
which leads to unexpected behavior when such documents are later switched into
r/w Edit mode.

An approach that hopefully works better overall is to set IsOriginallyReadOnly
only if the document originally is r/o as reported by OSL (for a document with a
file URL).

Change-Id: I32d5ec655d7556a70680aee55feda4c6eea7795f
(cherry picked from commit a199cad)
Reviewed-on: https://gerrit.libreoffice.org/15549
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Caolán McNamara <[email protected]>
with ooo69297-4.odt

(cherry picked from commit 870a7ee)

Conflicts:
	sw/qa/extras/ooxmlexport/ooxmlexport5.cxx

Change-Id: I193099d7fffc160f0198e3d42d5d6fd5835c79cf
Reviewed-on: https://gerrit.libreoffice.org/15572
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Miklos Vajna <[email protected]>
Change-Id: I68be0901ab0ee37caaa9338b6c499d0086c2c968
(cherry picked from commit 3a6866c)
Reviewed-on: https://gerrit.libreoffice.org/15573
Reviewed-by: Michael Stahl <[email protected]>
Tested-by: Michael Stahl <[email protected]>
Change-Id: I8dbfdf4bb2eceac0b5afbddd3f35e1dcde2db68b
Reviewed-on: https://gerrit.libreoffice.org/14611
Reviewed-by: Eike Rathke <[email protected]>
Tested-by: Eike Rathke <[email protected]>
(cherry picked from commit 0f79a5f)
Reviewed-on: https://gerrit.libreoffice.org/15576
Change-Id: I32368329edfff18ea2a73de9a4cf60b2f734a54d
(cherry picked from commit 415c62d)
Reviewed-on: https://gerrit.libreoffice.org/15580
Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
Tested-by: Adolfo Jayme Barrientos <[email protected]>
Change-Id: I10105770a119db8a21a3d09642f99b556440a57d
(cherry picked from commit 0ecf20c)
Reviewed-on: https://gerrit.libreoffice.org/15583
Tested-by: David Tardon <[email protected]>
Reviewed-by: David Tardon <[email protected]>
Project: translations  3739ccfcfba54d723a2ae5142f5f36fd8edbc707

tdf#90929 fix Thai translation of 'Tabloid' page format

Change-Id: Ide6454a40a881fba66bbfe416f704335a89db4a8
tdf-gerrit pushed a commit that referenced this pull request Aug 20, 2025
 #0  0x00007b8ff1659933 in std::__uniq_ptr_impl<SwActualSection, std::default_delete<SwActualSection> >::reset (
     __p=<error reading variable: Cannot access memory at address 0x0>, this=0x7fff18bf8ff8)
     at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:201
 #1  std::unique_ptr<SwActualSection, std::default_delete<SwActualSection> >::reset (
     __p=<error reading variable: Cannot access memory at address 0x0>, this=0x7fff18bf8ff8)
     at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/unique_ptr.h:501
 #2  InsertCnt_ (pLay=<optimized out>, pLay@entry=0x5fad9100, pDoc=pDoc@entry=0x5e955800, nIndex=..., bPages=bPages@entry=false,
     nEndIndex=..., nEndIndex@entry=..., pPrv=<optimized out>, eMode=<optimized out>)
     at sw/source/core/layout/frmtool.cxx:1915
 #3  0x00007b8ff165ac01 in MakeFrames (pDoc=pDoc@entry=0x5e955800, rSttIdx=..., rEndIdx=...)
     at sw/source/core/layout/frmtool.cxx:2211
 #4  0x00007b8ff1862f31 in SwUndoDelete::UndoImpl (this=<optimized out>, rContext=...)
     at sw/source/core/undo/undel.cxx:1184
 #5  0x00007b8ff18645aa in SwUndo::UndoWithContext (this=0x62c9c1e0, rContext=...)
     at sw/source/core/undo/undobj.cxx:225
 #6  0x00007b8ffecc6f91 in SfxUndoManager::ImplUndo (this=0x5ea06758, i_contextOrNull=0x7fff18bf9580)
     at svl/source/undo/undo.cxx:732
 #7  0x00007b8ffecc7489 in SfxUndoManager::UndoWithContext (this=<optimized out>, i_context=...)
     at svl/source/undo/undo.cxx:682
 #8  0x00007b8ff184ddd8 in sw::UndoManager::impl_DoUndoRedo (this=0x5ea06750, undoOrRedo=sw::UndoManager::UndoOrRedoType::Undo,
     nUndoOffset=<optimized out>) at sw/source/core/undo/docundo.cxx:700
 #9  0x00007b8ff1591a3b in SwEditShell::Undo (this=this@entry=0x5eaf4900, nCount=nCount@entry=40, nOffset=nOffset@entry=0)
     at sw/source/core/edit/edundo.cxx:143
 #10 0x00007b8ff1f58262 in SwWrtShell::Do (this=this@entry=0x5eaf4900, eDoType=eDoType@entry=SwWrtShell::UNDO,
     nCnt=nCnt@entry=40, nOffset=<optimized out>) at sw/source/uibase/wrtsh/wrtundo.cxx:45
 #11 0x00007b8ff1d4934a in SwBaseShell::ExecUndo (this=<optimized out>, rReq=...)
     at sw/source/uibase/shells/basesh.cxx:669
 #12 0x00007b8ffe7fb3ef in SfxDispatcher::Call_Impl (this=0x5e9cb020, rShell=..., rSlot=..., rReq=..., bRecord=<optimized out>)
    at sfx2/source/control/dispatch.cxx:255
 #13 0x00007b8ffe802af7 in SfxDispatcher::Execute (this=0x5e9cb020, nSlot=<optimized out>,
     nCall=nCall@entry=SfxCallMode::SYNCHRON, pArgs=pArgs@entry=0x7fff18bf9ca0, pInternalArgs=pInternalArgs@entry=0x7fff18bf9c30,
     nModi=0) at sfx2/source/control/dispatch.cxx:813

Change-Id: I3e3bd43f853521163581a7e2d575c1ebe7dc2bfb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189352
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <[email protected]>
(cherry picked from commit 4d48d43)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189406
Reviewed-by: Xisco Fauli <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Aug 20, 2025
As the GVariant format string doc says [1] about
pointers:

> The `&` character is used to indicate that serialised data should be
> directly exchanged via a pointer.
>
> Currently, the only use for this character is when it is applied to a
> string (ie: `&s`, `&o` or `&g`). For `g_variant_new()` this has absolutely no
> effect. The string is collected and duplicated normally. For
> `g_variant_get()` it means that instead of creating a newly allocated copy
> of the string, a pointer to the serialised data is returned. This
> pointer should not be freed. Validity checks are performed to ensure
> that the string data will always be properly nul-terminated.

Therefore, freeing the string with

    g_free(pLabel);

is incorrect and resulted in a crash when starting Writer with
the gtk4 VCL plugin, s. backtrace below.

Use just "s" instead of "&s" for the format string to get a
string copy that is owned and can be freed.

(Dropping the `g_free` might be an alternative and avoid
a string copy, but it's not instantly clear to me whether
using "a pointer to the serialised data" is safe without
digging any deeper what exactly that means.)

Backtrace:

    free(): invalid pointer
    [New Thread 125500.125502]
    [New Thread 125500.125503]
    [New Thread 125500.125504]
    [New Thread 125500.125505]
    [New Thread 125500.125506]
    [New Thread 125500.125507]
    [New Thread 125500.125508]
    [New Thread 125500.125510]
    [New Thread 125500.125511]
    [New Thread 125500.125525]

    Thread 1 received signal SIGABRT, Aborted.
    __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    warning: 44     ./nptl/pthread_kill.c: No such file or directory
    (rr) bt
    #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    #1  0x00007f0bb969de2f in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:78
    #2  0x00007f0bb9649d02 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
    #3  0x00007f0bb96324f0 in __GI_abort () at ./stdlib/abort.c:79
    #4  0x00007f0bb963332d in __libc_message_impl (fmt=fmt@entry=0x7f0bb97b5303 "%s\n") at ../sysdeps/posix/libc_fatal.c:134
    #5  0x00007f0bb96a7965 in malloc_printerr (str=str@entry=0x7f0bb97b3082 "free(): invalid pointer") at ./malloc/malloc.c:5772
    #6  0x00007f0bb96a9bf4 in _int_free (av=0x7f0bb97f1ac0 <main_arena>, p=<optimized out>, have_lock=have_lock@entry=0) at ./malloc/malloc.c:4507
    #7  0x00007f0bb96ac43f in __GI___libc_free (mem=<optimized out>) at ./malloc/malloc.c:3398
    #8  0x00007f0ba62b908a in (anonymous namespace)::MenuHelper::get_item_label (this=0x55b0c8dcd360, rIdent="standard") at vcl/unx/gtk4/../gtk3/gtkinst.cxx:5684
    #9  0x00007f0ba63013d8 in (anonymous namespace)::GtkInstanceMenu::get_label (this=0x55b0c8dcd360, rIdent="standard") at vcl/unx/gtk4/../gtk3/gtkinst.cxx:11694
    #10 0x00007f0ba6301b2f in virtual thunk to (anonymous namespace)::GtkInstanceMenu::get_label(rtl::OUString const&) const () at vcl/unx/gtk4/../gtk3/gtkinst.cxx:11823
    #11 0x00007f0bb482d026 in (anonymous namespace)::SelectionTypePopup::GetItemTextForState (this=0x7ffed304ad80, nState=0) at /home/michi/development/git/libreoffice/svx/source/stbctrls/selctrl.cxx:56
    #12 0x00007f0bb482cc59 in SvxSelectionModeControl::StateChangedAtStatusBarControl (this=0x55b0c8d2d6e0, eState=SfxItemState::DEFAULT, pState=0x55b0c8f331c0) at /home/michi/development/git/libreoffice/svx/source/stbctrls/selctrl.cxx:128
    #13 0x00007f0bb5f9af1e in SfxStatusBarControl::statusChanged (this=0x55b0c8d2d6e0, rEvent=...) at /home/michi/development/git/libreoffice/sfx2/source/statbar/stbitem.cxx:263
    #14 0x00007f0bb5a9d4c8 in SfxDispatchController_Impl::addStatusListener (this=0x55b0c8ed6380, aListener=uno::Reference to (SvxSelectionModeControl *) 0x55b0c8d2d6f0, aURL=...)
        at /home/michi/development/git/libreoffice/sfx2/source/control/unoctitm.cxx:841
    #15 0x00007f0bb5a9d174 in SfxOfficeDispatch::addStatusListener (this=0x55b0c8f280e0, aListener=uno::Reference to (SvxSelectionModeControl *) 0x55b0c8d2d6f0, aURL=...)
        at /home/michi/development/git/libreoffice/sfx2/source/control/unoctitm.cxx:283
    #16 0x00007f0bb28a8577 in svt::StatusbarController::bindListener (this=0x55b0c8d2d6e0) at /home/michi/development/git/libreoffice/svtools/source/uno/statusbarcontroller.cxx:462
    #17 0x00007f0bb28a7f09 in svt::StatusbarController::update (this=0x55b0c8d2d6e0) at /home/michi/development/git/libreoffice/svtools/source/uno/statusbarcontroller.cxx:169
    #18 0x00007f0bb6d41a6b in framework::(anonymous namespace)::lcl_UpdateController<std::__debug::map<unsigned short, com::sun::star::uno::Reference<com::sun::star::frame::XStatusbarController>, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, com::sun::star::uno::Reference<com::sun::star::frame::XStatusbarController> > > > >::operator() (this=0x7ffed304b547, rElement={...})
        at /home/michi/development/git/libreoffice/framework/source/uielement/statusbarmanager.cxx:69
    #19 0x00007f0bb6d3e5ef in std::for_each<__gnu_debug::_Safe_iterator<std::_Rb_tree_iterator<std::pair<unsigned short const, com::sun::star::uno::Reference<com::sun::star::frame::XStatusbarController> > >, std::__debug::map<unsigned short, com::sun::star::uno::Reference<com::sun::star::frame::XStatusbarController>, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, com::sun::star::uno::Reference<com::sun::star::frame::XStatusbarController> > > >, std::bidirectional_iterator_tag>, framework::(anonymous namespace)::lcl_UpdateController<std::__debug::map<unsigned short, com::sun::star::uno::Reference<com::sun::star::frame::XStatusbarController>, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, com::sun::star::uno::Reference<com::sun::star::frame::XStatusbarController> > > > > > (__first={...}, __last={...}, __f=...)
        at /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/stl_algo.h:3786
    #20 0x00007f0bb6d3d9a5 in framework::StatusBarManager::UpdateControllers (this=0x55b0c8cefc90) at /home/michi/development/git/libreoffice/framework/source/uielement/statusbarmanager.cxx:269
    #21 0x00007f0bb6d4028b in framework::StatusBarManager::FillStatusBar (this=0x55b0c8cefc90, rItemContainer=uno::Reference to (framework::ConstItemContainer *) 0x55b0c8e017e8)
        at /home/michi/development/git/libreoffice/framework/source/uielement/statusbarmanager.cxx:479
    #22 0x00007f0bb6d4ae38 in framework::StatusBarWrapper::initialize (this=0x55b0c8d0f060, aArguments=uno::Sequence of length 4 = {...}) at /home/michi/development/git/libreoffice/framework/source/uielement/statusbarwrapper.cxx:117
    #23 0x00007f0bb6df9104 in framework::MenuBarFactory::CreateUIElement
        (ResourceURL="private:resource/statusbar/statusbar", Args=uno::Sequence of length 2 = {...}, ResourceType=u"private:resource/statusbar/", _xMenuBar=uno::Reference to (framework::StatusBarWrapper *) 0x55b0c8d0f0f8, _rxContext=uno::Reference to (cppu::(anonymous namespace)::ComponentContext *) 0x55b0ba8b8308) at /home/michi/development/git/libreoffice/framework/source/uifactory/menubarfactory.cxx:158
    #24 0x00007f0bb6df9c0a in (anonymous namespace)::StatusBarFactory::createUIElement (this=0x55b0c8e03800, ResourceURL="private:resource/statusbar/statusbar", Args=uno::Sequence of length 2 = {...})
        at /home/michi/development/git/libreoffice/framework/source/uifactory/statusbarfactory.cxx:68
    #25 0x00007f0bb6df9d74 in non-virtual thunk to (anonymous namespace)::StatusBarFactory::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
        at /home/michi/development/git/libreoffice/instdir/program/libfwklo.so
    #26 0x00007f0bb6e01290 in (anonymous namespace)::UIElementFactoryManager::createUIElement (this=0x55b0bf803260, ResourceURL="private:resource/statusbar/statusbar", Args=uno::Sequence of length 2 = {...})
        at /home/michi/development/git/libreoffice/framework/source/uifactory/uielementfactorymanager.cxx:440
    #27 0x00007f0bb6e024f4 in non-virtual thunk to (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
        at /home/michi/development/git/libreoffice/instdir/program/libfwklo.so
    #28 0x00007f0bb6b6d427 in framework::LayoutManager::implts_createElement (this=0x55b0c1e3a170, aName="private:resource/statusbar/statusbar")
        at /home/michi/development/git/libreoffice/framework/source/layoutmanager/layoutmanager.cxx:730
    #29 0x00007f0bb6b71852 in framework::LayoutManager::implts_createStatusBar (this=0x55b0c1e3a170, aStatusBarName="private:resource/statusbar/statusbar")
        at /home/michi/development/git/libreoffice/framework/source/layoutmanager/layoutmanager.cxx:849
    #30 0x00007f0bb6b75bcc in framework::LayoutManager::createElement (this=0x55b0c1e3a170, aName="private:resource/statusbar/statusbar") at /home/michi/development/git/libreoffice/framework/source/layoutmanager/layoutmanager.cxx:1443
    #31 0x00007f0bb6b76b57 in framework::LayoutManager::requestElement (this=0x55b0c1e3a170, rResourceURL="private:resource/statusbar/statusbar")
        at /home/michi/development/git/libreoffice/framework/source/layoutmanager/layoutmanager.cxx:1570
    #32 0x00007f0bb595f0b5 in SfxWorkWindow::UpdateStatusBar_Impl (this=0x55b0bf82f570) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1471
    #33 0x00007f0bb595e9a0 in SfxWorkWindow::UpdateObjectBars_Impl2 (this=0x55b0bf82f570) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1242
    #34 0x00007f0bb595e001 in SfxWorkWindow::UpdateObjectBars_Impl (this=0x55b0bf82f570) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1095
    #35 0x00007f0bb59ca573 in SfxDispatcher::Update_Impl (this=0x55b0c742b5b0, bForce=false) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:1123
    #36 0x00007f0bb6003921 in SfxBaseController::ConnectSfxFrame_Impl (this=0x55b0c7469930, i_eConnect=SfxBaseController::E_CONNECT) at /home/michi/development/git/libreoffice/sfx2/source/view/sfxbasecontroller.cxx:1207
    #37 0x00007f0bb6002ade in SfxBaseController::attachFrame (this=0x55b0c7469930, xFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x55b0bfb36e40)
        at /home/michi/development/git/libreoffice/sfx2/source/view/sfxbasecontroller.cxx:531
    #38 0x00007f0bb5fd38b9 in utl::ConnectFrameControllerModel
        (xFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x55b0bfb36e40, xController=uno::Reference to (SwXTextView *) 0x55b0c7469958, xModel=uno::Reference to (SwXTextDocument *) 0x55b0c71c0670)
        at include/unotools/fcm.hxx:57
    #39 0x00007f0bb5fcfec1 in (anonymous namespace)::SfxFrameLoader_Impl::impl_createDocumentView
        (i_rModel=uno::Reference to (SwXTextDocument *) 0x55b0c71c0670, i_rFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x55b0bfb36e40, i_rViewFactoryArgs=..., i_rViewName="Default")
        at /home/michi/development/git/libreoffice/sfx2/source/view/frmload.cxx:585
    #40 0x00007f0bb5fcd45c in (anonymous namespace)::SfxFrameLoader_Impl::load (this=0x55b0c22dc9f0, rArgs=uno::Sequence of length 9 = {...}, _rTargetFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x55b0bfb36e40)
        at /home/michi/development/git/libreoffice/sfx2/source/view/frmload.cxx:764
    #41 0x00007f0bb6bc2644 in framework::LoadEnv::impl_loadContent (this=0x55b0c1271ec8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:1180
    #42 0x00007f0bb6bbf7a5 in framework::LoadEnv::start (this=0x55b0c1271ec8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:415
    #43 0x00007f0bb6bbd452 in framework::LoadEnv::startLoading
        (this=0x55b0c1271ec8, sURL="private:factory/swriter", lMediaDescriptor=uno::Sequence of length 4 = {...}, xBaseFrame=uno::Reference to (framework::Desktop *) 0x55b0bbbee8c8, sTarget="_default", nSearchFlags=0, eFeature=(LoadEnvFeatu--Type <RET> for more, q to quit, c to continue without paging--
    res::WorkWithUI | LoadEnvFeatures::AllowContentHandler)) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:311
    #44 0x00007f0bb6a56311 in framework::LoadDispatcher::impl_dispatch (this=0x55b0c1271e70, rURL=..., lArguments=uno::Sequence of length 4 = {...}, xListener=empty uno::Reference)
        at /home/michi/development/git/libreoffice/framework/source/dispatch/loaddispatcher.cxx:107
    #45 0x00007f0bb6a57071 in framework::LoadDispatcher::dispatchWithReturnValue (this=0x55b0c1271e70, rURL=..., lArguments=uno::Sequence of length 4 = {...})
        at /home/michi/development/git/libreoffice/framework/source/dispatch/loaddispatcher.cxx:60
    #46 0x00007f0bb6a57114 in non-virtual thunk to framework::LoadDispatcher::dispatchWithReturnValue(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
        at /home/michi/development/git/libreoffice/framework/source/dispatch/loaddispatcher.cxx:60
    #47 0x00007f0bb80110b0 in comphelper::SynchronousDispatch::dispatch (xStartPoint=uno::Reference to (framework::Desktop *) 0x55b0bbbee8b8, sURL="private:factory/swriter", sTarget="_default", lArguments=uno::Sequence of length 4 = {...})
        at /home/michi/development/git/libreoffice/comphelper/source/misc/synchronousdispatch.cxx:62
    #48 0x00007f0bb99757fd in desktop::DispatchWatcher::executeDispatchRequests (this=0x55b0c16043b0, aDispatchRequestsList=std::__debug::vector of length 1, capacity 1 = {...}, bNoTerminate=false)
        at /home/michi/development/git/libreoffice/desktop/source/app/dispatchwatcher.cxx:529
    #49 0x00007f0bb9993b5a in desktop::RequestHandler::ExecuteCmdLineRequests (aRequest=..., noTerminate=false) at /home/michi/development/git/libreoffice/desktop/source/app/officeipcthread.cxx:1347
    #50 0x00007f0bb992f196 in desktop::Desktop::OpenDefault () at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:2276
    #51 0x00007f0bb992e5cd in desktop::Desktop::OpenClients () at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:2220
    #52 0x00007f0bb992c3a3 in desktop::Desktop::OpenClients_Impl (this=0x7ffed3055280) at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:1979
    #53 0x00007f0bb992aa3d in desktop::Desktop::LinkStubOpenClients_Impl (instance=0x7ffed3055280, data=0x0) at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:1963
    #54 0x00007f0bb02ac091 in Link<void*, void>::Call (this=0x55b0bffb6ba8, data=0x0) at include/tools/link.hxx:105
    #55 0x00007f0bb02a8291 in ImplHandleUserEvent (pSVEvent=0x55b0bffb6ba0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2285
    #56 0x00007f0bb02a51ba in ImplWindowFrameProc (_pWindow=0x55b0bfc9e9b0, nEvent=SalEvent::UserEvent, pEvent=0x55b0bffb6ba0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2849
    #57 0x00007f0bb0e665bc in SalFrame::CallCallback (this=0x55b0bf7eaa50, nEvent=SalEvent::UserEvent, pEvent=0x55b0bffb6ba0) at vcl/inc/salframe.hxx:311
    #58 0x00007f0bb0e8ef5f in SalGenericDisplay::ProcessEvent (this=0x55b0baa61510, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #59 0x00007f0bb09aaddd in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7ffed3053530) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #60 0x00007f0bb09aacb6 in SalUserEventList::DispatchUserEvents (this=0x55b0baa61510, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #61 0x00007f0bb0e8eeb5 in SalGenericDisplay::DispatchInternalEvent (this=0x55b0baa61510, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #62 0x00007f0ba628536f in call_userEventFn (data=0x55b0ba8d13e0) at vcl/unx/gtk4/../gtk3/gtkdata.cxx:827
    #63 0x00007f0babd03d5f in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #64 0x00007f0babd05fd7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #65 0x00007f0babd06740 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #66 0x00007f0ba62840ac in GtkSalData::Yield (this=0x55b0ba8d13e0, bWait=true, bHandleAllCurrentEvents=false) at vcl/unx/gtk4/../gtk3/gtkdata.cxx:405
    #67 0x00007f0ba6289863 in GtkInstance::DoYield (this=0x55b0ba8d1290, bWait=true, bHandleAllCurrentEvents=false) at vcl/unx/gtk4/../gtk3/gtkinst.cxx:439
    #68 0x00007f0bb0a75c06 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:385
    #69 0x00007f0bb0a7551f in Application::Yield () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:488
    #70 0x00007f0bb0a75300 in Application::Execute () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:360
    #71 0x00007f0bb9928a19 in desktop::Desktop::Main (this=0x7ffed3055280) at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:1679
    #72 0x00007f0bb0a970d6 in ImplSVMain () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:230
    #73 0x00007f0bb0a98cc9 in SVMain () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:248
    #74 0x00007f0bb99a22fa in soffice_main () at /home/michi/development/git/libreoffice/desktop/source/app/sofficemain.cxx:122
    #75 0x000055b09e4b3a6d in sal_main () at /home/michi/development/git/libreoffice/desktop/source/app/main.c:51
    #76 0x000055b09e4b3a47 in main (argc=2, argv=0x7ffed3055488) at /home/michi/development/git/libreoffice/desktop/source/app/main.c:49

[1] https://docs.gtk.org/glib/gvariant-format-strings.html#pointers

Change-Id: I87bd2840ac573426264d1dff2fd40ab292f09fc1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181666
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <[email protected]>
(cherry picked from commit 38024bc)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188096
Reviewed-by: Xisco Fauli <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Aug 22, 2025
...as seen during CppunitTest_vcl_lifecycle,

> ../src/hb-vector.hh:447:33: runtime error: applying non-zero offset 18446744073709551264 to null pointer
>     #0 0x7ffb5ab18a06 in hb_vector_t<AAT::kern_subtable_accelerator_data_t, false>::shrink_vector(unsigned int) /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-vector.hh:447:33
>     #1 0x7ffb5ab1e1ba in hb_vector_t<AAT::kern_subtable_accelerator_data_t, false>::fini() /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-vector.hh:163:5
>     #2 0x7ffb5ab1e168 in hb_vector_t<AAT::kern_subtable_accelerator_data_t, false>::~hb_vector_t() /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-vector.hh:85:21
>     #3 0x7ffb5ab00c45 in AAT::kern_accelerator_data_t::~kern_accelerator_data_t() /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-aat-layout-kerx-table.hh:931:8
>     #4 0x7ffb5ab0039b in AAT::KerxTable<AAT::kerx>::accelerator_t::accelerator_t(hb_face_t*) /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-aat-layout-kerx-table.hh:1151:7
>     #5 0x7ffb5ab000cc in AAT::kerx_accelerator_t::kerx_accelerator_t(hb_face_t*) /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-aat-layout-kerx-table.hh:1198:42
>     #6 0x7ffb5ab00022 in hb_lazy_loader_t<AAT::kerx_accelerator_t, hb_face_lazy_loader_t<AAT::kerx_accelerator_t, 30u>, hb_face_t, 30u, AAT::kerx_accelerator_t>::create(hb_face_t*) /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-machinery.hh:266:19
>     #7 0x7ffb5aaffd4e in AAT::kerx_accelerator_t* hb_data_wrapper_t<hb_face_t, 30u>::call_create<AAT::kerx_accelerator_t, hb_face_lazy_loader_t<AAT::kerx_accelerator_t, 30u> >() const /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-machinery.hh:166:42
>     #8 0x7ffb5aaffa54 in hb_lazy_loader_t<AAT::kerx_accelerator_t, hb_face_lazy_loader_t<AAT::kerx_accelerator_t, 30u>, hb_face_t, 30u, AAT::kerx_accelerator_t>::get_stored() const /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-machinery.hh:229:26
>     #9 0x7ffb5aaff918 in hb_lazy_loader_t<AAT::kerx_accelerator_t, hb_face_lazy_loader_t<AAT::kerx_accelerator_t, 30u>, hb_face_t, 30u, AAT::kerx_accelerator_t>::get() const /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-machinery.hh:253:58
>     #10 0x7ffb5a9d3a78 in hb_lazy_loader_t<AAT::kerx_accelerator_t, hb_face_lazy_loader_t<AAT::kerx_accelerator_t, 30u>, hb_face_t, 30u, AAT::kerx_accelerator_t>::operator->() const /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-machinery.hh:213:50
>     #11 0x7ffb5a9bc608 in hb_aat_layout_has_positioning /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-aat-layout.cc:359:10
>     #12 0x7ffb5b1169be in hb_ot_shape_planner_t::compile(hb_ot_shape_plan_t&, hb_ot_shape_plan_key_t const&) /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-ot-shape.cc:158:19
>     #13 0x7ffb5b117ffc in hb_ot_shape_plan_t::init0(hb_face_t*, hb_shape_plan_key_t const*) /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-ot-shape.cc:239:11
>     #14 0x7ffb5b19307b in hb_shape_plan_create2 /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-shape-plan.cc:261:7
>     #15 0x7ffb5b1954bd in hb_shape_plan_create_cached2 /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-shape-plan.cc:554:33
>     #16 0x7ffb5b199535 in hb_shape_full /workdir/UnpackedTarball/harfbuzz/builddir/../src/hb-shape.cc:145:33
>     #17 0x7ffb57ffa071 in GenericSalLayout::LayoutText(vcl::text::ImplLayoutArgs&, SalLayoutGlyphsImpl const*) /vcl/source/gdi/CommonSalLayout.cxx:606:23
>     #18 0x7ffb56c08519 in OutputDevice::ImplLayout(rtl::OUString const&, int, int, Point const&, long, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, SalLayoutFlags, vcl::text::TextLayoutCache const*, SalLayoutGlyphs const*, std::optional<int>, std::optional<int>, std::optional<int>) const /vcl/source/outdev/text.cxx:1259:36
>     #19 0x7ffb56c0fafb in OutputDevice::GetPartialTextArray(rtl::OUString const&, std::__debug::vector<double, std::allocator<double> >*, int, int, int, int, bool, vcl::text::TextLayoutCache const*, SalLayoutGlyphs const*, std::optional<tools::Rectangle>*) const /vcl/source/outdev/text.cxx:791:22
>     #20 0x7ffb56c0a375 in OutputDevice::GetTextArray(rtl::OUString const&, std::__debug::vector<double, std::allocator<double> >*, int, int, bool, vcl::text::TextLayoutCache const*, SalLayoutGlyphs const*, std::optional<tools::Rectangle>*) const /vcl/source/outdev/text.cxx:760:12
>     #21 0x7ffb56c0a1b0 in OutputDevice::GetTextWidthDouble(rtl::OUString const&, int, int, vcl::text::TextLayoutCache const*, SalLayoutGlyphs const*) const /vcl/source/outdev/text.cxx:632:12
>     #22 0x7ffb56c0a058 in OutputDevice::GetTextWidth(rtl::OUString const&, int, int, vcl::text::TextLayoutCache const*, SalLayoutGlyphs const*) const /vcl/source/outdev/text.cxx:624:21
>     #23 0x7ffb5943b739 in FontMetricData::ImplInitTextLineSize(OutputDevice const*) /vcl/source/font/fontmetric.cxx:262:30
>     #24 0x7ffb56baf404 in OutputDevice::ImplNewFont() const /vcl/source/outdev/font.cxx:741:38
>     #25 0x7ffb56ba1d10 in OutputDevice::InitFont() const /vcl/source/outdev/font.cxx:644:10
>     #26 0x7ffb56c0a463 in OutputDevice::GetTextHeight() const /vcl/source/outdev/text.cxx:637:10
>     #27 0x7ffb55ea641c in vcl::Window::GetTextHeight() const /vcl/source/window/window3.cxx:66:65
>     #28 0x7ffb55ee73fc in vcl::Window::ImplInitAppFontData(vcl::Window const*) /vcl/source/window/window.cxx:1185:40
>     #29 0x7ffb55ebd975 in vcl::Window::ImplInit(vcl::Window*, long, SystemParentData*) /vcl/source/window/window.cxx:1179:9
>     #30 0x7ffb5604436f in PushButton::ImplInit(vcl::Window*, long) /vcl/source/control/button.cxx:684:13
>     #31 0x7ffb56054dce in PushButton::PushButton(vcl::Window*, long) /vcl/source/control/button.cxx:1267:5
>     #32 0x7ffb31a7b56a in ScopedVclPtrInstance<PushButton>::ScopedVclPtrInstance<std::nullptr_t, int>(std::nullptr_t&&, int&&) /include/vcl/vclptr.hxx:361:45
>     #33 0x7ffb31a4ee34 in LifecycleTest::testCast() /vcl/qa/cppunit/lifecycle.cxx:57:40

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

Change-Id: I00d0b9524042641170d6d2e9933a0f71fc6a6e60
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190045
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Aug 28, 2025
This fixes the below assert seen with gtk4 when
hovering over paragraph styles in the "Styles" sidebar
deck in Writer with.

    soffice.bin: /home/michi/development/git/libreoffice/vcl/source/app/dbggui.cxx:36: void ImplDbgTestSolarMutex(bool): Assertion `ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && "SolarMutex not owned!"' failed.

    Thread 1 received signal SIGABRT, Aborted.
    __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    warning: 44     ./nptl/pthread_kill.c: No such file or directory
    (rr) bt
    #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    #1  0x00007fe0abe9e9ff in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
    #2  0x00007fe0abe49cc2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
    #3  0x00007fe0abe324ac in __GI_abort () at ./stdlib/abort.c:73
    #4  0x00007fe0abe32420 in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>, file=<optimized out>, line=36, function=<optimized out>) at ./assert/assert.c:118
    #5  0x00007fe0a31b5ccc in ImplDbgTestSolarMutex (owned=true) at /home/michi/development/git/libreoffice/vcl/source/app/dbggui.cxx:36
    #6  0x00007fe0aa32b044 in DbgTestSolarMutex (owned=true) at /home/michi/development/git/libreoffice/tools/source/debug/debug.cxx:54
    #7  0x00007fe0549fc572 in SwModify::CallSwClientNotify (this=0x559770009880, rHint=...) at /home/michi/development/git/libreoffice/sw/source/core/attr/calbck.cxx:273
    #8  0x00007fe0549fc9b1 in sw::BroadcastingModify::CallSwClientNotify (this=0x559770009880, rHint=...) at /home/michi/development/git/libreoffice/sw/source/core/attr/calbck.cxx:297
    #9  0x00007fe054f0cd67 in SwDoc::IsUsed (this=0x55976fdd1cf0, rModify=...) at /home/michi/development/git/libreoffice/sw/source/core/doc/poolfmt.cxx:109
    #10 0x00007fe055e8fe47 in SwDocStyleSheet::IsUsed (this=0x55976fe02e80) at /home/michi/development/git/libreoffice/sw/source/uibase/app/docstyle.cxx:2481
    #11 0x00007fe0a83f603d in StyleList::QueryTooltipHdl (this=0x559771b48dd0, rEntry=...) at /home/michi/development/git/libreoffice/sfx2/source/dialog/StyleList.cxx:1753
    #12 0x00007fe0a83edd68 in StyleList::LinkStubQueryTooltipHdl (instance=0x559771b48dd0, data=...) at /home/michi/development/git/libreoffice/sfx2/source/dialog/StyleList.cxx:1743
    #13 0x00007fe09a7907bd in Link<weld::TreeIter const&, rtl::OUString>::Call (this=0x559771b27bb8, data=...) at include/tools/link.hxx:105
    #14 0x00007fe09a79075f in weld::TreeView::signal_query_tooltip (this=0x559771b27a08, rIter=...) at include/vcl/weld.hxx:1025
    #15 0x00007fe09a6e8d09 in (anonymous namespace)::GtkInstanceTreeView::signalQueryTooltip (x=382, y=153, keyboard_tip=0, tooltip=0x559769fbaa90, widget=0x559771b27400) at vcl/unx/gtk4/../gtk3/gtkinst.cxx:14531
    #16 0x00007fe0994dedfc in _gtk_marshal_BOOLEAN__INT_INT_BOOLEAN_OBJECT (closure=0x559771b24580, return_value=0x7ffef76e15b0, n_param_values=5, param_values=0x7ffef76e1640, invocation_hint=0x7ffef76e1590, marshal_data=0x0)
        at gtk/gtkmarshalers.c:1109
    #17 0x00007fe0a967d950 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #18 0x00007fe0a9691d43 in ??? () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #19 0x00007fe0a9693032 in ??? () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #20 0x00007fe0a96995a6 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #21 0x00007fe0a9699663 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #22 0x00007fe0997c6ada in gtk_widget_query_tooltip (widget=0x55976892b2b0, x=382, y=153, keyboard_mode=0, tooltip=0x559769fbaa90) at ../gtk/gtkwidget.c:5114
    #23 0x00007fe0997af430 in gtk_tooltip_run_requery (widget=0x7ffef76e1a58, tooltip=0x559769fbaa90, x=0x7ffef76e1a90, y=0x7ffef76e1a8c) at ../gtk/gtktooltip.c:559
    #24 0x00007fe0997b01bb in gtk_tooltip_handle_event_internal (event_type=GDK_MOTION_NOTIFY, surface=0x559764aa88a0, target_widget=0x55976892b2b0, dx=382.953125, dy=153.796875) at ../gtk/gtktooltip.c:1009
    #25 0x00007fe0997b0065 in _gtk_tooltip_handle_event (target=0x55976892b2b0, event=0x559772515280) at ../gtk/gtktooltip.c:957
    #26 0x00007fe099686120 in gtk_main_do_event (event=0x559772515280) at ../gtk/gtkmain.c:1751
    #27 0x00007fe0997e6720 in surface_event (surface=0x559764aa88a0, event=0x559772515280, widget=0x55976a125f10) at ../gtk/gtkwindow.c:4951
    #28 0x00007fe099a684cb in _gdk_marshal_BOOLEAN__POINTERv (closure=0x55976bc7ddf0, return_value=0x7ffef76e1eb0, instance=0x559764aa88a0, args=0x7ffef76e1fb0, marshal_data=0x0, n_params=1, param_types=0x559764ac5730)
        at gdk/gdkmarshalers.c:302
    #29 0x00007fe099b50e3c in gdk_surface_event_marshallerv (closure=0x55976bc7ddf0, return_value=0x7ffef76e1eb0, instance=0x559764aa88a0, args=0x7ffef76e1fb0, marshal_data=0x0, n_params=1, param_types=0x559764ac5730)
        at ../gdk/gdksurface.c:465
    #30 0x00007fe0a967db81 in ??? () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #31 0x00007fe0a9692b33 in ??? () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #32 0x00007fe0a96995a6 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #33 0x00007fe0a9699663 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #34 0x00007fe099b55ee7 in gdk_surface_handle_event (event=0x559772515280) at ../gdk/gdksurface.c:3001
    #35 0x00007fe099b0ae91 in _gdk_event_emit (event=0x559772515280) at ../gdk/gdkevents.c:491
    #36 0x00007fe099b0b946 in _gdk_event_queue_flush (display=0x5597649c1140) at ../gdk/gdkevents.c:856
    #37 0x00007fe099b54d84 in gdk_surface_flush_events (clock=0x559764a437b0, data=0x559764aa88a0) at ../gdk/gdksurface.c:2419
    #38 0x00007fe0a967db81 in ??? () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #39 0x00007fe0a96938b8 in ??? () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #40 0x00007fe0a96995a6 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #41 0x00007fe0a9699663 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    #42 0x00007fe099b13cae in _gdk_frame_clock_emit_flush_events (frame_clock=0x559764a437b0) at ../gdk/gdkframeclock.c:701
    #43 0x00007fe099b1492d in gdk_frame_clock_flush_idle (data=0x559764a437b0) at ../gdk/gdkframeclockidle.c:391
    #44 0x00007fe09e50744e in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #45 0x00007fe09e5043c5 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #46 0x00007fe09e5065f7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #47 0x00007fe09e506d60 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #48 0x00007fe09a683dac in GtkSalData::Yield (this=0x5597637370a0, bWait=true, bHandleAllCurrentEvents=false) at vcl/unx/gtk4/../gtk3/gtkdata.cxx:403
    #49 0x00007fe09a689403 in GtkInstance::DoYield (this=0x559763736f50, bWait=true, bHandleAllCurrentEvents=false) at vcl/unx/gtk4/../gtk3/gtkinst.cxx:440
    #50 0x00007fe0a328c606 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:385
    #51 0x00007fe0a328bf1f in Application::Yield () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:488
    #52 0x00007fe0a328bd00 in Application::Execute () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:360
    #53 0x00007fe0ac129915 in desktop::Desktop::Main (this=0x7ffef76e4160) at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:1678
    #54 0x00007fe0a32b8526 in ImplSVMain () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:230
    #55 0x00007fe0a32ba019 in SVMain () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:248
    #56 0x00007fe0ac1a35ca in soffice_main () at /home/michi/development/git/libreoffice/desktop/source/app/sofficemain.cxx:122
    #57 0x0000559759c3b9fd in sal_main () at /home/michi/development/git/libreoffice/desktop/source/app/main.c:51
    #58 0x0000559759c3b9d7 in main (argc=2, argv=0x7ffef76e4368) at /home/michi/development/git/libreoffice/desktop/source/app/main.c:49

Change-Id: If520816e8f748a7f082226d216b10aa5a2c27717
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190318
Reviewed-by: Michael Weghorn <[email protected]>
Tested-by: Jenkins
tdf-gerrit pushed a commit that referenced this pull request Aug 30, 2025
...and of "use a different memory allocation strategy for caches"

This reverts the sw/source/core/ole/ndole.cxx part of commit
3fc2216 and of commit
b8935ee for now, as it causes

> ==489880==ERROR: AddressSanitizer: heap-use-after-free on address 0x7c4dc7e22210 at pc 0x7b6d336739b2 bp 0x7ffc09ed2d50 sp 0x7ffc09ed2d48
> READ of size 8 at 0x7c4dc7e22210 thread T0 (kitbroker_003)
>  #0 in __gnu_cxx::__normal_iterator<SwOLEObj* const*, std::__cxx1998::vector<SwOLEObj*, std::pmr::polymorphic_allocator<SwOLEObj*>>>::__normal_iterator(SwOLEObj* const* const&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/stl_iterator.h:1059:20
>  #1 in std::__cxx1998::vector<SwOLEObj*, std::pmr::polymorphic_allocator<SwOLEObj*>>::begin() const at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/stl_vector.h:1009:16
>  #2 in std::__cxx1998::vector<SwOLEObj*, std::pmr::polymorphic_allocator<SwOLEObj*>>::empty() const at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/stl_vector.h:1224:16
>  #3 in (anonymous namespace)::SwOLELRUCache::dropCaches() at core/sw/source/core/ole/ndole.cxx:98:29
>  #4 in ImplSVData::dropCaches() at core/vcl/source/app/svdata.cxx:455:43
>  #5 in vcl::lok::trimMemory(int) at core/vcl/source/app/svapp.cxx:1800:18
>  #6 in lo_trimMemory(_LibreOfficeKit*, int) at core/desktop/source/lib/init.cxx:3403:5
>  #7 in Document::trimAfterInactivity() at online/kit/Kit.cpp:1122:17
>  #8 in KitSocketPoll::kitPoll(int) at online/kit/Kit.cpp:3045:20
>  #9 in SvpSalInstance::ImplYield(bool, bool) at core/vcl/headless/svpinst.cxx:463:31
>  #10 in SvpSalInstance::DoYield(bool, bool) at core/vcl/headless/svpinst.cxx:504:21
>  #11 in ImplYield(bool, bool) at core/vcl/source/app/svapp.cxx:389:48
>  #12 in Application::Yield() at core/vcl/source/app/svapp.cxx:492:5
>  #13 in Application::Execute() at core/vcl/source/app/svapp.cxx:364:13
>  #14 in desktop::Desktop::Main() at core/desktop/source/app/app.cxx:1680:13
>  #15 in ImplSVMain() at core/vcl/source/app/svmain.cxx:228:35
>  #16 in SVMain() at core/vcl/source/app/svmain.cxx:246:12
>  #17 in soffice_main at core/desktop/source/app/sofficemain.cxx:121:12
>  #18 in lo_runLoop(_LibreOfficeKit*, int (*)(void*, int), void (*)(void*), void*) at core/desktop/source/lib/init.cxx:7849:9
>  #19 in lokit_main(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool, bool, bool, bool, bool, unsigned long) at online/kit/Kit.cpp:3928:16
>  #20 in createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0::operator()() const at online/kit/ForKit.cpp:553:13
>  #21 in void std::__invoke_impl<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>(std::__invoke_other, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/invoke.h:63:14
>  #22 in std::enable_if<is_invocable_r_v<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>, void>::type std::__invoke_r<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>(createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/invoke.h:113:2
>  #23 in std::_Function_handler<void (), createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0>::_M_invoke(std::_Any_data const&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/std_function.h:292:9
>  #24 in std::function<void ()>::operator()() const at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/std_function.h:593:9
>  #25 in forkKit(std::function<void ()> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::function<void (int)> const&) at online/kit/ForKit.cpp:496:9
>  #26 in createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool) at online/kit/ForKit.cpp:573:20
>  #27 in forkLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) at online/kit/ForKit.cpp:698:39
>  #28 in forkit_main(int, char**) at online/kit/ForKit.cpp:1100:17
>  #29 in __libc_start_call_main at <null>

Change-Id: I8fdc88ca965e27c16b92df1c05e95eca23ab57b6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190379
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Caolán McNamara <[email protected]>
Tested-by: Jenkins CollaboraOffice <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Aug 30, 2025
...cf.

> warn:sal.osl:998109:998080:sal/osl/unx/module.cxx:103: dlopen(.../core/instdir/program/libacclo.so, 1): .../core/instdir/program/libacclo.so: undefined symbol: _ZTI7TabPage

and the failing assert at

>  #0 in vcl::AccessibleFactoryAccess::ensureInitialized() at core/vcl/source/helper/svtaccessiblefactory.cxx:252:80
>  #1 in vcl::AccessibleFactoryAccess::getFactory() at core/vcl/source/helper/svtaccessiblefactory.cxx:280:9
>  #2 in IconView::CreateAccessible() at core/vcl/source/treelist/iconview.cxx:248:44
>  #3 in SalInstanceIconView::SalInstanceIconView(IconView*, SalInstanceBuilder*, bool) at core/vcl/source/app/salvtables.cxx:5398:45
>  #4 in JSWidget<SalInstanceIconView, IconView>::JSWidget(JSDialogSender*, IconView*, SalInstanceBuilder*, bool) at core/vcl/inc/jsdialog/jsdialogbuilder.hxx:300:11
>  #5 in JSIconView::JSIconView(JSDialogSender*, IconView*, SalInstanceBuilder*, bool) at core/vcl/jsdialog/jsdialogbuilder.cxx:1892:7
>  #6 in std::__detail::_MakeUniq<JSIconView>::__single_object std::make_unique<JSIconView, JSInstanceBuilder*, IconView*&, JSInstanceBuilder*, bool>(JSInstanceBuilder*&&, IconView*&, JSInstanceBuilder*&&, bool&&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/unique_ptr.h:1085:34
>  #7 in JSInstanceBuilder::weld_icon_view(rtl::OUString const&) at core/vcl/jsdialog/jsdialogbuilder.cxx:772:23
>  #8 in StylesPreviewWindow_Base::StylesPreviewWindow_Base(weld::Builder&, std::__debug::vector<std::pair<rtl::OUString, rtl::OUString>, std::allocator<std::pair<rtl::OUString, rtl::OUString>>>&&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) at core/svx/source/tbxctrls/StylesPreviewWindow.cxx:449:30
>  #9 in StylesPreviewWindow_Impl::StylesPreviewWindow_Impl(vcl::Window*, std::__debug::vector<std::pair<rtl::OUString, rtl::OUString>, std::allocator<std::pair<rtl::OUString, rtl::OUString>>>&&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) at core/svx/source/tbxctrls/StylesPreviewWindow.cxx:661:7
>  #10 in VclPtr<StylesPreviewWindow_Impl> VclPtr<StylesPreviewWindow_Impl>::Create<VclPtr<vcl::Window>&, std::__debug::vector<std::pair<rtl::OUString, rtl::OUString>, std::allocator<std::pair<rtl::OUString, rtl::OUString>>>, com::sun::star::uno::Reference<com::sun::star::frame::XFrame>&>(VclPtr<vcl::Window>&, std::__debug::vector<std::pair<rtl::OUString, rtl::OUString>, std::allocator<std::pair<rtl::OUString, rtl::OUString>>>&&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame>&) at core/include/vcl/vclptr.hxx:130:46
>  #11 in StylesPreviewToolBoxControl::createItemWindow(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&) at core/svx/source/tbxctrls/StylesPreviewToolBoxControl.cxx:159:25
>  #12 in non-virtual thunk to StylesPreviewToolBoxControl::createItemWindow(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&) at core/svx/source/tbxctrls/StylesPreviewToolBoxControl.cxx
>  #13 in sfx2::sidebar::ControllerFactory::CreateToolBoxController(ToolBox*, o3tl::strong_int<unsigned short, ToolBoxItemIdTag>, rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Reference<com::sun::star::frame::XController> const&, com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, int, bool) at core/sfx2/source/sidebar/ControllerFactory.cxx:117:63
>  #14 in sfx2::sidebar::SidebarToolBox::CreateController(o3tl::strong_int<unsigned short, ToolBoxItemIdTag>, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, int, bool) at core/sfx2/source/sidebar/SidebarToolBox.cxx:169:59
>  #15 in sfx2::sidebar::SidebarToolBox::InsertItem(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, ToolBoxItemBits, Size const&, unsigned long) at core/sfx2/source/sidebar/SidebarToolBox.cxx:137:5
>  #16 in VclBuilder::makeObject(vcl::Window*, rtl::OUString const&, rtl::OUString const&, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>&) at core/vcl/source/window/builder.cxx:1973:27
>  #17 in VclBuilder::insertObject(vcl::Window*, rtl::OUString const&, std::basic_string_view<char, std::char_traits<char>>, rtl::OUString const&, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>&, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>&, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>&) at core/vcl/source/window/builder.cxx:2350:25
>  #18 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::handleObject(vcl::Window*, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>*, xmlreader::XmlReader&, std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>, bool) at core/include/vcl/widgetbuilder.hxx:285:29
>  #19 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::handleChild(vcl::Window*, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>*, xmlreader::XmlReader&, bool) at core/include/vcl/widgetbuilder.hxx:127:37
>  #20 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::handleObject(vcl::Window*, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>*, xmlreader::XmlReader&, std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>, bool) at core/include/vcl/widgetbuilder.hxx:233:21
>  #21 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::handleChild(vcl::Window*, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>*, xmlreader::XmlReader&, bool) at core/include/vcl/widgetbuilder.hxx:127:37
>  #22 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::handleObject(vcl::Window*, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>*, xmlreader::XmlReader&, std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>, bool) at core/include/vcl/widgetbuilder.hxx:233:21
>  #23 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::handleChild(vcl::Window*, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>*, xmlreader::XmlReader&, bool) at core/include/vcl/widgetbuilder.hxx:127:37
>  #24 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::handleObject(vcl::Window*, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>*, xmlreader::XmlReader&, std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>, bool) at core/include/vcl/widgetbuilder.hxx:233:21
>  #25 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::handleChild(vcl::Window*, std::__debug::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, rtl::OUString>>>*, xmlreader::XmlReader&, bool) at core/include/vcl/widgetbuilder.hxx:127:37
>  #26 in WidgetBuilder<vcl::Window, VclPtr<vcl::Window>, PopupMenu, VclPtr<PopupMenu>>::processUIFile(vcl::Window*) at core/include/vcl/widgetbuilder.hxx:70:13
>  #27 in VclBuilder::VclBuilder(vcl::Window*, std::basic_string_view<char16_t, std::char_traits<char16_t>>, rtl::OUString const&, rtl::OUString, com::sun::star::uno::Reference<com::sun::star::frame::XFrame>, bool, std::unique_ptr<NotebookBarAddonsItem, std::default_delete<NotebookBarAddonsItem>>) at core/vcl/source/window/builder.cxx:535:5
>  #28 in SalInstanceBuilder::SalInstanceBuilder(vcl::Window*, std::basic_string_view<char16_t, std::char_traits<char16_t>>, rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) at core/vcl/source/app/salvtables.cxx:7164:22
>  #29 in JSInstanceBuilder::JSInstanceBuilder(weld::Widget*, vcl::Window*, std::basic_string_view<char16_t, std::char_traits<char16_t>>, rtl::OUString const&, JSInstanceBuilder::Type, unsigned long, std::basic_string_view<char16_t, std::char_traits<char16_t>> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) at core/vcl/jsdialog/jsdialogbuilder.cxx:276:7
>  #30 in std::__detail::_MakeUniq<JSInstanceBuilder>::__single_object std::make_unique<JSInstanceBuilder, std::nullptr_t, vcl::Window*&, rtl::OUString const&, rtl::OUString const&, JSInstanceBuilder::Type, unsigned long&, char16_t const (&) [1], com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&>(std::nullptr_t&&, vcl::Window*&, rtl::OUString const&, rtl::OUString const&, JSInstanceBuilder::Type&&, unsigned long&, char16_t const (&) [1], com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/unique_ptr.h:1085:34
>  #31 in JSInstanceBuilder::CreateNotebookbarBuilder(vcl::Window*, rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, unsigned long) at core/vcl/jsdialog/jsdialogbuilder.cxx:331:12
>  #32 in WeldedTabbedNotebookbar::WeldedTabbedNotebookbar(VclPtr<vcl::Window> const&, rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, unsigned long) at core/vcl/source/control/WeldedTabbedNotebookbar.cxx:17:18
>  #33 in sfx2::SfxNotebookBar::StateMethod(SystemWindow*, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, std::basic_string_view<char16_t, std::char_traits<char16_t>>, bool) at core/sfx2/source/notebookbar/SfxNotebookBar.cxx:513:29
>  #34 in sfx2::SfxNotebookBar::StateMethod(SfxBindings&, std::basic_string_view<char16_t, std::char_traits<char16_t>>, bool) at core/sfx2/source/notebookbar/SfxNotebookBar.cxx:423:12
>  #35 in SwDocShell::GetState(SfxItemSet&) at core/sw/source/uibase/app/docsh.cxx:1117:28
>  #36 in SfxStubSwDocShellGetState(SfxShell*, SfxItemSet&) at core/workdir/SdiTarget/sw/sdi/swslots.hxx:1427:1
>  #37 in SfxShell::GetSlotState(unsigned short, SfxInterface const*, SfxItemSet*) at core/sfx2/source/control/shell.cxx:492:13
>  #38 in SfxDispatcher::QueryState(unsigned short, SfxPoolItemHolder&) at core/sfx2/source/control/dispatch.cxx:2051:26
>  #39 in SfxApplication::MiscExec_Impl(SfxRequest&) at core/sfx2/source/appl/appserv.cxx:1144:50
>  #40 in SfxStubSfxApplicationMiscExec_Impl(SfxShell*, SfxRequest&) at core/workdir/SdiTarget/sfx2/sdi/sfxslots.hxx:1307:1
>  #41 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) at core/sfx2/source/control/dispatch.cxx:255:9
>  #42 in SfxDispatcher::Execute_(SfxShell&, SfxSlot const&, SfxRequest&, SfxCallMode) at core/sfx2/source/control/dispatch.cxx:754:9
>  #43 in SfxDispatcher::Execute(unsigned short, SfxCallMode, SfxItemSet const*, SfxItemSet const*, unsigned short) at core/sfx2/source/control/dispatch.cxx:813:9
>  #44 in SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) at core/sfx2/source/control/unoctitm.cxx:716:46
>  #45 in SfxOfficeDispatch::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at core/sfx2/source/control/unoctitm.cxx:255:20
>  #46 in comphelper::dispatchCommand(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) at core/comphelper/source/misc/dispatchcommand.cxx:63:12
>  #47 in comphelper::dispatchCommand(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) at core/comphelper/source/misc/dispatchcommand.cxx:73:12
>  #48 in comphelper::dispatchCommand(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) at core/comphelper/source/misc/dispatchcommand.cxx:94:12
>  #49 in doc_postUnoCommand(_LibreOfficeKitDocument*, char const*, char const*, bool) at core/desktop/source/lib/init.cxx:5617:19
>  #50 in ChildSession::unoCommand(StringVector const&) at online/kit/ChildSession.cpp:2357:25
>  #51 in ChildSession::_handleInput(char const*, int) at online/kit/ChildSession.cpp:703:20
>  #52 in Session::handleMessage(std::vector<char, std::allocator<char>> const&) at online/common/Session.cpp
>  #53 in Document::forwardToChild(std::basic_string_view<char, std::char_traits<char>>, std::vector<char, std::allocator<char>> const&) at online/kit/Kit.cpp:2283:26
>  #54 in Document::drainQueue() at online/kit/Kit.cpp:2553:17
>  #55 in KitSocketPoll::drainQueue() at online/kit/Kit.cpp:2961:20
>  #56 in KitSocketPoll::kitPoll(int) at online/kit/Kit.cpp:3034:13
>  #57 in SvpSalInstance::ImplYield(bool, bool) at core/vcl/headless/svpinst.cxx:463:31
>  #58 in SvpSalInstance::DoYield(bool, bool) at core/vcl/headless/svpinst.cxx:504:21
>  #59 in ImplYield(bool, bool) at core/vcl/source/app/svapp.cxx:389:48
>  #60 in Application::Yield() at core/vcl/source/app/svapp.cxx:492:5
>  #61 in Application::Execute() at core/vcl/source/app/svapp.cxx:364:13
>  #62 in desktop::Desktop::Main() at core/desktop/source/app/app.cxx:1680:13
>  #63 in ImplSVMain() at core/vcl/source/app/svmain.cxx:228:35
>  #64 in SVMain() at core/vcl/source/app/svmain.cxx:246:12
>  #65 in soffice_main at core/desktop/source/app/sofficemain.cxx:121:12
>  #66 in lo_runLoop(_LibreOfficeKit*, int (*)(void*, int), void (*)(void*), void*) at core/desktop/source/lib/init.cxx:7849:9
>  #67 in lokit_main(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool, bool, bool, bool, bool, unsigned long) at online/kit/Kit.cpp:3928:16
>  #68 in createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0::operator()() const at online/kit/ForKit.cpp:553:13
>  #69 in void std::__invoke_impl<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>(std::__invoke_other, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/invoke.h:63:14
>  #70 in std::enable_if<is_invocable_r_v<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>, void>::type std::__invoke_r<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>(createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/invoke.h:113:2
>  #71 in std::_Function_handler<void (), createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0>::_M_invoke(std::_Any_data const&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/std_function.h:292:9
>  #72 in std::function<void ()>::operator()() const at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/std_function.h:593:9
>  #73 in forkKit(std::function<void ()> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::function<void (int)> const&) at online/kit/ForKit.cpp:496:9
>  #74 in createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool) at online/kit/ForKit.cpp:573:20
>  #75 in createSubForKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)::$_0::operator()() const at online/kit/ForKit.cpp:620:33
>  #76 in void std::__invoke_impl<void, createSubForKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)::$_0&>(std::__invoke_other, createSubForKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)::$_0&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/invoke.h:63:14
>  #77 in std::enable_if<is_invocable_r_v<void, createSubForKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)::$_0&>, void>::type std::__invoke_r<void, createSubForKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)::$_0&>(createSubForKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)::$_0&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/invoke.h:113:2
>  #78 in std::_Function_handler<void (), createSubForKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)::$_0>::_M_invoke(std::_Any_data const&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/std_function.h:292:9
>  #79 in std::function<void ()>::operator()() const at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/std_function.h:593:9
>  #80 in forkKit(std::function<void ()> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::function<void (int)> const&) at online/kit/ForKit.cpp:496:9
>  #81 in createSubForKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) at online/kit/ForKit.cpp:657:16
>  #82 in createSubForKits(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) at online/kit/ForKit.cpp:674:13
>  #83 in forkit_main(int, char**) at online/kit/ForKit.cpp:1102:17
>  #84 in __libc_start_call_main at <null>

(and this is no longer relevant on master after
9283da8 "a11y: Merge accessibility module into
vcl")

Change-Id: Icc49bcf8e9bd95b4fdb86b9420cc360e5fa17c08
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190390
Tested-by: Jenkins CollaboraOffice <[email protected]>
Reviewed-by: Andras Timar <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Sep 1, 2025
...and of "use a different memory allocation strategy for caches"

This reverts the sw/source/core/ole/ndole.cxx part of commit
3fc2216 and of commit
b8935ee for now, as it causes

> ==489880==ERROR: AddressSanitizer: heap-use-after-free on address 0x7c4dc7e22210 at pc 0x7b6d336739b2 bp 0x7ffc09ed2d50 sp 0x7ffc09ed2d48
> READ of size 8 at 0x7c4dc7e22210 thread T0 (kitbroker_003)
>  #0 in __gnu_cxx::__normal_iterator<SwOLEObj* const*, std::__cxx1998::vector<SwOLEObj*, std::pmr::polymorphic_allocator<SwOLEObj*>>>::__normal_iterator(SwOLEObj* const* const&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/stl_iterator.h:1059:20
>  #1 in std::__cxx1998::vector<SwOLEObj*, std::pmr::polymorphic_allocator<SwOLEObj*>>::begin() const at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/stl_vector.h:1009:16
>  #2 in std::__cxx1998::vector<SwOLEObj*, std::pmr::polymorphic_allocator<SwOLEObj*>>::empty() const at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/stl_vector.h:1224:16
>  #3 in (anonymous namespace)::SwOLELRUCache::dropCaches() at core/sw/source/core/ole/ndole.cxx:98:29
>  #4 in ImplSVData::dropCaches() at core/vcl/source/app/svdata.cxx:455:43
>  #5 in vcl::lok::trimMemory(int) at core/vcl/source/app/svapp.cxx:1800:18
>  #6 in lo_trimMemory(_LibreOfficeKit*, int) at core/desktop/source/lib/init.cxx:3403:5
>  #7 in Document::trimAfterInactivity() at online/kit/Kit.cpp:1122:17
>  #8 in KitSocketPoll::kitPoll(int) at online/kit/Kit.cpp:3045:20
>  #9 in SvpSalInstance::ImplYield(bool, bool) at core/vcl/headless/svpinst.cxx:463:31
>  #10 in SvpSalInstance::DoYield(bool, bool) at core/vcl/headless/svpinst.cxx:504:21
>  #11 in ImplYield(bool, bool) at core/vcl/source/app/svapp.cxx:389:48
>  #12 in Application::Yield() at core/vcl/source/app/svapp.cxx:492:5
>  #13 in Application::Execute() at core/vcl/source/app/svapp.cxx:364:13
>  #14 in desktop::Desktop::Main() at core/desktop/source/app/app.cxx:1680:13
>  #15 in ImplSVMain() at core/vcl/source/app/svmain.cxx:228:35
>  #16 in SVMain() at core/vcl/source/app/svmain.cxx:246:12
>  #17 in soffice_main at core/desktop/source/app/sofficemain.cxx:121:12
>  #18 in lo_runLoop(_LibreOfficeKit*, int (*)(void*, int), void (*)(void*), void*) at core/desktop/source/lib/init.cxx:7849:9
>  #19 in lokit_main(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool, bool, bool, bool, bool, unsigned long) at online/kit/Kit.cpp:3928:16
>  #20 in createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0::operator()() const at online/kit/ForKit.cpp:553:13
>  #21 in void std::__invoke_impl<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>(std::__invoke_other, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/invoke.h:63:14
>  #22 in std::enable_if<is_invocable_r_v<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>, void>::type std::__invoke_r<void, createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&>(createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/invoke.h:113:2
>  #23 in std::_Function_handler<void (), createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)::$_0>::_M_invoke(std::_Any_data const&) at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/std_function.h:292:9
>  #24 in std::function<void ()>::operator()() const at /usr/lib/gcc/x86_64-redhat-linux/15/../../../../include/c++/15/bits/std_function.h:593:9
>  #25 in forkKit(std::function<void ()> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::function<void (int)> const&) at online/kit/ForKit.cpp:496:9
>  #26 in createLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool) at online/kit/ForKit.cpp:573:20
>  #27 in forkLibreOfficeKit(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) at online/kit/ForKit.cpp:698:39
>  #28 in forkit_main(int, char**) at online/kit/ForKit.cpp:1100:17
>  #29 in __libc_start_call_main at <null>

Change-Id: I8fdc88ca965e27c16b92df1c05e95eca23ab57b6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190379
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Caolán McNamara <[email protected]>
Tested-by: Jenkins CollaboraOffice <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Sep 16, 2025
...presumably after 981d8be "freetype: upgrade
to 2.14.1", causing e.g. CppunitTest_chart2_pivot_chart_test to fail with

> workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:3708:31: runtime error: signed integer overflow: 2161 - -9223372036854775808 cannot be represented in type 'FT_Pos' (aka 'long')
>  #0 in af_glyph_hints_apply_vertical_separation_adjustments at workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:3708:31
>  #1 in af_latin_hints_apply at workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:5054:9
>  #2 in af_loader_load_glyph at workdir/UnpackedTarball/freetype/src/autofit/afloader.c:411:17
>  #3 in af_autofitter_load_glyph at workdir/UnpackedTarball/freetype/src/autofit/afmodule.c:498:13
>  #4 in FT_Load_Glyph at workdir/UnpackedTarball/freetype/src/base/ftobjs.c:1055:19
>  #5  at <null> (/lib64/libcairo.so.2 +0x9be4b)
>  #6  at <null> (/lib64/libcairo.so.2 +0xa0df1)
>  #7  at <null> (/lib64/libcairo.so.2 +0x528b6)
>  #8  at <null> (/lib64/libcairo.so.2 +0x57184)
>  #9  at <null> (/lib64/libcairo.so.2 +0x179f6)
>  #10  at <null> (/lib64/libcairo.so.2 +0x1a5f7)
>  #11  at <null> (/lib64/libcairo.so.2 +0x27459)
>  #12  at <null> (/lib64/libcairo.so.2 +0x701c8)
>  #13  at <null> (/lib64/libcairo.so.2 +0x22a8b)
>  #14 in cairo_show_glyphs at <null> (/lib64/libcairo.so.2 +0x78a7d)
>  #15 in CairoTextRender::ImplDrawTextLayout(_cairo*, Color const&, GenericSalLayout const&, CairoCommon*, bool) at vcl/unx/generic/gdi/cairotextrender.cxx:517:9
>  #16 in CairoTextRender::DrawTextLayout(GenericSalLayout const&, SalGraphics const&) at vcl/unx/generic/gdi/cairotextrender.cxx:292:5
>  #17 in SvpSalGraphics::DrawTextLayout(GenericSalLayout const&) at vcl/headless/svptext.cxx:74:23
>  #18 in GenericSalLayout::DrawText(SalGraphics&) const at vcl/source/gdi/CommonSalLayout.cxx:314:18
>  #19 in OutputDevice::ImplDrawTextDirect(SalLayout&, bool) at vcl/source/outdev/text.cxx:311:16
>  #20 in OutputDevice::ImplDrawText(SalLayout&) at vcl/source/outdev/text.cxx:464:9
>  #21 in OutputDevice::DrawTextArray(Point const&, rtl::OUString const&, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, int, int, SalLayoutFlags, SalLayoutGlyphs const*) at vcl/source/outdev/text.cxx:750:9
>  #22 in ScOutputData::LayoutStringsImpl(bool, RowInfo*, short, int, unsigned long, std::optional<short>&, std::optional<short>&, short, std::__debug::vector<std::unique_ptr<ScPatternAttr, std::default_delete<ScPatternAttr>>, std::allocator<std::unique_ptr<ScPatternAttr, std::default_delete<ScPatternAttr>>>>&, ScPatternAttr const*&, SfxItemSet const*&, SvtScriptType&, ScDrawStringsVars&, bool&, long, long, bool, bool&, vcl::PDFExtOutDevData*, long, std::__debug::vector<double, std::allocator<double>>&) at sc/source/ui/view/output2.cxx:2248:28
>  #23 in ScOutputData::LayoutStrings(bool) at sc/source/ui/view/output2.cxx:1565:17
>  #24 in ScOutputData::DrawStrings(bool) at sc/source/ui/view/output2.cxx:1487:5
>  #25 in ScPrintFunc::DrawToDev(ScDocument&, OutputDevice*, double, tools::Rectangle const&, ScViewData&, bool) at sc/source/ui/view/printfun.cxx:604:17
>  #26 in ScDocShell::Draw(OutputDevice*, JobSetup const&, unsigned short, bool) at sc/source/ui/docshell/docsh4.cxx:2656:9
>  #27 in SfxObjectShell::DoDraw_Impl(OutputDevice*, Point const&, Fraction const&, Fraction const&, JobSetup const&, unsigned short, bool) at sfx2/source/doc/objembed.cxx:204:5
>  #28 in SfxObjectShell::DoDraw(OutputDevice*, Point const&, Size const&, JobSetup const&, unsigned short, bool) at sfx2/source/doc/objembed.cxx:151:9
>  #29 in SfxObjectShell::CreatePreview_Impl(bool, bool, VirtualDevice*, GDIMetaFile*) const at sfx2/source/doc/objcont.cxx:201:40
>  #30 in SfxObjectShell::GetPreviewBitmap() const at sfx2/source/doc/objcont.cxx:113:9
>  #31 in SfxObjectShell::WriteThumbnail(bool, com::sun::star::uno::Reference<com::sun::star::io::XStream> const&) at sfx2/source/doc/objstor.cxx:4157:29
>  #32 in SfxObjectShell::GenerateAndStoreThumbnail(bool, com::sun::star::uno::Reference<com::sun::star::embed::XStorage> const&) at sfx2/source/doc/objstor.cxx:4112:33
>  #33 in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) at sfx2/source/doc/objstor.cxx:1839:19
>  #34 in SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString const&, rtl::OUString const&, SfxItemSet const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/objstor.cxx:3421:39
>  #35 in SfxObjectShell::CommonSaveAs_Impl(INetURLObject const&, rtl::OUString const&, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/objstor.cxx:3212:9
>  #36 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&) at sfx2/source/doc/objserv.cxx:323:19
>  #37 in SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, bool) at sfx2/source/doc/sfxbasemodel.cxx:3253:42
>  #38 in SfxBaseModel::storeToURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/sfxbasemodel.cxx:1834:13
>  #39 in UnoApiTest::saveWithParams(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at test/source/unoapi_test.cxx:194:16
>  #40 in UnoApiTest::save(rtl::OUString const&, char const*) at test/source/unoapi_test.cxx:178:5
>  #41 in UnoApiTest::saveAndReload(rtl::OUString const&, char const*) at test/source/unoapi_test.cxx:199:5
>  #42 in PivotChartTest::testRoundtrip() at chart2/qa/extras/PivotChartTest.cxx:354:5

Change-Id: I6bb42532fce1291b4208108ab1898b94dda02e68
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191043
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Sep 17, 2025
...presumably after 981d8be "freetype: upgrade
to 2.14.1", causing e.g. CppunitTest_chart2_pivot_chart_test to fail with

> workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:3708:31: runtime error: signed integer overflow: 2161 - -9223372036854775808 cannot be represented in type 'FT_Pos' (aka 'long')
>  #0 in af_glyph_hints_apply_vertical_separation_adjustments at workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:3708:31
>  #1 in af_latin_hints_apply at workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:5054:9
>  #2 in af_loader_load_glyph at workdir/UnpackedTarball/freetype/src/autofit/afloader.c:411:17
>  #3 in af_autofitter_load_glyph at workdir/UnpackedTarball/freetype/src/autofit/afmodule.c:498:13
>  #4 in FT_Load_Glyph at workdir/UnpackedTarball/freetype/src/base/ftobjs.c:1055:19
>  #5  at <null> (/lib64/libcairo.so.2 +0x9be4b)
>  #6  at <null> (/lib64/libcairo.so.2 +0xa0df1)
>  #7  at <null> (/lib64/libcairo.so.2 +0x528b6)
>  #8  at <null> (/lib64/libcairo.so.2 +0x57184)
>  #9  at <null> (/lib64/libcairo.so.2 +0x179f6)
>  #10  at <null> (/lib64/libcairo.so.2 +0x1a5f7)
>  #11  at <null> (/lib64/libcairo.so.2 +0x27459)
>  #12  at <null> (/lib64/libcairo.so.2 +0x701c8)
>  #13  at <null> (/lib64/libcairo.so.2 +0x22a8b)
>  #14 in cairo_show_glyphs at <null> (/lib64/libcairo.so.2 +0x78a7d)
>  #15 in CairoTextRender::ImplDrawTextLayout(_cairo*, Color const&, GenericSalLayout const&, CairoCommon*, bool) at vcl/unx/generic/gdi/cairotextrender.cxx:517:9
>  #16 in CairoTextRender::DrawTextLayout(GenericSalLayout const&, SalGraphics const&) at vcl/unx/generic/gdi/cairotextrender.cxx:292:5
>  #17 in SvpSalGraphics::DrawTextLayout(GenericSalLayout const&) at vcl/headless/svptext.cxx:74:23
>  #18 in GenericSalLayout::DrawText(SalGraphics&) const at vcl/source/gdi/CommonSalLayout.cxx:314:18
>  #19 in OutputDevice::ImplDrawTextDirect(SalLayout&, bool) at vcl/source/outdev/text.cxx:311:16
>  #20 in OutputDevice::ImplDrawText(SalLayout&) at vcl/source/outdev/text.cxx:464:9
>  #21 in OutputDevice::DrawTextArray(Point const&, rtl::OUString const&, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, int, int, SalLayoutFlags, SalLayoutGlyphs const*) at vcl/source/outdev/text.cxx:750:9
>  #22 in ScOutputData::LayoutStringsImpl(bool, RowInfo*, short, int, unsigned long, std::optional<short>&, std::optional<short>&, short, std::__debug::vector<std::unique_ptr<ScPatternAttr, std::default_delete<ScPatternAttr>>, std::allocator<std::unique_ptr<ScPatternAttr, std::default_delete<ScPatternAttr>>>>&, ScPatternAttr const*&, SfxItemSet const*&, SvtScriptType&, ScDrawStringsVars&, bool&, long, long, bool, bool&, vcl::PDFExtOutDevData*, long, std::__debug::vector<double, std::allocator<double>>&) at sc/source/ui/view/output2.cxx:2248:28
>  #23 in ScOutputData::LayoutStrings(bool) at sc/source/ui/view/output2.cxx:1565:17
>  #24 in ScOutputData::DrawStrings(bool) at sc/source/ui/view/output2.cxx:1487:5
>  #25 in ScPrintFunc::DrawToDev(ScDocument&, OutputDevice*, double, tools::Rectangle const&, ScViewData&, bool) at sc/source/ui/view/printfun.cxx:604:17
>  #26 in ScDocShell::Draw(OutputDevice*, JobSetup const&, unsigned short, bool) at sc/source/ui/docshell/docsh4.cxx:2656:9
>  #27 in SfxObjectShell::DoDraw_Impl(OutputDevice*, Point const&, Fraction const&, Fraction const&, JobSetup const&, unsigned short, bool) at sfx2/source/doc/objembed.cxx:204:5
>  #28 in SfxObjectShell::DoDraw(OutputDevice*, Point const&, Size const&, JobSetup const&, unsigned short, bool) at sfx2/source/doc/objembed.cxx:151:9
>  #29 in SfxObjectShell::CreatePreview_Impl(bool, bool, VirtualDevice*, GDIMetaFile*) const at sfx2/source/doc/objcont.cxx:201:40
>  #30 in SfxObjectShell::GetPreviewBitmap() const at sfx2/source/doc/objcont.cxx:113:9
>  #31 in SfxObjectShell::WriteThumbnail(bool, com::sun::star::uno::Reference<com::sun::star::io::XStream> const&) at sfx2/source/doc/objstor.cxx:4157:29
>  #32 in SfxObjectShell::GenerateAndStoreThumbnail(bool, com::sun::star::uno::Reference<com::sun::star::embed::XStorage> const&) at sfx2/source/doc/objstor.cxx:4112:33
>  #33 in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) at sfx2/source/doc/objstor.cxx:1839:19
>  #34 in SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString const&, rtl::OUString const&, SfxItemSet const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/objstor.cxx:3421:39
>  #35 in SfxObjectShell::CommonSaveAs_Impl(INetURLObject const&, rtl::OUString const&, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/objstor.cxx:3212:9
>  #36 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&) at sfx2/source/doc/objserv.cxx:323:19
>  #37 in SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, bool) at sfx2/source/doc/sfxbasemodel.cxx:3253:42
>  #38 in SfxBaseModel::storeToURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/sfxbasemodel.cxx:1834:13
>  #39 in UnoApiTest::saveWithParams(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at test/source/unoapi_test.cxx:194:16
>  #40 in UnoApiTest::save(rtl::OUString const&, char const*) at test/source/unoapi_test.cxx:178:5
>  #41 in UnoApiTest::saveAndReload(rtl::OUString const&, char const*) at test/source/unoapi_test.cxx:199:5
>  #42 in PivotChartTest::testRoundtrip() at chart2/qa/extras/PivotChartTest.cxx:354:5

Change-Id: I6bb42532fce1291b4208108ab1898b94dda02e68
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191043
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <[email protected]>
(cherry picked from commit a8133d2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191064
Reviewed-by: Xisco Fauli <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Sep 17, 2025
...presumably after 981d8be "freetype: upgrade
to 2.14.1", causing e.g. CppunitTest_chart2_pivot_chart_test to fail with

> workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:3708:31: runtime error: signed integer overflow: 2161 - -9223372036854775808 cannot be represented in type 'FT_Pos' (aka 'long')
>  #0 in af_glyph_hints_apply_vertical_separation_adjustments at workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:3708:31
>  #1 in af_latin_hints_apply at workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:5054:9
>  #2 in af_loader_load_glyph at workdir/UnpackedTarball/freetype/src/autofit/afloader.c:411:17
>  #3 in af_autofitter_load_glyph at workdir/UnpackedTarball/freetype/src/autofit/afmodule.c:498:13
>  #4 in FT_Load_Glyph at workdir/UnpackedTarball/freetype/src/base/ftobjs.c:1055:19
>  #5  at <null> (/lib64/libcairo.so.2 +0x9be4b)
>  #6  at <null> (/lib64/libcairo.so.2 +0xa0df1)
>  #7  at <null> (/lib64/libcairo.so.2 +0x528b6)
>  #8  at <null> (/lib64/libcairo.so.2 +0x57184)
>  #9  at <null> (/lib64/libcairo.so.2 +0x179f6)
>  #10  at <null> (/lib64/libcairo.so.2 +0x1a5f7)
>  #11  at <null> (/lib64/libcairo.so.2 +0x27459)
>  #12  at <null> (/lib64/libcairo.so.2 +0x701c8)
>  #13  at <null> (/lib64/libcairo.so.2 +0x22a8b)
>  #14 in cairo_show_glyphs at <null> (/lib64/libcairo.so.2 +0x78a7d)
>  #15 in CairoTextRender::ImplDrawTextLayout(_cairo*, Color const&, GenericSalLayout const&, CairoCommon*, bool) at vcl/unx/generic/gdi/cairotextrender.cxx:517:9
>  #16 in CairoTextRender::DrawTextLayout(GenericSalLayout const&, SalGraphics const&) at vcl/unx/generic/gdi/cairotextrender.cxx:292:5
>  #17 in SvpSalGraphics::DrawTextLayout(GenericSalLayout const&) at vcl/headless/svptext.cxx:74:23
>  #18 in GenericSalLayout::DrawText(SalGraphics&) const at vcl/source/gdi/CommonSalLayout.cxx:314:18
>  #19 in OutputDevice::ImplDrawTextDirect(SalLayout&, bool) at vcl/source/outdev/text.cxx:311:16
>  #20 in OutputDevice::ImplDrawText(SalLayout&) at vcl/source/outdev/text.cxx:464:9
>  #21 in OutputDevice::DrawTextArray(Point const&, rtl::OUString const&, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, int, int, SalLayoutFlags, SalLayoutGlyphs const*) at vcl/source/outdev/text.cxx:750:9
>  #22 in ScOutputData::LayoutStringsImpl(bool, RowInfo*, short, int, unsigned long, std::optional<short>&, std::optional<short>&, short, std::__debug::vector<std::unique_ptr<ScPatternAttr, std::default_delete<ScPatternAttr>>, std::allocator<std::unique_ptr<ScPatternAttr, std::default_delete<ScPatternAttr>>>>&, ScPatternAttr const*&, SfxItemSet const*&, SvtScriptType&, ScDrawStringsVars&, bool&, long, long, bool, bool&, vcl::PDFExtOutDevData*, long, std::__debug::vector<double, std::allocator<double>>&) at sc/source/ui/view/output2.cxx:2248:28
>  #23 in ScOutputData::LayoutStrings(bool) at sc/source/ui/view/output2.cxx:1565:17
>  #24 in ScOutputData::DrawStrings(bool) at sc/source/ui/view/output2.cxx:1487:5
>  #25 in ScPrintFunc::DrawToDev(ScDocument&, OutputDevice*, double, tools::Rectangle const&, ScViewData&, bool) at sc/source/ui/view/printfun.cxx:604:17
>  #26 in ScDocShell::Draw(OutputDevice*, JobSetup const&, unsigned short, bool) at sc/source/ui/docshell/docsh4.cxx:2656:9
>  #27 in SfxObjectShell::DoDraw_Impl(OutputDevice*, Point const&, Fraction const&, Fraction const&, JobSetup const&, unsigned short, bool) at sfx2/source/doc/objembed.cxx:204:5
>  #28 in SfxObjectShell::DoDraw(OutputDevice*, Point const&, Size const&, JobSetup const&, unsigned short, bool) at sfx2/source/doc/objembed.cxx:151:9
>  #29 in SfxObjectShell::CreatePreview_Impl(bool, bool, VirtualDevice*, GDIMetaFile*) const at sfx2/source/doc/objcont.cxx:201:40
>  #30 in SfxObjectShell::GetPreviewBitmap() const at sfx2/source/doc/objcont.cxx:113:9
>  #31 in SfxObjectShell::WriteThumbnail(bool, com::sun::star::uno::Reference<com::sun::star::io::XStream> const&) at sfx2/source/doc/objstor.cxx:4157:29
>  #32 in SfxObjectShell::GenerateAndStoreThumbnail(bool, com::sun::star::uno::Reference<com::sun::star::embed::XStorage> const&) at sfx2/source/doc/objstor.cxx:4112:33
>  #33 in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) at sfx2/source/doc/objstor.cxx:1839:19
>  #34 in SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString const&, rtl::OUString const&, SfxItemSet const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/objstor.cxx:3421:39
>  #35 in SfxObjectShell::CommonSaveAs_Impl(INetURLObject const&, rtl::OUString const&, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/objstor.cxx:3212:9
>  #36 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&) at sfx2/source/doc/objserv.cxx:323:19
>  #37 in SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, bool) at sfx2/source/doc/sfxbasemodel.cxx:3253:42
>  #38 in SfxBaseModel::storeToURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/sfxbasemodel.cxx:1834:13
>  #39 in UnoApiTest::saveWithParams(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at test/source/unoapi_test.cxx:194:16
>  #40 in UnoApiTest::save(rtl::OUString const&, char const*) at test/source/unoapi_test.cxx:178:5
>  #41 in UnoApiTest::saveAndReload(rtl::OUString const&, char const*) at test/source/unoapi_test.cxx:199:5
>  #42 in PivotChartTest::testRoundtrip() at chart2/qa/extras/PivotChartTest.cxx:354:5

Change-Id: I6bb42532fce1291b4208108ab1898b94dda02e68
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191043
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <[email protected]>
(cherry picked from commit a8133d2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191064
Reviewed-by: Xisco Fauli <[email protected]>
(cherry picked from commit fb9337d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191096
tdf-gerrit pushed a commit that referenced this pull request Sep 18, 2025
 coolforkit-ns: /home/mk/core/vcl/source/app/dbggui.cxx:36: void ImplDbgTestSolarMutex(bool):
 Assertion `ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && "SolarMutex not
 owned!"' failed.

Seen with this call stack:

 #0  0x00007f71b2b7ee96 in __GI___assert_fail (
     assertion=0x7f71aa2c4de0 "ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && \"SolarMutex not owned!\"", file=0x7f71aa2c4db8 "/home/mk/core/vcl/source/app/dbggui.cxx", line=36,
     function=0x7f71aa2c4d90 "void ImplDbgTestSolarMutex(bool)") at ./assert/assert.c:103
 #1  0x00007f71a952e69b in ImplDbgTestSolarMutex (owned=true) at /home/mk/core/vcl/source/app/dbggui.cxx:36
 #2  0x00007f71ab311ee0 in DbgTestSolarMutex (owned=true) at /home/mk/core/tools/source/debug/debug.cxx:54
 #3  0x00007f719ae4156d in SwModify::Add (this=0x55ace7ff8ec0, rDepend=...)
     at /home/mk/core/sw/source/core/attr/calbck.cxx:172
 #4  0x00007f719b42e062 in SwContentNode::SwContentNode (this=0x55ace8021f50, rWhere=..., nNdType=SwNodeType::Text, pColl=0x55ace7ff8ec0) at /home/mk/core/sw/source/core/docnode/node.cxx:1082
 #5  0x00007f719ba84bee in SwTextNode::SwTextNode (this=0x55ace8021f50, rWhere=..., pTextColl=0x55ace7ff8ec0, pAutoAttr=0x0) at /home/mk/core/sw/source/core/txtnode/ndtxt.cxx:219
 #6  0x00007f719ba84661 in SwNodes::MakeTextNode (this=0x55ace83b0ee0, rWhere=..., pColl=0x55ace7ff8ec0, bNewFrames=true) at /home/mk/core/sw/source/core/txtnode/ndtxt.cxx:133
 #7  0x00007f719b442347 in SwNodes::MakeTextSection (this=0x55ace83b0ee0, rWhere=..., eSttNdTyp=SwNormalStartNode, pColl=0x55ace7ff8ec0) at /home/mk/core/sw/source/core/docnode/nodes.cxx:1953
 #8  0x00007f719b18c9a2 in SwRangeRedline::MoveToSection (this=0x55ace8302bd0) at /home/mk/core/sw/source/core/doc/docredln.cxx:1962
 #9  0x00007f719b18b8c8 in SwRangeRedline::ShowOriginal (this=0x55ace8302bd0, nLoop=0, nMyPos=3) at /home/mk/core/sw/source/core/doc/docredln.cxx:1772
 #10 0x00007f719c650b17 in (anonymous namespace)::HideNewerShowOlder::Hide (pRedline=0x55ace8302bd0, rTable=...) at /home/mk/core/sw/source/uibase/uno/loktxdoc.cxx:934
 #11 0x00007f719c650668 in (anonymous namespace)::HideNewerShowOlder::HideNewerShowOlder (this=0x7ffea7e20b60, limit=..., rTable=...) at /home/mk/core/sw/source/uibase/uno/loktxdoc.cxx:885
 #12 0x00007f719c651152 in (anonymous namespace)::GetDocStructureTrackChanges (rJsonWriter=..., pDocShell=0x55ace7d72d00, filterArguments=...) at /home/mk/core/sw/source/uibase/uno/loktxdoc.cxx:997
 #13 0x00007f719c651cc3 in (anonymous namespace)::GetDocStructure (rJsonWriter=..., pDocShell=0x55ace7d72d00, rArguments=...) at /home/mk/core/sw/source/uibase/uno/loktxdoc.cxx:1077
 #14 0x00007f719c6524a4 in SwXTextDocument::getCommandValues (this=0x55ace836de60, rJsonWriter=..., rCommand=...) at /home/mk/core/sw/source/uibase/uno/loktxdoc.cxx:1162
 #15 0x00007f71b272492f in lo_extractDocumentStructureRequest (pFilePath=0x55ace4085040 "file:///tmp/user/docs/IvJPNWKKqE4D3jXV/works.docx", pFilter=0x55ace7b2a450 "trackchanges,contextLen:100") at /home/mk/core/desktop/source/lib/init.cxx:3352
 #16 0x000055accb8ae888 in lok::Office::extractDocumentStructureRequest (pFilter=<optimized out>, pFilePath=<optimized out>, this=0x55acd7c16bd0) at /home/mk/core/include/LibreOfficeKit/LibreOfficeKit.hxx:1301
 #17 ChildSession::_handleInput (this=0x55ace78ead30, buffer=<optimized out>, length=<optimized out>) at kit/ChildSession.cpp:371
 #18 0x000055accb95f62c in Session::handleMessage (this=0x55ace78ead30, data=...) at common/Session.cpp:326
 #19 0x000055accb901e25 in Document::forwardToChild (this=0x55ace7a662b0, prefix=..., payload=...) at kit/Kit.cpp:2283
 #20 0x000055accb902a8e in Document::drainQueue (this=0x55ace7a662b0) at /usr/include/c++/13/string_view:146
 #21 0x000055accb9036cd in KitSocketPoll::drainQueue (this=0x55ace7a8c880) at kit/Kit.cpp:2961
 #22 KitSocketPoll::kitPoll (this=0x55ace7a8c880, timeoutMicroS=<optimized out>) at kit/Kit.cpp:3034
 #23 0x00007f71a99ac661 in SvpSalInstance::ImplYield (this=0x55acd7c35700, bWait=true, bHandleAllCurrentEvents=false) at /home/mk/core/vcl/headless/svpinst.cxx:463
 #24 0x00007f71a99ac938 in SvpSalInstance::DoYield (this=0x55acd7c35700, bWait=true, bHandleAllCurrentEvents=false) at /home/mk/core/vcl/headless/svpinst.cxx:504
 #25 0x00007f71a95f88d9 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/mk/core/vcl/source/app/svapp.cxx:389
 #26 0x00007f71a95f9794 in Application::Yield () at /home/mk/core/vcl/source/app/svapp.cxx:492
 #27 0x00007f71a95f855a in Application::Execute () at /home/mk/core/vcl/source/app/svapp.cxx:364
 #28 0x00007f71b26602a7 in desktop::Desktop::Main (this=0x7ffea7e23f30) at /home/mk/core/desktop/source/app/app.cxx:1680
 #29 0x00007f71a96249f1 in ImplSVMain () at /home/mk/core/vcl/source/app/svmain.cxx:228
 #30 0x00007f71a9624ad6 in SVMain () at /home/mk/core/vcl/source/app/svmain.cxx:246
 #31 0x00007f71b26d300e in soffice_main () at /home/mk/core/desktop/source/app/sofficemain.cxx:121
 #32 0x00007f71b2743c40 in lo_runLoop (pPollCallback=0x55accb904070 <pollCallback(void*, int)>, pWakeCallback=0x55accb8e6ab0 <wakeCallback(void*)>, pData=0x55ace7a8c880) at /home/mk/core/desktop/source/lib/init.cxx:7873
 #33 0x000055accb90c3af in lok::Office::runLoop (pData=0x55ace7a8c880, pWakeCallback=0x55accb8e6ab0 <wakeCallback(void*)>, pPollCallback=0x55accb904070 <pollCallback(void*, int)>, this=0x55acd7c16bd0) at /home/mk/core/include/LibreOfficeKit/LibreOfficeKit.hxx:1156
 #34 lokit_main (childRoot=..., jailId=..., configId=..., sysTemplate=..., loTemplate=..., noCapabilities=<optimized out>, noSeccomp=<optimized out>, useMountNamespaces=<optimized out>, queryVersion=<optimized out>, displayVersion=<optimized out>, sysTemplateIncomplete=<optimized out>, numericIdentifier=<optimized out>) at kit/Kit.cpp:3926
 #35 0x000055accb8c7ea9 in operator() (__closure=<optimized out>) at kit/ForKit.cpp:556
 #36 std::__invoke_impl<void, createLibreOfficeKit(const std::string&, const std::string&, const std::string&, const std::string&, bool, bool)::<lambda()>&> (__f=...) at /usr/include/c++/13/bits/invoke.h:61
 #37 std::__invoke_r<void, createLibreOfficeKit(const std::string&, const std::string&, const std::string&, const std::string&, bool, bool)::<lambda()>&> (__fn=...) at /usr/include/c++/13/bits/invoke.h:111
 #38 std::_Function_handler<void(), createLibreOfficeKit(const std::string&, const std::string&, const std::string&, const std::string&, bool, bool)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/13/bits/std_function.h:290
 #39 0x000055accb8cb1c2 in std::function<void ()>::operator()() const (this=0x7ffea7e24e90) at /usr/include/c++/13/bits/std_function.h:591
 #40 forkKit(const std::function<void()> &, const std::string &, const std::function<void(int)> &) (childFunc=..., childProcessName=..., parentFunc=...) at kit/ForKit.cpp:499
 #41 0x000055accb8cc6ef in createLibreOfficeKit (childRoot=..., sysTemplate=..., loTemplate=..., useMountNamespaces=<optimized out>, queryVersion=<optimized out>, configId=...) at kit/ForKit.cpp:576
 #42 0x000055accb8d1578 in forkit_main (argc=<optimized out>, argv=<optimized out>) at kit/ForKit.cpp:1042
 #43 0x00007f71b2b6ed90 in __libc_start_call_main (main=main@entry=0x55accb8835a0 <main(int, char**)>, argc=argc@entry=10, argv=argv@entry=0x7ffea7e25e58) at ../sysdeps/nptl/libc_start_call_main.h:58
 #44 0x00007f71b2b6ee40 in __libc_start_main_impl (main=0x55accb8835a0 <main(int, char**)>, argc=10, argv=0x7ffea7e25e58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffea7e25e48) at ../csu/libc-start.c:392
 #45 0x000055accb884845 in _start ()

Change-Id: Ib7e8f93b094db925b6bb60134d23aeb325a10f54
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191016
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Jenkins CollaboraOffice <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Sep 19, 2025
...presumably after 981d8be "freetype: upgrade
to 2.14.1", causing e.g. CppunitTest_chart2_pivot_chart_test to fail with

> workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:3708:31: runtime error: signed integer overflow: 2161 - -9223372036854775808 cannot be represented in type 'FT_Pos' (aka 'long')
>  #0 in af_glyph_hints_apply_vertical_separation_adjustments at workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:3708:31
>  #1 in af_latin_hints_apply at workdir/UnpackedTarball/freetype/src/autofit/aflatin.c:5054:9
>  #2 in af_loader_load_glyph at workdir/UnpackedTarball/freetype/src/autofit/afloader.c:411:17
>  #3 in af_autofitter_load_glyph at workdir/UnpackedTarball/freetype/src/autofit/afmodule.c:498:13
>  #4 in FT_Load_Glyph at workdir/UnpackedTarball/freetype/src/base/ftobjs.c:1055:19
>  #5  at <null> (/lib64/libcairo.so.2 +0x9be4b)
>  #6  at <null> (/lib64/libcairo.so.2 +0xa0df1)
>  #7  at <null> (/lib64/libcairo.so.2 +0x528b6)
>  #8  at <null> (/lib64/libcairo.so.2 +0x57184)
>  #9  at <null> (/lib64/libcairo.so.2 +0x179f6)
>  #10  at <null> (/lib64/libcairo.so.2 +0x1a5f7)
>  #11  at <null> (/lib64/libcairo.so.2 +0x27459)
>  #12  at <null> (/lib64/libcairo.so.2 +0x701c8)
>  #13  at <null> (/lib64/libcairo.so.2 +0x22a8b)
>  #14 in cairo_show_glyphs at <null> (/lib64/libcairo.so.2 +0x78a7d)
>  #15 in CairoTextRender::ImplDrawTextLayout(_cairo*, Color const&, GenericSalLayout const&, CairoCommon*, bool) at vcl/unx/generic/gdi/cairotextrender.cxx:517:9
>  #16 in CairoTextRender::DrawTextLayout(GenericSalLayout const&, SalGraphics const&) at vcl/unx/generic/gdi/cairotextrender.cxx:292:5
>  #17 in SvpSalGraphics::DrawTextLayout(GenericSalLayout const&) at vcl/headless/svptext.cxx:74:23
>  #18 in GenericSalLayout::DrawText(SalGraphics&) const at vcl/source/gdi/CommonSalLayout.cxx:314:18
>  #19 in OutputDevice::ImplDrawTextDirect(SalLayout&, bool) at vcl/source/outdev/text.cxx:311:16
>  #20 in OutputDevice::ImplDrawText(SalLayout&) at vcl/source/outdev/text.cxx:464:9
>  #21 in OutputDevice::DrawTextArray(Point const&, rtl::OUString const&, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, int, int, SalLayoutFlags, SalLayoutGlyphs const*) at vcl/source/outdev/text.cxx:750:9
>  #22 in ScOutputData::LayoutStringsImpl(bool, RowInfo*, short, int, unsigned long, std::optional<short>&, std::optional<short>&, short, std::__debug::vector<std::unique_ptr<ScPatternAttr, std::default_delete<ScPatternAttr>>, std::allocator<std::unique_ptr<ScPatternAttr, std::default_delete<ScPatternAttr>>>>&, ScPatternAttr const*&, SfxItemSet const*&, SvtScriptType&, ScDrawStringsVars&, bool&, long, long, bool, bool&, vcl::PDFExtOutDevData*, long, std::__debug::vector<double, std::allocator<double>>&) at sc/source/ui/view/output2.cxx:2248:28
>  #23 in ScOutputData::LayoutStrings(bool) at sc/source/ui/view/output2.cxx:1565:17
>  #24 in ScOutputData::DrawStrings(bool) at sc/source/ui/view/output2.cxx:1487:5
>  #25 in ScPrintFunc::DrawToDev(ScDocument&, OutputDevice*, double, tools::Rectangle const&, ScViewData&, bool) at sc/source/ui/view/printfun.cxx:604:17
>  #26 in ScDocShell::Draw(OutputDevice*, JobSetup const&, unsigned short, bool) at sc/source/ui/docshell/docsh4.cxx:2656:9
>  #27 in SfxObjectShell::DoDraw_Impl(OutputDevice*, Point const&, Fraction const&, Fraction const&, JobSetup const&, unsigned short, bool) at sfx2/source/doc/objembed.cxx:204:5
>  #28 in SfxObjectShell::DoDraw(OutputDevice*, Point const&, Size const&, JobSetup const&, unsigned short, bool) at sfx2/source/doc/objembed.cxx:151:9
>  #29 in SfxObjectShell::CreatePreview_Impl(bool, bool, VirtualDevice*, GDIMetaFile*) const at sfx2/source/doc/objcont.cxx:201:40
>  #30 in SfxObjectShell::GetPreviewBitmap() const at sfx2/source/doc/objcont.cxx:113:9
>  #31 in SfxObjectShell::WriteThumbnail(bool, com::sun::star::uno::Reference<com::sun::star::io::XStream> const&) at sfx2/source/doc/objstor.cxx:4157:29
>  #32 in SfxObjectShell::GenerateAndStoreThumbnail(bool, com::sun::star::uno::Reference<com::sun::star::embed::XStorage> const&) at sfx2/source/doc/objstor.cxx:4112:33
>  #33 in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) at sfx2/source/doc/objstor.cxx:1839:19
>  #34 in SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString const&, rtl::OUString const&, SfxItemSet const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/objstor.cxx:3421:39
>  #35 in SfxObjectShell::CommonSaveAs_Impl(INetURLObject const&, rtl::OUString const&, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/objstor.cxx:3212:9
>  #36 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&) at sfx2/source/doc/objserv.cxx:323:19
>  #37 in SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, bool) at sfx2/source/doc/sfxbasemodel.cxx:3253:42
>  #38 in SfxBaseModel::storeToURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/sfxbasemodel.cxx:1834:13
>  #39 in UnoApiTest::saveWithParams(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at test/source/unoapi_test.cxx:194:16
>  #40 in UnoApiTest::save(rtl::OUString const&, char const*) at test/source/unoapi_test.cxx:178:5
>  #41 in UnoApiTest::saveAndReload(rtl::OUString const&, char const*) at test/source/unoapi_test.cxx:199:5
>  #42 in PivotChartTest::testRoundtrip() at chart2/qa/extras/PivotChartTest.cxx:354:5

Change-Id: I6bb42532fce1291b4208108ab1898b94dda02e68
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191043
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <[email protected]>
(cherry picked from commit a8133d2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191064
Reviewed-by: Xisco Fauli <[email protected]>
(cherry picked from commit fb9337d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191096
tdf-gerrit pushed a commit that referenced this pull request Oct 6, 2025
...by reverting the part of acf75a9 "Drop some
unnecessary explicit casts" that started to make CppunitTest_vcl_pdfexport2 fail
with

> /workdir/UnpackedTarball/boost/boost/rational.hpp:604:22: runtime error: signed integer overflow: 350932797 * 10 cannot be represented in type 'int'
>     #0 0x7f56315d94f1 in boost::rational<int>::operator/=(boost::rational<int> const&) /workdir/UnpackedTarball/boost/boost/rational.hpp:604:22
>     #1 0x7f56315d12dd in Fraction::operator/=(Fraction const&) /tools/source/generic/fract.cxx:239:7
>     #2 0x7f56315d40e8 in operator/(Fraction const&, Fraction const&) /tools/source/generic/fract.cxx:335:10
>     #3 0x7f5626bafc3f in vcl::PDFWriterImpl::drawLayout(SalLayout&, rtl::OUString const&, bool) /vcl/source/pdf/pdfwriter_impl.cxx:6767:69
>     #4 0x7f5626bcc194 in vcl::PDFWriterImpl::drawTextArray(Point const&, rtl::OUString const&, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, int, int, int, int) /vcl/source/pdf/pdfwriter_impl.cxx:7269:9
>     #5 0x7f5626a30fdd in vcl::PDFWriter::DrawTextArray(Point const&, rtl::OUString const&, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, int, int, int, int) /vcl/source/pdf/pdfwriter.cxx:87:22
>     #6 0x7f5626a58a6f in vcl::PDFWriterImpl::playMetafile(GDIMetaFile const&, vcl::PDFExtOutDevData*, vcl::PDFWriter::PlayMetafileContext const&, VirtualDevice*) /vcl/source/pdf/pdfwriter_impl2.cxx:821:34
>     #7 0x7f5626a3a9a5 in vcl::PDFWriter::PlayMetafile(GDIMetaFile const&, vcl::PDFWriter::PlayMetafileContext const&, vcl::PDFExtOutDevData*) /vcl/source/pdf/pdfwriter.cxx:474:22
>     #8 0x7f5599ef9e75 in PDFExport::ImplExportPage(vcl::PDFWriter&, vcl::PDFExtOutDevData&, GDIMetaFile const&) /filter/source/pdf/pdfexport.cxx:1333:13
>     #9 0x7f5599ef807c in PDFExport::ExportSelection(vcl::PDFWriter&, com::sun::star::uno::Reference<com::sun::star::view::XRenderable> const&, com::sun::star::uno::Any const&, StringRangeEnumerator const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>&, int) /filter/source/pdf/pdfexport.cxx:212:25
>     #10 0x7f5599f11329 in PDFExport::Export(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdfexport.cxx:1180:28
>     #11 0x7f5599f86342 in PDFFilter::implExport(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdffilter.cxx:182:24
>     #12 0x7f5599f87093 in PDFFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdffilter.cxx:247:23
>     #13 0x7f55df8d3f26 in SfxObjectShell::ExportTo(SfxMedium&) /sfx2/source/doc/objstor.cxx:2908:25
>     #14 0x7f55df8bf658 in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) /sfx2/source/doc/objstor.cxx:1929:19
>     #15 0x7f55df8fbf63 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:3421:39
>     #16 0x7f55df8f383c 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:3212:9
>     #17 0x7f55df82ca66 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:323:19
>     #18 0x7f55dfb19501 in SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, bool) /sfx2/source/doc/sfxbasemodel.cxx:3253:42
>     #19 0x7f55dfb20834 in SfxBaseModel::storeToURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/sfxbasemodel.cxx:1834:13
>     #20 0x7f5603982e5a in UnoApiTest::saveWithParams(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /test/source/unoapi_test.cxx:194:16
>     #21 0x7f5604ee9776 in (anonymous namespace)::PdfExportTest2::saveAsPDF(std::basic_string_view<char16_t, std::char_traits<char16_t> >) /vcl/qa/cppunit/pdfexport/pdfexport2.cxx:76:5
>     #22 0x7f560518fa16 in (anonymous namespace)::testTdf145873::TestBody() /vcl/qa/cppunit/pdfexport/pdfexport2.cxx:4171:5

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

Change-Id: I607d1b66bdae9cece0102a99ef817864b3d27877
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191928
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 6, 2025
After

    commit 94442bd94e504b067efd0b992525b53fc660f114
    Author: Michael Weghorn <[email protected]>
    Date:   Tue Aug 5 11:07:25 2025 +0200

        tdf#163802 a11y: Fully initialize SpellDialog before showing

, triggering the spell check dialog in Impress
for an empty presentation would result in infinite
recursion e.g. with the gtk3 or gen VCL plugins
on Linux, because the initialization of the
svx::SpellDialogChildWindow triggers a message dialog
asking whether to start spell check from the beginning
(s. frame #252 in below backtrace).
For gtk3 and gen, that dialog triggers processing
of pending events, which triggers an update of the
child windows (s. frame #230), which triggers the logic to
create the spell check child window again (as it isn't
shown yet).

(For qt6, that problem wasn't seen, because synchronously
showing the message dialog doesn't trigger processing
of pending events.)

Fix the problem by detecting cases where a child
window is already in the process of being created,
and return early in that case.

Change SfxWorkWindow::CreateChildWin_Impl to return
a bool result indicating whether the child window
was created or not, and evaluate that in the callers.

Sample backtrace for the gtk3 VCL plugin:

    #0  0x00007fffe94490c0 in memcmp@plt () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
    #1  0x00007fffe955c206 in ??? () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
    #2  0x00007fffe955c97f in ??? () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
    #3  0x00007fffe955a4a3 in ??? () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
    #4  0x00007fffe94db449 in ??? () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
    #5  0x00007fffe6b6e484 in ??? () at /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
    #6  0x00007fffe6b716e9 in ??? () at /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
    #7  0x00007fffe6b71b6d in gdk_pixbuf_loader_close () at /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
    #8  0x00007fffe5be2fe0 in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
    #9  0x00007fffe5be40b1 in gtk_image_set_from_file () at /lib/x86_64-linux-gnu/libgtk-3.so.0
    #10 0x00007fffe5be41fd in gtk_image_new_from_file () at /lib/x86_64-linux-gnu/libgtk-3.so.0
    #11 0x00007fffe6498cf9 in (anonymous namespace)::image_new_from_xgraphic (rIcon=uno::Reference to (unographic::Graphic *) 0x55555ef17750, bMirror=false) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:4973
    #12 0x00007fffe6504ec8 in (anonymous namespace)::GtkInstanceToolbar::set_item_image (pItem=0x55555ef42d20, rIcon=uno::Reference to (unographic::Graphic *) 0x55555ef17750, bMirror=false)
        at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:11838
    #13 0x00007fffe64ffb31 in (anonymous namespace)::GtkInstanceToolbar::set_item_image (this=0x55555e956af0, rIdent="toggle", rIcon=uno::Reference to (unographic::Graphic *) 0x55555ef17750)
        at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:12214
    #14 0x00007ffff4137ba1 in sfx2::sidebar::TabBar::UpdateButtonIcons (this=0x5555597c0230) at /home/michi/development/git/libreoffice/sfx2/source/sidebar/TabBar.cxx:159
    #15 0x00007ffff4137634 in sfx2::sidebar::TabBar::SetDecks (this=0x5555597c0230, rDecks=std::__debug::vector of length 8, capacity 8 = {...}) at /home/michi/development/git/libreoffice/sfx2/source/sidebar/TabBar.cxx:148
    #16 0x00007ffff40b0f0b in sfx2::sidebar::SidebarController::UpdateConfigurations (this=0x555558960ae0) at /home/michi/development/git/libreoffice/sfx2/source/sidebar/SidebarController.cxx:604
    #17 0x00007ffff40b0a49 in sfx2::sidebar::SidebarController::notifyContextChangeEvent (this=0x555558960ae0, rEvent=...) at /home/michi/development/git/libreoffice/sfx2/source/sidebar/SidebarController.cxx:371
    #18 0x00007ffff4dcba91 in (anonymous namespace)::ContextChangeEventMultiplexer::BroadcastEventToSingleContainer (this=0x5555590d95c0, rEventObject=..., rxEventFocus=uno::Reference to (sd::DrawController *) 0x55555830b5e8)
        at /home/michi/development/git/libreoffice/framework/source/services/ContextChangeEventMultiplexer.cxx:252
    #19 0x00007ffff4dca942 in (anonymous namespace)::ContextChangeEventMultiplexer::broadcastContextChangeEvent (this=0x5555590d95c0, rEventObject=..., rxEventFocus=uno::Reference to (sd::DrawController *) 0x55555830b5e8)
        at /home/michi/development/git/libreoffice/framework/source/services/ContextChangeEventMultiplexer.cxx:235
    #20 0x00007ffff2948f8f in ContextChangeEventMultiplexer::NotifyContextChange (rxController=uno::Reference to (sd::DrawController *) 0x55555830b5e8, eContext=vcl::EnumContext::Context::DrawPage)
        at /home/michi/development/git/libreoffice/svx/source/sidebar/ContextChangeEventMultiplexer.cxx:51
    #21 0x00007ffff295e246 in svx::sidebar::SelectionChangeHandler::selectionChanged (this=0x55555edcd3f0) at /home/michi/development/git/libreoffice/svx/source/sidebar/SelectionChangeHandler.cxx:56
    #22 0x00007fff9dc6b3cf in sd::DrawController::FireSelectionChangeListener (this=0x55555830b5c0) at /home/michi/development/git/libreoffice/sd/source/ui/unoidl/DrawController.cxx:396
    #23 0x00007fff9dc6b2dc in sd::DrawController::SetSubController (this=0x55555830b5c0, rxSubController=empty uno::Reference) at /home/michi/development/git/libreoffice/sd/source/ui/unoidl/DrawController.cxx:99
    #24 0x00007fff9d99a936 in sd::framework::BasicViewFactory::releaseResource (this=0x55555894ad50, rxView=rtl::Reference to 0x55555ef81a80)
        at /home/michi/development/git/libreoffice/sd/source/ui/framework/factories/BasicViewFactory.cxx:219
    #25 0x00007fff9d97161c in sd::framework::ConfigurationControllerResourceManager::DeactivateResource (this=0x55555894c0f0, rxResourceId=rtl::Reference to 0x55555edb5110, rxConfiguration=rtl::Reference to 0x55555894eb00)
        at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ConfigurationControllerResourceManager.cxx:203
    #26 0x00007fff9d971fb4 in sd::framework::ConfigurationControllerResourceManager::DeactivateResources(std::__debug::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > > const&, rtl::Reference<sd::framework::Configuration> const&)::$_0::operator()(rtl::Reference<sd::framework::ResourceId> const&) const (this=0x7ffffffe7950, xResource=rtl::Reference to 0x55555edb5110)
        at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ConfigurationControllerResourceManager.cxx:90
    #27 0x00007fff9d9712cb in std::for_each<std::reverse_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<rtl::Reference<sd::framework::ResourceId> const*, std::__cxx1998::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > > >, std::__debug::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > >, std::random_access_iterator_tag> >, sd::framework::ConfigurationControllerResourceManager::DeactivateResources(std::__debug::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > > const&, rtl::Reference<sd::framework::Configuration> const&)::$_0>(std::reverse_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<rtl::Reference<sd::framework::ResourceId> const*, std::__cxx1998::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > > >, std::__debug::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > >, std::random_access_iterator_tag> >, std::reverse_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<rtl::Reference<sd::framework::ResourceId> const*, std::__cxx1998::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > > >, std::__debug::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > >, std::random_access_iterator_tag> >, sd::framework::ConfigurationControllerResourceManager::DeactivateResources(std::__debug::vector<rtl::Reference<sd::framework::ResourceId>, std::allocator<rtl::Reference<sd::framework::ResourceId> > > const&, rtl::Reference<sd::framework::Configuration> const&)::$_0) (__first=..., __last=..., __f=...)
        at /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/stl_algo.h:3798
    #28 0x00007fff9d971074 in sd::framework::ConfigurationControllerResourceManager::DeactivateResources
        (this=0x55555894c0f0, rResources=std::__debug::vector of length 1, capacity 1 = {...}, rxConfiguration=rtl::Reference to 0x55555894eb00)
        at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ConfigurationControllerResourceManager.cxx:86
    #29 0x00007fff9d978cae in sd::framework::ConfigurationUpdater::UpdateCore (this=0x55555894dd00, rClassifier=...) at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ConfigurationUpdater.cxx:250
    #30 0x00007fff9d97829c in sd::framework::ConfigurationUpdater::UpdateConfiguration (this=0x55555894dd00) at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ConfigurationUpdater.cxx:161
    #31 0x00007fff9d977d1b in sd::framework::ConfigurationUpdater::RequestUpdate (this=0x55555894dd00, rxRequestedConfiguration=rtl::Reference to 0x55555894cf50)
        at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ConfigurationUpdater.cxx:108
    #32 0x00007fff9d94c5b2 in sd::framework::ChangeRequestQueueProcessor::ProcessOneEvent (this=0x55555894eba0) at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ChangeRequestQueueProcessor.cxx:163
    #33 0x00007fff9d94c6fe in sd::framework::ChangeRequestQueueProcessor::ProcessUntilEmpty (this=0x55555894eba0) at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ChangeRequestQueueProcessor.cxx:175
    #34 0x00007fff9d95e8ef in sd::framework::ConfigurationController::RequestSynchronousUpdate (this=0x55555894a210) at /home/michi/development/git/libreoffice/sd/source/ui/framework/configuration/ConfigurationController.cxx:167
    #35 0x00007fff9d9c69d8 in sd::framework::FrameworkHelper::RequestSynchronousUpdate (this=0x555558959cb0) at /home/michi/development/git/libreoffice/sd/source/ui/framework/tools/FrameworkHelper.cxx:643
    #36 0x00007fff9dd53f6c in SdOutliner::SetViewMode (this=0x55555ee0e070, ePageKind=PageKind::Standard) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1652
    #37 0x00007fff9dd55071 in SdOutliner::SetObject (this=0x55555ee0e070, rPosition=...) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1851
    #38 0x00007fff9dd4e830 in SdOutliner::EndOfSearch (this=0x55555ee0e070) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1418
    #39 0x00007fff9dd4f9e2 in SdOutliner::ProvideNextTextObject (this=0x55555ee0e070) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1399
    #40 0x00007fff9dd4e68b in SdOutliner::SpellNextDocument (this=0x55555ee0e070) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:393
    #41 0x00007fff9dd4fbc0 in SdOutliner::GetNextSpellSentence (this=0x55555ee0e070) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:436
    #42 0x00007fff9d8f4ee0 in sd::SpellDialogChildWindow::GetNextWrongSentence (this=0x55555e56afa0) at /home/michi/development/git/libreoffice/sd/source/ui/dlg/SpellDialogChildWindow.cxx:72
    #43 0x00007fff9480ddaa in svx::SpellDialog::GetNextSentence_Impl (this=0x55555eca57c0, pGuard=0x0, bUseSavedSentence=false, bRecheck=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:1050
    #44 0x00007fff9480caa4 in svx::SpellDialog::SpellContinue_Impl (this=0x55555eca57c0, pGuard=0x0, bUseSavedSentence=false, bIgnoreCurrentError=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:402
    #45 0x00007fff9480f0dd in svx::SpellDialog::Initialize (this=0x55555eca57c0) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:432
    #46 0x00007fff9485d131 in (anonymous namespace)::AbstractSpellDialog_Impl::Initialize (this=0x55555edb1bc0) at /home/michi/development/git/libreoffice/cui/source/factory/dlgfact.cxx:452
    #47 0x00007ffff27ef522 in svx::SpellDialogChildWindow::Initialize (this=0x55555e56afa0) at /home/michi/development/git/libreoffice/svx/source/dialog/SpellDialogChildWindow.cxx:49
    #48 0x00007ffff3aa0d49 in SfxChildWindow::CreateChildWindow (nId=10243, pParent=0x5555589410f0, pBindings=0x555556a7ef20, rInfo=...) at /home/michi/development/git/libreoffice/sfx2/source/appl/childwin.cxx:244
    #49 0x00007ffff3b3be5d in SfxWorkWindow::CreateChildWin_Impl (this=0x7fff980287c0, pCW=0x5555598d22b0, bSetFocus=false) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1350
    #50 0x00007ffff3b3bbc6 in SfxWorkWindow::UpdateChildWindows_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1299
    #51 0x00007ffff3b3b205 in SfxWorkWindow::UpdateObjectBars_Impl2 (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1247
    #52 0x00007ffff3b3a831 in SfxWorkWindow::UpdateObjectBars_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1095
    #53 0x00007ffff3ba83b3 in SfxDispatcher::Update_Impl (this=0x555556877340, bForce=true) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:1124
    #54 0x00007ffff3bfebbe in DispatcherUpdate_Impl (pArg=0x555556877340) at /home/michi/development/git/libreoffice/sfx2/source/control/shell.cxx:681
    #55 0x00007ffff0889f71 in Link<void*, void>::Call (this=0x55555e3c7c40, data=0x555556877340) at include/tools/link.hxx:105
    #56 0x00007ffff08df2c8 in svtools::AsynchronLink::HandleCall_PostUserEvent (this=0x55555e3c7c40) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:66
    #57 0x00007ffff08df21d in svtools::AsynchronLink::LinkStubHandleCall_PostUserEvent (instance=0x55555e3c7c40, data=0x0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:58
    #58 0x00007fffee4622d1 in Link<void*, void>::Call (this=0x55555e86e7e8, data=0x0) at include/tools/link.hxx:105
    #59 0x00007fffee45dbf1 in ImplHandleUserEvent (pSVEvent=0x55555e86e7e0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2312
    #60 0x00007fffee45ab1f in ImplWindowFrameProc (_pWindow=0x555556a70090, nEvent=SalEvent::UserEvent, pEvent=0x55555e86e7e0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2869
    #61 0x00007fffef031fec in SalFrame::CallCallback (this=0x5555569484e0, nEvent=SalEvent::UserEvent, pEvent=0x55555e86e7e0) at vcl/inc/salframe.hxx:310
    #62 0x00007fffef0584df in SalGenericDisplay::ProcessEvent (this=0x5555569f26e0, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #63 0x00007fffeea32ced in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7ffffffebc20) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #64 0x00007fffeea32bbb in SalUserEventList::DispatchUserEvents (this=0x5555569f26e0, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #65 0x00007fffef058435 in SalGenericDisplay::DispatchInternalEvent (this=0x5555569f26e0, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #66 0x00007fffe647995f in call_userEventFn (data=0x5555555b3760) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:825
    #67 0x00007fffe9d04385 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #68 0x00007fffe9d065b7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #69 0x00007fffe9d0701f in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #70 0x00007fffe652062a in main_loop_run (pLoop=0x55555edb57d0) at vcl/inc/unx/gtk/gtkdata.hxx:59
    #71 0x00007fffe64964ad in (anonymous namespace)::DialogRunner::run (this=0x55555ed86530) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:6768
    #72 0x00007fffe6491af0 in (anonymous namespace)::GtkInstanceDialog::run (this=0x55555ed863d0) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:10190
    #73 0x00007fff9dd55d03 in SdOutliner::ShowWrapAroundDialog (this=0x55555ed78a80) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1526
    #74 0x00007fff9dd4e88f in SdOutliner::EndOfSearch (this=0x55555ed78a80) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1432
    #75 0x00007fff9dd4f9e2 in SdOutliner::ProvideNextTextObject (this=0x55555ed78a80) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1399
    #76 0x00007fff9dd4e68b in SdOutliner::SpellNextDocument (this=0x55555ed78a80) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:393
    #77 0x00007fff9dd4fbc0 in SdOutliner::GetNextSpellSentence (this=0x55555ed78a80) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:436
    #78 0x00007fff9d8f4ee0 in sd::SpellDialogChildWindow::GetNextWrongSentence (this=0x55555eaeead0) at /home/michi/development/git/libreoffice/sd/source/ui/dlg/SpellDialogChildWindow.cxx:72
    #79 0x00007fff9480ddaa in svx::SpellDialog::GetNextSentence_Impl (this=0x55555eb6ef60, pGuard=0x0, bUseSavedSentence=false, bRecheck=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:1050
    #80 0x00007fff9480caa4 in svx::SpellDialog::SpellContinue_Impl (this=0x55555eb6ef60, pGuard=0x0, bUseSavedSentence=false, bIgnoreCurrentError=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:402
    #81 0x00007fff9480f0dd in svx::SpellDialog::Initialize (this=0x55555eb6ef60) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:432
    #82 0x00007fff9485d131 in (anonymous namespace)::AbstractSpellDialog_Impl::Initialize (this=0x5555599c5060) at /home/michi/development/git/libreoffice/cui/source/factory/dlgfact.cxx:452
    #83 0x00007ffff27ef522 in svx::SpellDialogChildWindow::Initialize (this=0x55555eaeead0) at /home/michi/development/git/libreoffice/svx/source/dialog/SpellDialogChildWindow.cxx:49
    #84 0x00007ffff3aa0d49 in SfxChildWindow::CreateChildWindow (nId=10243, pParent=0x5555589410f0, pBindings=0x555556a7ef20, rInfo=...) at /home/michi/development/git/libreoffice/sfx2/source/appl/childwin.cxx:244
    #85 0x00007ffff3b3be5d in SfxWorkWindow::CreateChildWin_Impl (this=0x7fff980287c0, pCW=0x5555598d22b0, bSetFocus=false) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1350
    #86 0x00007ffff3b3bbc6 in SfxWorkWindow::UpdateChildWindows_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1299
    #87 0x00007ffff3b3b205 in SfxWorkWindow::UpdateObjectBars_Impl2 (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1247
    #88 0x00007ffff3b3a831 in SfxWorkWindow::UpdateObjectBars_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1095
    #89 0x00007ffff3ba83b3 in SfxDispatcher::Update_Impl (this=0x555556877340, bForce=true) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:1124
    #90 0x00007ffff3bfebbe in DispatcherUpdate_Impl (pArg=0x555556877340) at /home/michi/development/git/libreoffice/sfx2/source/control/shell.cxx:681
    #91 0x00007ffff0889f71 in Link<void*, void>::Call (this=0x55555e38cad0, data=0x555556877340) at include/tools/link.hxx:105
    #92 0x00007ffff08df2c8 in svtools::AsynchronLink::HandleCall_PostUserEvent (this=0x55555e38cad0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:66
    #93 0x00007ffff08df21d in svtools::AsynchronLink::LinkStubHandleCall_PostUserEvent (instance=0x55555e38cad0, data=0x0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:58
    #94 0x00007fffee4622d1 in Link<void*, void>::Call (this=0x55555e780b88, data=0x0) at include/tools/link.hxx:105
    #95 0x00007fffee45dbf1 in ImplHandleUserEvent (pSVEvent=0x55555e780b80) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2312
    #96 0x00007fffee45ab1f in ImplWindowFrameProc (_pWindow=0x555556a70090, nEvent=SalEvent::UserEvent, pEvent=0x55555e780b80) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2869
    #97 0x00007fffef031fec in SalFrame::CallCallback (this=0x5555569484e0, nEvent=SalEvent::UserEvent, pEvent=0x55555e780b80) at vcl/inc/salframe.hxx:310
    #98 0x00007fffef0584df in SalGenericDisplay::ProcessEvent (this=0x5555569f26e0, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #99 0x00007fffeea32ced in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7ffffffee430) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #100 0x00007fffeea32bbb in SalUserEventList::DispatchUserEvents (this=0x5555569f26e0, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #101 0x00007fffef058435 in SalGenericDisplay::DispatchInternalEvent (this=0x5555569f26e0, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #102 0x00007fffe647995f in call_userEventFn (data=0x5555555b3760) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:825
    #103 0x00007fffe9d04385 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #104 0x00007fffe9d065b7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #105 0x00007fffe9d0701f in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #106 0x00007fffe652062a in main_loop_run (pLoop=0x55555eb90ac0) at vcl/inc/unx/gtk/gtkdata.hxx:59
    #107 0x00007fffe64964ad in (anonymous namespace)::DialogRunner::run (this=0x55555eb76cc0) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:6768
    #108 0x00007fffe6491af0 in (anonymous namespace)::GtkInstanceDialog::run (this=0x55555eb76b60) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:10190
    #109 0x00007fff9dd55d03 in SdOutliner::ShowWrapAroundDialog (this=0x55555eb6a760) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1526
    #110 0x00007fff9dd4e88f in SdOutliner::EndOfSearch (this=0x55555eb6a760) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1432
    #111 0x00007fff9dd4f9e2 in SdOutliner::ProvideNextTextObject (this=0x55555eb6a760) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1399
    #112 0x00007fff9dd4e68b in SdOutliner::SpellNextDocument (this=0x55555eb6a760) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:393
    #113 0x00007fff9dd4fbc0 in SdOutliner::GetNextSpellSentence (this=0x55555eb6a760) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:436
    #114 0x00007fff9d8f4ee0 in sd::SpellDialogChildWindow::GetNextWrongSentence (this=0x55555e92cf20) at /home/michi/development/git/libreoffice/sd/source/ui/dlg/SpellDialogChildWindow.cxx:72
    #115 0x00007fff9480ddaa in svx::SpellDialog::GetNextSentence_Impl (this=0x55555e7bc0e0, pGuard=0x0, bUseSavedSentence=false, bRecheck=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:1050
    #116 0x00007fff9480caa4 in svx::SpellDialog::SpellContinue_Impl (this=0x55555e7bc0e0, pGuard=0x0, bUseSavedSentence=false, bIgnoreCurrentError=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:402
    #117 0x00007fff9480f0dd in svx::SpellDialog::Initialize (this=0x55555e7bc0e0) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:432
    #118 0x00007fff9485d131 in (anonymous namespace)::AbstractSpellDialog_Impl::Initialize (this=0x55555e75e580) at /home/michi/development/git/libreoffice/cui/source/factory/dlgfact.cxx:452
    #119 0x00007ffff27ef522 in svx::SpellDialogChildWindow::Initialize (this=0x55555e92cf20) at /home/michi/development/git/libreoffice/svx/source/dialog/SpellDialogChildWindow.cxx:49
    #120 0x00007ffff3aa0d49 in SfxChildWindow::CreateChildWindow (nId=10243, pParent=0x5555589410f0, pBindings=0x555556a7ef20, rInfo=...) at /home/michi/development/git/libreoffice/sfx2/source/appl/childwin.cxx:244
    #121 0x00007ffff3b3be5d in SfxWorkWindow::CreateChildWin_Impl (this=0x7fff980287c0, pCW=0x5555598d22b0, bSetFocus=false) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1350
    #122 0x00007ffff3b3bbc6 in SfxWorkWindow::UpdateChildWindows_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1299
    #123 0x00007ffff3b3b205 in SfxWorkWindow::UpdateObjectBars_Impl2 (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1247
    #124 0x00007ffff3b3a831 in SfxWorkWindow::UpdateObjectBars_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1095
    #125 0x00007ffff3ba83b3 in SfxDispatcher::Update_Impl (this=0x555556877340, bForce=true) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:1124
    #126 0x00007ffff3bfebbe in DispatcherUpdate_Impl (pArg=0x555556877340) at /home/michi/development/git/libreoffice/sfx2/source/control/shell.cxx:681
    #127 0x00007ffff0889f71 in Link<void*, void>::Call (this=0x55555a823ba0, data=0x555556877340) at include/tools/link.hxx:105
    #128 0x00007ffff08df2c8 in svtools::AsynchronLink::HandleCall_PostUserEvent (this=0x55555a823ba0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:66
    #129 0x00007ffff08df21d in svtools::AsynchronLink::LinkStubHandleCall_PostUserEvent (instance=0x55555a823ba0, data=0x0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:58
    #130 0x00007fffee4622d1 in Link<void*, void>::Call (this=0x55555e6ff308, data=0x0) at include/tools/link.hxx:105
    #131 0x00007fffee45dbf1 in ImplHandleUserEvent (pSVEvent=0x55555e6ff300) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2312
    #132 0x00007fffee45ab1f in ImplWindowFrameProc (_pWindow=0x555556a70090, nEvent=SalEvent::UserEvent, pEvent=0x55555e6ff300) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2869
    #133 0x00007fffef031fec in SalFrame::CallCallback (this=0x5555569484e0, nEvent=SalEvent::UserEvent, pEvent=0x55555e6ff300) at vcl/inc/salframe.hxx:310
    #134 0x00007fffef0584df in SalGenericDisplay::ProcessEvent (this=0x5555569f26e0, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #135 0x00007fffeea32ced in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7fffffff0c40) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #136 0x00007fffeea32bbb in SalUserEventList::DispatchUserEvents (this=0x5555569f26e0, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #137 0x00007fffef058435 in SalGenericDisplay::DispatchInternalEvent (this=0x5555569f26e0, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #138 0x00007fffe647995f in call_userEventFn (data=0x5555555b3760) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:825
    #139 0x00007fffe9d04385 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #140 0x00007fffe9d065b7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #141 0x00007fffe9d0701f in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #142 0x00007fffe652062a in main_loop_run (pLoop=0x55555e92fb70) at vcl/inc/unx/gtk/gtkdata.hxx:59
    #143 0x00007fffe64964ad in (anonymous namespace)::DialogRunner::run (this=0x55555e950a20) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:6768
    #144 0x00007fffe6491af0 in (anonymous namespace)::GtkInstanceDialog::run (this=0x55555e9508c0) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:10190
    #145 0x00007fff9dd55d03 in SdOutliner::ShowWrapAroundDialog (this=0x55555e8e0e30) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1526
    #146 0x00007fff9dd4e88f in SdOutliner::EndOfSearch (this=0x55555e8e0e30) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1432
    #147 0x00007fff9dd4f9e2 in SdOutliner::ProvideNextTextObject (this=0x55555e8e0e30) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1399
    #148 0x00007fff9dd4e68b in SdOutliner::SpellNextDocument (this=0x55555e8e0e30) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:393
    #149 0x00007fff9dd4fbc0 in SdOutliner::GetNextSpellSentence (this=0x55555e8e0e30) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:436
    #150 0x00007fff9d8f4ee0 in sd::SpellDialogChildWindow::GetNextWrongSentence (this=0x55555e8f0390) at /home/michi/development/git/libreoffice/sd/source/ui/dlg/SpellDialogChildWindow.cxx:72
    #151 0x00007fff9480ddaa in svx::SpellDialog::GetNextSentence_Impl (this=0x55555e9c6ac0, pGuard=0x0, bUseSavedSentence=false, bRecheck=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:1050
    #152 0x00007fff9480caa4 in svx::SpellDialog::SpellContinue_Impl (this=0x55555e9c6ac0, pGuard=0x0, bUseSavedSentence=false, bIgnoreCurrentError=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:402
    #153 0x00007fff9480f0dd in svx::SpellDialog::Initialize (this=0x55555e9c6ac0) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:432
    #154 0x00007fff9485d131 in (anonymous namespace)::AbstractSpellDialog_Impl::Initialize (this=0x55555e319180) at /home/michi/development/git/libreoffice/cui/source/factory/dlgfact.cxx:452
    #155 0x00007ffff27ef522 in svx::SpellDialogChildWindow::Initialize (this=0x55555e8f0390) at /home/michi/development/git/libreoffice/svx/source/dialog/SpellDialogChildWindow.cxx:49
    #156 0x00007ffff3aa0d49 in SfxChildWindow::CreateChildWindow (nId=10243, pParent=0x5555589410f0, pBindings=0x555556a7ef20, rInfo=...) at /home/michi/development/git/libreoffice/sfx2/source/appl/childwin.cxx:244
    #157 0x00007ffff3b3be5d in SfxWorkWindow::CreateChildWin_Impl (this=0x7fff980287c0, pCW=0x5555598d22b0, bSetFocus=false) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1350
    #158 0x00007ffff3b3bbc6 in SfxWorkWindow::UpdateChildWindows_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1299
    #159 0x00007ffff3b3b205 in SfxWorkWindow::UpdateObjectBars_Impl2 (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1247
    #160 0x00007ffff3b3a831 in SfxWorkWindow::UpdateObjectBars_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1095
    #161 0x00007ffff3ba83b3 in SfxDispatcher::Update_Impl (this=0x555556877340, bForce=true) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:1124
    #162 0x00007ffff3bfebbe in DispatcherUpdate_Impl (pArg=0x555556877340) at /home/michi/development/git/libreoffice/sfx2/source/control/shell.cxx:681
    #163 0x00007ffff0889f71 in Link<void*, void>::Call (this=0x55555e3f61c0, data=0x555556877340) at include/tools/link.hxx:105
    #164 0x00007ffff08df2c8 in svtools::AsynchronLink::HandleCall_PostUserEvent (this=0x55555e3f61c0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:66
    #165 0x00007ffff08df21d in svtools::AsynchronLink::LinkStubHandleCall_PostUserEvent (instance=0x55555e3f61c0, data=0x0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:58
    #166 0x00007fffee4622d1 in Link<void*, void>::Call (this=0x55555e58c6e8, data=0x0) at include/tools/link.hxx:105
    #167 0x00007fffee45dbf1 in ImplHandleUserEvent (pSVEvent=0x55555e58c6e0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2312
    #168 0x00007fffee45ab1f in ImplWindowFrameProc (_pWindow=0x555556a70090, nEvent=SalEvent::UserEvent, pEvent=0x55555e58c6e0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2869
    #169 0x00007fffef031fec in SalFrame::CallCallback (this=0x5555569484e0, nEvent=SalEvent::UserEvent, pEvent=0x55555e58c6e0) at vcl/inc/salframe.hxx:310
    #170 0x00007fffef0584df in SalGenericDisplay::ProcessEvent (this=0x5555569f26e0, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #171 0x00007fffeea32ced in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7fffffff3450) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #172 0x00007fffeea32bbb in SalUserEventList::DispatchUserEvents (this=0x5555569f26e0, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #173 0x00007fffef058435 in SalGenericDisplay::DispatchInternalEvent (this=0x5555569f26e0, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #174 0x00007fffe647995f in call_userEventFn (data=0x5555555b3760) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:825
    #175 0x00007fffe9d04385 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #176 0x00007fffe9d065b7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #177 0x00007fffe9d0701f in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #178 0x00007fffe652062a in main_loop_run (pLoop=0x55555e8ec500) at vcl/inc/unx/gtk/gtkdata.hxx:59
    #179 0x00007fffe64964ad in (anonymous namespace)::DialogRunner::run (this=0x55555e867400) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:6768
    #180 0x00007fffe6491af0 in (anonymous namespace)::GtkInstanceDialog::run (this=0x55555e8672a0) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:10190
    #181 0x00007fff9dd55d03 in SdOutliner::ShowWrapAroundDialog (this=0x55555e859950) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1526
    #182 0x00007fff9dd4e88f in SdOutliner::EndOfSearch (this=0x55555e859950) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1432
    #183 0x00007fff9dd4f9e2 in SdOutliner::ProvideNextTextObject (this=0x55555e859950) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1399
    #184 0x00007fff9dd4e68b in SdOutliner::SpellNextDocument (this=0x55555e859950) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:393
    #185 0x00007fff9dd4fbc0 in SdOutliner::GetNextSpellSentence (this=0x55555e859950) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:436
    #186 0x00007fff9d8f4ee0 in sd::SpellDialogChildWindow::GetNextWrongSentence (this=0x55555e7623d0) at /home/michi/development/git/libreoffice/sd/source/ui/dlg/SpellDialogChildWindow.cxx:72
    #187 0x00007fff9480ddaa in svx::SpellDialog::GetNextSentence_Impl (this=0x55555e4fc700, pGuard=0x0, bUseSavedSentence=false, bRecheck=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:1050
    #188 0x00007fff9480caa4 in svx::SpellDialog::SpellContinue_Impl (this=0x55555e4fc700, pGuard=0x0, bUseSavedSentence=false, bIgnoreCurrentError=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:402
    #189 0x00007fff9480f0dd in svx::SpellDialog::Initialize (this=0x55555e4fc700) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:432
    #190 0x00007fff9485d131 in (anonymous namespace)::AbstractSpellDialog_Impl::Initialize (this=0x555558f1e9c0) at /home/michi/development/git/libreoffice/cui/source/factory/dlgfact.cxx:452
    #191 0x00007ffff27ef522 in svx::SpellDialogChildWindow::Initialize (this=0x55555e7623d0) at /home/michi/development/git/libreoffice/svx/source/dialog/SpellDialogChildWindow.cxx:49
    #192 0x00007ffff3aa0d49 in SfxChildWindow::CreateChildWindow (nId=10243, pParent=0x5555589410f0, pBindings=0x555556a7ef20, rInfo=...) at /home/michi/development/git/libreoffice/sfx2/source/appl/childwin.cxx:244
    #193 0x00007ffff3b3be5d in SfxWorkWindow::CreateChildWin_Impl (this=0x7fff980287c0, pCW=0x5555598d22b0, bSetFocus=false) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1350
    #194 0x00007ffff3b3bbc6 in SfxWorkWindow::UpdateChildWindows_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1299
    #195 0x00007ffff3b3b205 in SfxWorkWindow::UpdateObjectBars_Impl2 (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1247
    #196 0x00007ffff3b3a831 in SfxWorkWindow::UpdateObjectBars_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1095
    #197 0x00007ffff3ba83b3 in SfxDispatcher::Update_Impl (this=0x555556877340, bForce=true) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:1124
    #198 0x00007ffff3bfebbe in DispatcherUpdate_Impl (pArg=0x555556877340) at /home/michi/development/git/libreoffice/sfx2/source/control/shell.cxx:681
    #199 0x00007ffff0889f71 in Link<void*, void>::Call (this=0x55555e45d520, data=0x555556877340) at include/tools/link.hxx:105
    #200 0x00007ffff08df2c8 in svtools::AsynchronLink::HandleCall_PostUserEvent (this=0x55555e45d520) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:66
    #201 0x00007ffff08df21d in svtools::AsynchronLink::LinkStubHandleCall_PostUserEvent (instance=0x55555e45d520, data=0x0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:58
    #202 0x00007fffee4622d1 in Link<void*, void>::Call (this=0x555559999828, data=0x0) at include/tools/link.hxx:105
    #203 0x00007fffee45dbf1 in ImplHandleUserEvent (pSVEvent=0x555559999820) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2312
    #204 0x00007fffee45ab1f in ImplWindowFrameProc (_pWindow=0x555556a70090, nEvent=SalEvent::UserEvent, pEvent=0x555559999820) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2869
    #205 0x00007fffef031fec in SalFrame::CallCallback (this=0x5555569484e0, nEvent=SalEvent::UserEvent, pEvent=0x555559999820) at vcl/inc/salframe.hxx:310
    #206 0x00007fffef0584df in SalGenericDisplay::ProcessEvent (this=0x5555569f26e0, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #207 0x00007fffeea32ced in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7fffffff5c60) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #208 0x00007fffeea32bbb in SalUserEventList::DispatchUserEvents (this=0x5555569f26e0, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #209 0x00007fffef058435 in SalGenericDisplay::DispatchInternalEvent (this=0x5555569f26e0, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #210 0x00007fffe647995f in call_userEventFn (data=0x5555555b3760) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:825
    #211 0x00007fffe9d04385 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #212 0x00007fffe9d065b7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #213 0x00007fffe9d0701f in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #214 0x00007fffe652062a in main_loop_run (pLoop=0x55555e75b650) at vcl/inc/unx/gtk/gtkdata.hxx:59
    #215 0x00007fffe64964ad in (anonymous namespace)::DialogRunner::run (this=0x55555e6e17e0) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:6768
    #216 0x00007fffe6491af0 in (anonymous namespace)::GtkInstanceDialog::run (this=0x55555e6e1680) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:10190
    #217 0x00007fff9dd55d03 in SdOutliner::ShowWrapAroundDialog (this=0x55555e6be710) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1526
    #218 0x00007fff9dd4e88f in SdOutliner::EndOfSearch (this=0x55555e6be710) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1432
    #219 0x00007fff9dd4f9e2 in SdOutliner::ProvideNextTextObject (this=0x55555e6be710) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1399
    #220 0x00007fff9dd4e68b in SdOutliner::SpellNextDocument (this=0x55555e6be710) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:393
    #221 0x00007fff9dd4fbc0 in SdOutliner::GetNextSpellSentence (this=0x55555e6be710) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:436
    #222 0x00007fff9d8f4ee0 in sd::SpellDialogChildWindow::GetNextWrongSentence (this=0x555558b3fbc0) at /home/michi/development/git/libreoffice/sd/source/ui/dlg/SpellDialogChildWindow.cxx:72
    #223 0x00007fff9480ddaa in svx::SpellDialog::GetNextSentence_Impl (this=0x55555e586600, pGuard=0x0, bUseSavedSentence=false, bRecheck=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:1050
    #224 0x00007fff9480caa4 in svx::SpellDialog::SpellContinue_Impl (this=0x55555e586600, pGuard=0x0, bUseSavedSentence=false, bIgnoreCurrentError=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:402
    #225 0x00007fff9480f0dd in svx::SpellDialog::Initialize (this=0x55555e586600) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:432
    #226 0x00007fff9485d131 in (anonymous namespace)::AbstractSpellDialog_Impl::Initialize (this=0x55555e52b360) at /home/michi/development/git/libreoffice/cui/source/factory/dlgfact.cxx:452
    #227 0x00007ffff27ef522 in svx::SpellDialogChildWindow::Initialize (this=0x555558b3fbc0) at /home/michi/development/git/libreoffice/svx/source/dialog/SpellDialogChildWindow.cxx:49
    #228 0x00007ffff3aa0d49 in SfxChildWindow::CreateChildWindow (nId=10243, pParent=0x5555589410f0, pBindings=0x555556a7ef20, rInfo=...) at /home/michi/development/git/libreoffice/sfx2/source/appl/childwin.cxx:244
    #229 0x00007ffff3b3be5d in SfxWorkWindow::CreateChildWin_Impl (this=0x7fff980287c0, pCW=0x5555598d22b0, bSetFocus=false) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1350
    #230 0x00007ffff3b3bbc6 in SfxWorkWindow::UpdateChildWindows_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1299
    #231 0x00007ffff3b3b205 in SfxWorkWindow::UpdateObjectBars_Impl2 (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1247
    #232 0x00007ffff3b3a831 in SfxWorkWindow::UpdateObjectBars_Impl (this=0x7fff980287c0) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1095
    #233 0x00007ffff3ba83b3 in SfxDispatcher::Update_Impl (this=0x555556877340, bForce=true) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:1124
    #234 0x00007ffff3bfebbe in DispatcherUpdate_Impl (pArg=0x555556877340) at /home/michi/development/git/libreoffice/sfx2/source/control/shell.cxx:681
    #235 0x00007ffff0889f71 in Link<void*, void>::Call (this=0x55555e50f300, data=0x555556877340) at include/tools/link.hxx:105
    #236 0x00007ffff08df2c8 in svtools::AsynchronLink::HandleCall_PostUserEvent (this=0x55555e50f300) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:66
    #237 0x00007ffff08df21d in svtools::AsynchronLink::LinkStubHandleCall_PostUserEvent (instance=0x55555e50f300, data=0x0) at /home/michi/development/git/libreoffice/svtools/source/control/asynclink.cxx:58
    #238 0x00007fffee4622d1 in Link<void*, void>::Call (this=0x555559c0e478, data=0x0) at include/tools/link.hxx:105
    #239 0x00007fffee45dbf1 in ImplHandleUserEvent (pSVEvent=0x555559c0e470) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2312
    #240 0x00007fffee45ab1f in ImplWindowFrameProc (_pWindow=0x555556a70090, nEvent=SalEvent::UserEvent, pEvent=0x555559c0e470) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2869
    #241 0x00007fffef031fec in SalFrame::CallCallback (this=0x5555569484e0, nEvent=SalEvent::UserEvent, pEvent=0x555559c0e470) at vcl/inc/salframe.hxx:310
    #242 0x00007fffef0584df in SalGenericDisplay::ProcessEvent (this=0x5555569f26e0, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #243 0x00007fffeea32ced in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7fffffff8470) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #244 0x00007fffeea32bbb in SalUserEventList::DispatchUserEvents (this=0x5555569f26e0, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #245 0x00007fffef058435 in SalGenericDisplay::DispatchInternalEvent (this=0x5555569f26e0, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #246 0x00007fffe647995f in call_userEventFn (data=0x5555555b3760) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:825
    #247 0x00007fffe9d04385 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #248 0x00007fffe9d065b7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #249 0x00007fffe9d0701f in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #250 0x00007fffe652062a in main_loop_run (pLoop=0x55555e56d830) at vcl/inc/unx/gtk/gtkdata.hxx:59
    #251 0x00007fffe64964ad in (anonymous namespace)::DialogRunner::run (this=0x555558b52070) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:6768
    #252 0x00007fffe6491af0 in (anonymous namespace)::GtkInstanceDialog::run (this=0x555558b51f10) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:10190
    #253 0x00007fff9dd55d03 in SdOutliner::ShowWrapAroundDialog (this=0x555559646c20) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1526
    #254 0x00007fff9dd4e88f in SdOutliner::EndOfSearch (this=0x555559646c20) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1432
    #255 0x00007fff9dd4f9e2 in SdOutliner::ProvideNextTextObject (this=0x555559646c20) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:1399
    #256 0x00007fff9dd4e68b in SdOutliner::SpellNextDocument (this=0x555559646c20) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:393
    #257 0x00007fff9dd4fbc0 in SdOutliner::GetNextSpellSentence (this=0x555559646c20) at /home/michi/development/git/libreoffice/sd/source/ui/view/Outliner.cxx:436
    #258 0x00007fff9d8f4ee0 in sd::SpellDialogChildWindow::GetNextWrongSentence (this=0x55555e44ba10) at /home/michi/development/git/libreoffice/sd/source/ui/dlg/SpellDialogChildWindow.cxx:72
    #259 0x00007fff9480ddaa in svx::SpellDialog::GetNextSentence_Impl (this=0x55555e445f10, pGuard=0x0, bUseSavedSentence=false, bRecheck=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:1050
    #260 0x00007fff9480caa4 in svx::SpellDialog::SpellContinue_Impl (this=0x55555e445f10, pGuard=0x0, bUseSavedSentence=false, bIgnoreCurrentError=false) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:402
    #261 0x00007fff9480f0dd in svx::SpellDialog::Initialize (this=0x55555e445f10) at /home/michi/development/git/libreoffice/cui/source/dialogs/SpellDialog.cxx:432
    #262 0x00007fff9485d131 in (anonymous namespace)::AbstractSpellDialog_Impl::Initialize (this=0x55555e3212b0) at /home/michi/development/git/libreoffice/cui/source/factory/dlgfact.cxx:452
    #263 0x00007ffff27ef522 in svx::SpellDialogChildWindow::Initialize (this=0x55555e44ba10) at /home/michi/development/git/libreoffice/svx/source/dialog/SpellDialogChildWindow.cxx:49
    #264 0x00007ffff3aa0d49 in SfxChildWindow::CreateChildWindow (nId=10243, pParent=0x5555589410f0, pBindings=0x555556a7ef20, rInfo=...) at /home/michi/development/git/libreoffice/sfx2/source/appl/childwin.cxx:244
    #265 0x00007ffff3b3be5d in SfxWorkWindow::CreateChildWin_Impl (this=0x7fff980287c0, pCW=0x5555598d22b0, bSetFocus=true) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1350
    #266 0x00007ffff3b3e0f3 in SfxWorkWindow::ToggleChildWindow_Impl (this=0x7fff980287c0, nId=10243, bSetFocus=true) at /home/michi/development/git/libreoffice/sfx2/source/appl/workwin.cxx:1835
    #267 0x00007ffff42110c9 in SfxViewFrame::ToggleChildWindow (this=0x555556819530, nId=10243) at /home/michi/development/git/libreoffice/sfx2/source/view/viewfrm.cxx:3703
    #268 0x00007fff9de38d3c in sd::DrawViewShell::Execute (this=0x555556b4b610, rReq=...) at /home/michi/development/git/libreoffice/sd/source/ui/view/drviews7.cxx:1976
    #269 0x00007fff9de64075 in SfxStubDrawViewShellExecute (pShell=0x555556b4b610, rReq=...) at workdir/SdiTarget/sd/sdi/sdslots.hxx:1575
    #270 0x00007ffff3ba6bfe in SfxDispatcher::Call_Impl (this=0x555556877340, rShell=..., rSlot=..., rReq=..., bRecord=true) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:256
    #271 0x00007ffff3bab4a6 in SfxDispatcher::Execute_ (this=0x555556877340, rShell=..., rSlot=..., rReq=..., eCallMode=SfxCallMode::RECORD) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:755
    #272 0x00007ffff3b9302e in SfxBindings::Execute_Impl (this=0x555556a7ef20, aReq=..., pSlot=0x7fff9df8d038 <aDrawViewShellSlots_Impl+10728>, pShell=0x555556b4b610)
        at /home/michi/development/git/libreoffice/sfx2/source/control/bindings.cxx:1045
    #273 0x00007ffff3c720cd in SfxDispatchController_Impl::dispatch (this=0x55555915d2e0, aURL=..., aArgs=empty uno::Sequence, rListener=empty uno::Reference) at /home/michi/development/git/libreoffice/sfx2/source/control/unoctitm.cxx:736
    #274 0x00007ffff3c70b84 in SfxOfficeDispatch::dispatch (this=0x55555915cfa0, aURL=..., aArgs=empty uno::Sequence) at /home/michi/development/git/libreoffice/sfx2/source/control/unoctitm.cxx:255
    #275 0x00007ffff09d3792 in svt::(anonymous namespace)::AsyncAccelExec::impl_ts_asyncCallback (this=0x55555e321fc0) at /home/michi/development/git/libreoffice/svtools/source/misc/acceleratorexecute.cxx:509
    #276 0x00007ffff09d34cd in svt::(anonymous namespace)::AsyncAccelExec::LinkStubimpl_ts_asyncCallback (instance=0x55555e321fc0, data=0x0) at /home/michi/development/git/libreoffice/svtools/source/misc/acceleratorexecute.cxx:501
    #277 0x00007fffee18f511 in Link<LinkParamNone*, void>::Call (this=0x55555e322060, data=0x0) at include/tools/link.hxx:105
    #278 0x00007fffeea21eea in vcl::EventPoster::DoEvent_Impl (this=0x55555e322058) at /home/michi/development/git/libreoffice/vcl/source/helper/evntpost.cxx:52
    #279 0x00007fffeea21e9d in vcl::EventPoster::LinkStubDoEvent_Impl (instance=0x55555e322058, data=0x0) at /home/michi/development/git/libreoffice/vcl/source/helper/evntpost.cxx:48
    #280 0x00007fffee4622d1 in Link<void*, void>::Call (this=0x55555e3148c8, data=0x0) at include/tools/link.hxx:105
    #281 0x00007fffee45dbf1 in ImplHandleUserEvent (pSVEvent=0x55555e3148c0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2312
    #282 0x00007fffee45ab1f in ImplWindowFrameProc (_pWindow=0x555556a70090, nEvent=SalEvent::UserEvent, pEvent=0x55555e3148c0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2869
    #283 0x00007fffef031fec in SalFrame::CallCallback (this=0x5555569484e0, nEvent=SalEvent::UserEvent, pEvent=0x55555e3148c0) at vcl/inc/salframe.hxx:310
    #284 0x00007fffef0584df in SalGenericDisplay::ProcessEvent (this=0x5555569f26e0, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #285 0x00007fffeea32ced in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7fffffffb850) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #286 0x00007fffeea32bbb in SalUserEventList::DispatchUserEvents (this=0x5555569f26e0, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #287 0x00007fffef058435 in SalGenericDisplay::DispatchInternalEvent (this=0x5555569f26e0, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #288 0x00007fffe647995f in call_userEventFn (data=0x5555555b3760) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:825
    #289 0x00007fffe9d04385 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #290 0x00007fffe9d065b7 in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #291 0x00007fffe9d06d20 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #292 0x00007fffe64785dc in GtkSalData::Yield (this=0x5555555b3760, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:403
    #293 0x00007fffe647d613 in GtkInstance::DoYield (this=0x5555555b3610, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:440
    #294 0x00007fffeeafec46 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:389
    #295 0x00007fffeeafe55f in Application::Yield () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:492
    #296 0x00007fffeeafe340 in Application::Execute () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:364
    #297 0x00007ffff7b21d05 in desktop::Desktop::Main (this=0x7fffffffd590) at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:1682
    #298 0x00007fffeeb2b356 in ImplSVMain () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:230
    #299 0x00007fffeeb2ce79 in SVMain () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:248
    #300 0x00007ffff7b9ba3a in soffice_main () at /home/michi/development/git/libreoffice/desktop/source/app/sofficemain.cxx:122
    #301 0x00005555555559fd in sal_main () at /home/michi/development/git/libreoffice/desktop/source/app/main.c:51
    #302 0x00005555555559d7 in main (argc=2, argv=0x7fffffffd798) at /home/michi/development/git/libreoffice/desktop/source/app/main.c:49

Change-Id: Ic2e12a1ef163bb4ece04d631c92cc926bcbd0d5e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191950
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 6, 2025
When the TreeView has special checkboxes enabled,
block signals while calling QStandardItem::setCheckable
for the item in the first column. This prevents triggering
the QAbstractItemModel::dataChanged signal which would trigger
weld::TreeView::signal_toggled from
QtInstanceTreeView::handleDataChanged for the newly
inserted row.
Since the row is new, there is no logical change
from a previous value from the weld API perspective.

This fixes a crash otherwise seen with upcoming
commit

    Change-Id: I6262b0e9d235f9efc6cde81614d42ba28025989d
    Author: Michael Weghorn <[email protected]>
    Date:   Mon Oct 6 11:28:33 2025 +0200

        tdf#130857 qt weld: Support Writer "Caption" dialog

 when triggering the then newly supported dialog.

Backtrace:

    Thread 1 received signal SIGSEGV, Segmentation fault.
    rtl::OUString::isEmpty (this=0x18) at include/rtl/ustring.hxx:839
    839             return pData->length == 0;
    (rr) bt
    #0  rtl::OUString::isEmpty (this=0x18) at include/rtl/ustring.hxx:839
    #1  0x00007fd750a9fb07 in SwCaptionOptPage::UpdateEntry (this=0x55d1ea326dc0, nSelEntry=0) at /home/michi/development/git/libreoffice/sw/source/ui/config/optload.cxx:1235
    #2  0x00007fd750aa4e42 in SwCaptionOptPage::ToggleEntryHdl (this=0x55d1ea326dc0, rRowCol={...}) at /home/michi/development/git/libreoffice/sw/source/ui/config/optload.cxx:1344
    #3  0x00007fd750a9ce4d in SwCaptionOptPage::LinkStubToggleEntryHdl (instance=0x55d1ea326dc0, data={...}) at /home/michi/development/git/libreoffice/sw/source/ui/config/optload.cxx:1342
    #4  0x00007fd78ef17411 in Link<std::pair<weld::TreeIter const&, int> const&, void>::Call (this=0x55d1ea332d70, data={...}) at include/tools/link.hxx:105
    #5  0x00007fd78ef112f1 in weld::TreeView::signal_toggled (this=0x55d1ea332d00, rIterCol={...}) at include/vcl/weld.hxx:1011
    #6  0x00007fd78eef8507 in QtInstanceTreeView::handleDataChanged (this=0x55d1ea332b50, rTopLeft=..., rBottomRight=..., rRoles=...) at vcl/qt6/../qt5/QtInstanceTreeView.cxx:1214
    #7  0x00007fd78ef17f4a in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>, QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void, void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call(void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&), QtInstanceTreeView*, void**)::{lambda()#1}::operator()() const (this=0x7ffe16a0ef90)
            at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:127
    #8  0x00007fd78ef17eb9 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>, QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void, void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call(void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&), QtInstanceTreeView*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>, QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void, void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call(void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&), QtInstanceTreeView*, void**)::{lambda()#1}&&) (args=0x7ffe16a0f360, fn=...)
            at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:65
    #9  0x00007fd78ef17e83 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>, QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void, void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call
            (f=(void (QtInstanceTreeView::*)(QtInstanceTreeView * const, const QModelIndex &, const QModelIndex &, const QList<int> &)) 0x7fd78eef83b0 <QtInstanceTreeView::handleDataChanged(QModelIndex const&, QModelIndex const&, QList<int> const&)>, o=0x55d1ea332b50, arg=0x7ffe16a0f360) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:126
    #10 0x00007fd78ef17dfd in QtPrivate::FunctionPointer<void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call<QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void>
            (f=(void (QtInstanceTreeView::*)(QtInstanceTreeView * const, const QModelIndex &, const QModelIndex &, const QList<int> &)) 0x7fd78eef83b0 <QtInstanceTreeView::handleDataChanged(QModelIndex const&, QModelIndex const&, QList<int> const&)>, o=0x55d1ea332b50, arg=0x7ffe16a0f360) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:174
    #11 0x00007fd78ef17d26 in QtPrivate::QCallableObject<void (QtInstanceTreeView::*)(QModelIndex const&, QModelIndex const&, QList<int> const&), QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void>::impl
            (which=1, this_=0x55d1ea270ae0, r=0x55d1ea332b50, a=0x7ffe16a0f360, ret=0x0) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:545
    #12 0x00007fd78dce95e2 in QtPrivate::QSlotObjectBase::call (this=0x55d1ea270ae0, r=0x55d1ea332b50, a=0x7ffe16a0f360) at qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
    #13 0x00007fd78df1400f in doActivate<false> (sender=0x55d1ea25a160, signal_index=3, argv=0x7ffe16a0f360) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobject.cpp:4342
    #14 0x00007fd78df0a353 in QMetaObject::activate (sender=0x55d1ea25a160, m=0x7fd78e85ee68 <QAbstractItemModel::staticMetaObject>, local_signal_index=0, argv=0x7ffe16a0f360)
            at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobject.cpp:4402
    #15 0x00007fd78e36b5ce in QMetaObject::activate<void, QModelIndex, QModelIndex, QList<int> > (sender=0x55d1ea25a160, mo=0x7fd78e85ee68 <QAbstractItemModel::staticMetaObject>, local_signal_index=0, ret=0x0, args=..., args=..., args=...)
            at qtbase/src/corelib/kernel/qobjectdefs.h:319
    #16 0x00007fd78e3667f0 in QAbstractItemModel::dataChanged (this=0x55d1ea25a160, _t1=..., _t2=..., _t3=...) at qtbase/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:658
    #17 0x00007fd78e3f83c4 in QSortFilterProxyModelPrivate::_q_sourceDataChanged (this=0x55d1e2894d60, source_top_left=..., source_bottom_right=..., roles=...)
            at /home/michi/development/git/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:1528
    #18 0x00007fd78e43c83e in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>, QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void, void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call(void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&), QSortFilterProxyModelPrivate*, void**)::{lambda()#1}::operator()() const
            (this=0x7ffe16a0f8a0) at qtbase/src/corelib/kernel/qobjectdefs_impl.h:127
    #19 0x00007fd78e43c79d in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>, QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void, void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call(void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&), QSortFilterProxyModelPrivate*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>, QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void, void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call(void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&), QSortFilterProxyModelPrivate*, void**)::{lambda()#1}&&)
            (args=0x7ffe16a0fc80, fn=...) at qtbase/src/corelib/kernel/qobjectdefs_impl.h:65
    #20 0x00007fd78e43c757 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul, 2ul>, QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void, void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call
            (f=(void (QSortFilterProxyModelPrivate::*)(QSortFilterProxyModelPrivate * const, const QModelIndex &, const QModelIndex &, const QList<int> &)) 0x7fd78e3f74a0 <QSortFilterProxyModelPrivate::_q_sourceDataChanged(QModelIndex const&, QModelIndex const&, QList<int> const&)>, o=0x55d1e2894d60, arg=0x7ffe16a0fc80) at qtbase/src/corelib/kernel/qobjectdefs_impl.h:126
    #21 0x00007fd78e43c6c1 in QtPrivate::FunctionPointer<void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&)>::call<QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void>
            (f=(void (QSortFilterProxyModelPrivate::*)(QSortFilterProxyModelPrivate * const, const QModelIndex &, const QModelIndex &, const QList<int> &)) 0x7fd78e3f74a0 <QSortFilterProxyModelPrivate::_q_sourceDataChanged(QModelIndex const&, QModelIndex const&, QList<int> const&)>, o=0x55d1e2894d60, arg=0x7ffe16a0fc80) at qtbase/src/corelib/kernel/qobjectdefs_impl.h:174
    #22 0x00007fd78e43c5f0 in QtPrivate::QPrivateSlotObject<void (QSortFilterProxyModelPrivate::*)(QModelIndex const&, QModelIndex const&, QList<int> const&), QtPrivate::List<QModelIndex const&, QModelIndex const&, QList<int> const&>, void>::impl (which=1, this_=0x55d1ea25a960, r=0x55d1ea25a160, a=0x7ffe16a0fc80, ret=0x0) at qtbase/src/corelib/kernel/qobject_p.h:272
    #23 0x00007fd78dce95e2 in QtPrivate::QSlotObjectBase::call (this=0x55d1ea25a960, r=0x55d1ea25a160, a=0x7ffe16a0fc80) at qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
    #24 0x00007fd78df1400f in doActivate<false> (sender=0x55d1ea259540, signal_index=3, argv=0x7ffe16a0fc80) at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobject.cpp:4342
    #25 0x00007fd78df0a353 in QMetaObject::activate (sender=0x55d1ea259540, m=0x7fd78e85ee68 <QAbstractItemModel::staticMetaObject>, local_signal_index=0, argv=0x7ffe16a0fc80)
            at /home/michi/development/git/qt5/qtbase/src/corelib/kernel/qobject.cpp:4402
    #26 0x00007fd78e36b5ce in QMetaObject::activate<void, QModelIndex, QModelIndex, QList<int> > (sender=0x55d1ea259540, mo=0x7fd78e85ee68 <QAbstractItemModel::staticMetaObject>, local_signal_index=0, ret=0x0, args=..., args=..., args=...)
            at qtbase/src/corelib/kernel/qobjectdefs.h:319
    #27 0x00007fd78e3667f0 in QAbstractItemModel::dataChanged (this=0x55d1ea259540, _t1=..., _t2=..., _t3=...) at qtbase/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:658
    #28 0x00007fd78d23d7cd in QStandardItemModelPrivate::itemChanged (this=0x55d1ea259fb0, item=0x55d1ea28adf0, roles=...) at /home/michi/development/git/qt5/qtbase/src/gui/itemmodels/qstandarditemmodel.cpp:568
    #29 0x00007fd78d240701 in QStandardItem::setData (this=0x55d1ea28adf0, value=..., role=10) at /home/michi/development/git/qt5/qtbase/src/gui/itemmodels/qstandarditemmodel.cpp:909
    #30 0x00007fd78d240ccd in QStandardItem::setCheckable (this=0x55d1ea28adf0, checkable=true) at /home/michi/development/git/qt5/qtbase/src/gui/itemmodels/qstandarditemmodel.cpp:1345
    #31 0x00007fd78ef0387f in QtInstanceTreeView::insert(weld::TreeIter const*, int, rtl::OUString const*, rtl::OUString const*, rtl::OUString const*, VirtualDevice*, bool, weld::TreeIter*)::$_0::operator()() const (this=0x55d1ea28a600)
            at vcl/qt6/../qt5/QtInstanceTreeView.cxx:88
    #32 0x00007fd78ef03355 in std::__invoke_impl<void, QtInstanceTreeView::insert(weld::TreeIter const*, int, rtl::OUString const*, rtl::OUString const*, rtl::OUString const*, VirtualDevice*, bool, weld::TreeIter*)::$_0&>(std::__invoke_other, QtInstanceTreeView::insert(weld::TreeIter const*, int, rtl::OUString const*, rtl::OUString const*, rtl::OUString const*, VirtualDevice*, bool, weld::TreeIter*)::$_0&) (__f=...)
            at /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/invoke.h:63
    #33 0x00007fd78ef03315 in std::__invoke_r<void, QtInstanceTreeView::insert(weld::TreeIter const*, int, rtl::OUString const*, rtl::OUString const*, rtl::OUString const*, VirtualDevice*, bool, weld::TreeIter*)::$_0&>(QtInstanceTreeView::insert(weld::TreeIter const*, int, rtl::OUString const*, rtl::OUString const*, rtl::OUString const*, VirtualDevice*, bool, weld::TreeIter*)::$_0&) (__fn=...)
            at /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/invoke.h:113
    #34 0x00007fd78ef031fd in std::_Function_handler<void(), QtInstanceTreeView::insert(weld::TreeIter const*, int, rtl::OUString const*, rtl::OUString const*, rtl::OUString const*, VirtualDevice*, bool, weld::TreeIter*)::$_0>::_M_invoke
            (__functor=...) at /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/std_function.h:292
    #35 0x00007fd78ee2adde in std::function<void()>::operator() (this=0x7ffe16a10278) at /usr/lib/gcc/x86_64-linux-gnu/15/../../../../include/c++/15/bits/std_function.h:593
    #36 0x00007fd78ee2200f in QtInstance::RunInMainThread (this=0x55d1e1053a60, func=...) at vcl/qt6/../qt5/QtInstance.cxx:205
    #37 0x00007fd78eef9580 in QtInstanceTreeView::insert (this=0x55d1ea332b50, pParent=0x0, nPos=0, pStr=0x0, pId=0x0, pIconName=0x0, pImageSurface=0x0, bChildrenOnDemand=false, pRet=0x0) at vcl/qt6/../qt5/QtInstanceTreeView.cxx:62
    #38 0x00007fd78eef9735 in virtual thunk to QtInstanceTreeView::insert(weld::TreeIter const*, int, rtl::OUString const*, rtl::OUString const*, rtl::OUString const*, VirtualDevice*, bool, weld::TreeIter*) ()
            at /home/michi/development/git/libreoffice/instdir/program/libvclplug_qt6lo.so
    #39 0x00007fd750a91799 in weld::TreeView::insert (this=0x55d1ea332d00, nRow=-1, pRet=0x0) at include/vcl/weld.hxx:1053
    #40 0x00007fd750a90c92 in weld::TreeView::append (this=0x55d1ea332d00, pRet=0x0) at include/vcl/weld.hxx:1056
    #41 0x00007fd750a9e2e9 in SwCaptionOptPage::Reset (this=0x55d1ea326dc0, rSet=0x7ffe16a10990) at /home/michi/development/git/libreoffice/sw/source/ui/config/optload.cxx:1096
    #42 0x00007fd79c8bdd00 in SfxSingleTabDialogController::SetTabPage (this=0x7ffe16a10938, xTabPage=std::unique_ptr<SfxTabPage> = {...}) at /home/michi/development/git/libreoffice/sfx2/source/dialog/basedlgs.cxx:273
    #43 0x00007fd750a99f2d in SwCaptionOptDlg::SwCaptionOptDlg (this=0x7ffe16a10938, pParent=0x55d1e7e35f78, rSet=SfxItemSet of pool 0x55d1e2a38060 with parent 0x0 and Which ranges: [(1, 160), (1000, 1252), (4021, 4078)])
            at /home/michi/development/git/libreoffice/sw/source/ui/config/optload.cxx:854
    #44 0x00007fd750c21914 in SwCaptionDialog::CaptionHdl (this=0x7fd77c003ea0) at /home/michi/development/git/libreoffice/sw/source/ui/frmdlg/cption.cxx:374
    #45 0x00007fd750c2006d in SwCaptionDialog::LinkStubCaptionHdl (instance=0x7fd77c003ea0, data=...) at /home/michi/development/git/libreoffice/sw/source/ui/frmdlg/cption.cxx:371
    #46 0x00007fd7976aa801 in Link<weld::Button&, void>::Call (this=0x55d1e7e35748, data=...) at include/tools/link.hxx:105
    #47 0x00007fd79768582c in weld::Button::signal_clicked (this=0x55d1e7e35740) at include/vcl/weld.hxx:1563
    [...]

Change-Id: I7ced40096c5d8cf840db3a185688017e0fdae692
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191954
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 7, 2025
not clear to me why this happens, xFactory is null before the throw
in GetAvailableGrammarSvcs_Impl() and apparently non-null after, but
a lldb watch refuses to capture when/if it changes.

expanding the ternary into if/else + set appears to work. Rewrite
these three cases with a shared helper template to make it smaller
and possibly prettier and avoid the problem on macos.

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=257, address=0x2e006e00750073)
  * frame #0: 0x0000006e00750073
    frame #1: 0x00000001482b2910 libmergedlo.dylib`LngSvcMgr::GetAvailableGrammarSvcs_Impl() [inlined] com::sun::star::uno::Reference<com::sun::star::lang::XSingleServiceFactory>::~Reference(this=<unavailable>) at Reference.hxx:114:22
    frame #2: 0x00000001482b28fc libmergedlo.dylib`LngSvcMgr::GetAvailableGrammarSvcs_Impl() [inlined] com::sun::star::uno::Reference<com::sun::star::lang::XSingleServiceFactory>::~Reference(this=<unavailable>) at Reference.hxx:112:1
    frame #3: 0x00000001482b28fc libmergedlo.dylib`LngSvcMgr::GetAvailableGrammarSvcs_Impl(this=0x0000000131897d50) at lngsvcmgr.cxx:1040:5
    frame #4: 0x00000001482b43d8 libmergedlo.dylib`LngSvcMgr::getAvailableServices(this=0x0000000131897d50, rServiceName=0x000000014b554608, rLocale=0x000000016f871150) at lngsvcmgr.cxx:1394:9
    frame #5: 0x00000001482ac434 libmergedlo.dylib`LngSvcMgr::UpdateAll(this=0x0000000131897d50) at lngsvcmgr.cxx:655:46
    frame #6: 0x00000001482abd38 libmergedlo.dylib`LngSvcMgr::LngSvcMgr(this=0x0000000131897d50) at lngsvcmgr.cxx:414:5
    frame #7: 0x00000001482b7740 libmergedlo.dylib`::linguistic_LngSvcMgr_get_implementation(com::sun::star::uno::XComponentContext *, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> &) [inlined] LngSvcMgr::LngSvcMgr(this=0x0000000131897d50) at lngsvcmgr.cxx:402:1

which looks like the same problem as seen in:

commit 9ee7a84
Date:   Mon Apr 27 16:32:52 2020 +0200

    linguistic: make LngSvcMgr::GetAvailableGrammarSvcs_Impl() more readable

    It's not exactly clear why, but as a side effect, this makes a crash in
    uno::Reference::release() go away in the --enable-macosx-sandbox case.

Change-Id: I5b04512ca8dd542a391deec62eab5262371398bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192047
Tested-by: Jenkins
Tested-by: Caolán McNamara <[email protected]>
Reviewed-by: Caolán McNamara <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 8, 2025
not clear to me why this happens, xFactory is null before the throw
in GetAvailableGrammarSvcs_Impl() and apparently non-null after, but
a lldb watch refuses to capture when/if it changes.

expanding the ternary into if/else + set appears to work. Rewrite
these three cases with a shared helper template to make it smaller
and possibly prettier and avoid the problem on macos.

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=257, address=0x2e006e00750073)
  * frame #0: 0x0000006e00750073
    frame #1: 0x00000001482b2910 libmergedlo.dylib`LngSvcMgr::GetAvailableGrammarSvcs_Impl() [inlined] com::sun::star::uno::Reference<com::sun::star::lang::XSingleServiceFactory>::~Reference(this=<unavailable>) at Reference.hxx:114:22
    frame #2: 0x00000001482b28fc libmergedlo.dylib`LngSvcMgr::GetAvailableGrammarSvcs_Impl() [inlined] com::sun::star::uno::Reference<com::sun::star::lang::XSingleServiceFactory>::~Reference(this=<unavailable>) at Reference.hxx:112:1
    frame #3: 0x00000001482b28fc libmergedlo.dylib`LngSvcMgr::GetAvailableGrammarSvcs_Impl(this=0x0000000131897d50) at lngsvcmgr.cxx:1040:5
    frame #4: 0x00000001482b43d8 libmergedlo.dylib`LngSvcMgr::getAvailableServices(this=0x0000000131897d50, rServiceName=0x000000014b554608, rLocale=0x000000016f871150) at lngsvcmgr.cxx:1394:9
    frame #5: 0x00000001482ac434 libmergedlo.dylib`LngSvcMgr::UpdateAll(this=0x0000000131897d50) at lngsvcmgr.cxx:655:46
    frame #6: 0x00000001482abd38 libmergedlo.dylib`LngSvcMgr::LngSvcMgr(this=0x0000000131897d50) at lngsvcmgr.cxx:414:5
    frame #7: 0x00000001482b7740 libmergedlo.dylib`::linguistic_LngSvcMgr_get_implementation(com::sun::star::uno::XComponentContext *, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> &) [inlined] LngSvcMgr::LngSvcMgr(this=0x0000000131897d50) at lngsvcmgr.cxx:402:1

which looks like the same problem as seen in:

commit 9ee7a84
Date:   Mon Apr 27 16:32:52 2020 +0200

    linguistic: make LngSvcMgr::GetAvailableGrammarSvcs_Impl() more readable

    It's not exactly clear why, but as a side effect, this makes a crash in
    uno::Reference::release() go away in the --enable-macosx-sandbox case.

Change-Id: I5b04512ca8dd542a391deec62eab5262371398bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192046
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Jenkins CollaboraOffice <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 8, 2025
in headless vclplug too. Same deadlock can happen in that
mode as seen originally as:

commit d193d65
Date:   Thu Sep 8 17:30:38 2022 +0200

    tdf#151894 Pre-init NSSpellCHecker to avoid SolarMutex deadlock

current example bts are main on thread 1, vcl launched to run on
its event loop on 'lo_startmain' side thread.

(lldb) thread backtrace 1
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00000001966f489c libsystem_kernel.dylib`__psynch_mutexwait + 8
    frame #1: 0x0000000196730e58 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 84
    frame #2: 0x000000019672e840 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow + 220
    frame #3: 0x0000000105ad554c libuno_sal.dylib.3`osl_acquireMutex(pMutex=<unavailable>) at mutex.cxx:99:20
    frame #4: 0x000000015a6e8370 libmergedlo.dylib`SvpSalYieldMutex::doAcquire(unsigned int) [inlined] osl::Mutex::acquire(this=0x00000001497e7ec8) at mutex.hxx:63:20
    frame #5: 0x000000015a6e8368 libmergedlo.dylib`SvpSalYieldMutex::doAcquire(this=0x00000001497e7ec0, nLockCount=1) at svpinst.cxx:357:18
    frame #6: 0x000000015952fda8 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] comphelper::SolarMutex::acquire(this=0x00000001497e7ec0, nLockCount=1) at solarmutex.hxx:86:5
    frame #7: 0x000000015952fd98 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] osl::Guard<comphelper::SolarMutex>::Guard(this=<unavailable>, t=0x00000001497e7ec0) at mutex.hxx:144:17
    frame #8: 0x000000015952fd98 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] SolarMutexGuard::SolarMutexGuard(this=<unavailable>) at svapp.hxx:1344:11
    frame #9: 0x000000015952fd90 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] SolarMutexGuard::SolarMutexGuard(this=<unavailable>) at svapp.hxx:1344:78
    frame #10: 0x000000015952fd90 libmergedlo.dylib`doc_saveAs(pThis=0x000060000124a9a0, sUrl="/tmp/ErrareHumanumEst.fodg", pFormat="fodg", pFilterOptions="{\"DecomposePDF\":{\"type\":\"boolean\",\"value\":\"true\"}}") at init.cxx:3698:21
    ...
    frame #32: 0x0000000102965334 main + 228
(lldb) thread backtrace 11
  thread #11, name = 'lo_startmain'
    frame #0: 0x00000001966f53cc libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001967340e0 libsystem_pthread.dylib`_pthread_cond_wait + 984
    frame #2: 0x0000000197ddefd0 Foundation`-[NSOperation waitUntilFinished] + 488
    frame #3: 0x00000001967e28f8 CoreFoundation`_CFXNotificationPost + 804
    frame #4: 0x0000000197d9c680 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 88
    frame #5: 0x000000019a737554 AppKit`-[NSMenu insertItem:atIndex:] + 892
    frame #6: 0x000000019a8f1e00 AppKit`-[NSApplication(NSServicesMenuPrivate) _fillSpellCheckerPopupButton:] + 1380
    frame #7: 0x000000019a8f1550 AppKit`-[NSSpellChecker _fillSpellCheckerPopupButton:] + 76
    frame #8: 0x000000019a8f0688 AppKit`-[NSSpellChecker init] + 248
    frame #9: 0x000000019a8f0580 AppKit`__36+[NSSpellChecker sharedSpellChecker]_block_invoke + 20
    frame #10: 0x000000019659585c libdispatch.dylib`_dispatch_client_callout + 16
    frame #11: 0x000000019657ea28 libdispatch.dylib`_dispatch_once_callout + 32
    frame #12: 0x000000019a8f0568 AppKit`+[NSSpellChecker sharedSpellChecker] + 140
    frame #13: 0x0000000158dbb054 libmergedlo.dylib`MacSpellChecker::getLocales(this=0x00006000006fc500) at macspellimp.mm:118:42
    frame #14: 0x0000000158da1e94 libmergedlo.dylib`LngSvcMgr::GetAvailableSpellSvcs_Impl(this=0x000000014966e020) at lngsvcmgr.cxx:975:63
    frame #15: 0x0000000158da46f8 libmergedlo.dylib`LngSvcMgr::getAvailableServices(this=0x000000014966e020, rServiceName=0x000000015c044600, rLocale=0x000000016e3ae1d0) at lngsvcmgr.cxx:1369:9
    frame #16: 0x0000000158d9c434 libmergedlo.dylib`LngSvcMgr::UpdateAll(this=0x000000014966e020) at lngsvcmgr.cxx:655:46
    frame #17: 0x0000000158d9bd38 libmergedlo.dylib`LngSvcMgr::LngSvcMgr(this=0x000000014966e020) at lngsvcmgr.cxx:414:5
    frame #18: 0x0000000158da7a70 libmergedlo.dylib`::linguistic_LngSvcMgr_get_implementation(com::sun::star::uno::XComponentContext *, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> &) [inlined] LngSvcMgr::LngSvcMgr(this=0x000000014966e020) at lngsvcmgr.cxx:402:1
    frame #19: 0x0000000158da7a6c libmergedlo.dylib`linguistic_LngSvcMgr_get_implementation((null)=<unavailable>, (null)=<unavailable>) at lngsvcmgr.cxx:1816:30
    frame #20: 0x000000012dc30ee0 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] std::__1::__function::__value_func<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::operator()[abi:ne190102](this=0x0000000149747c90, __args=0x000000016e3ae310, __args=0x000000016e3ae308) const at function.h:430:12
    frame #21: 0x000000012dc30ec4 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] std::__1::function<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::operator()(this= Function = linguistic_LngSvcMgr_get_implementation , __arg=0x0000600000cc86b8, __arg=0x000000016e3ae308) const at function.h:989:10
    frame #22: 0x000000012dc30ec4 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(this=0x0000000149747c18, context=0x000000015c487110) at servicemanager.cxx:701:13
    frame #23: 0x000000012dc30d4c libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::createInstance(this=0x0000000149747c18, context=0x000000015c487110, singletonRequest=false) at servicemanager.cxx:666:30
    frame #24: 0x000000012dc34ed8 libuno_cppuhelpergcc3.dylib.3`non-virtual thunk to cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] cppuhelper::ServiceManager::createInstanceWithContext(this=<unavailable>, aServiceSpecifier=<unavailable>, Context=0x000000015c487110) at servicemanager.cxx:1002:36
    frame #25: 0x000000012dc34eb4 libuno_cppuhelpergcc3.dylib.3`non-virtual thunk to cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) at servicemanager.cxx:0
    frame #26: 0x00000001588b29c8 libmergedlo.dylib`com::sun::star::linguistic2::LinguServiceManager::create(the_context=0x000000015c487110) at LinguServiceManager.hpp:38:129
    frame #27: 0x00000001588b3444 libmergedlo.dylib`(anonymous namespace)::SpellDummy_Impl::GetSpell_Impl() [inlined] GetLngSvcMgr_Impl() at unolingu.cxx:60:52
    frame #28: 0x00000001588b3438 libmergedlo.dylib`(anonymous namespace)::SpellDummy_Impl::GetSpell_Impl(this=0x0000600002df4300) at unolingu.cxx:216:61
    frame #29: 0x00000001588b3314 libmergedlo.dylib`non-virtual thunk to (anonymous namespace)::SpellDummy_Impl::isValid(rtl::OUString const&, short, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) [inlined] (anonymous namespace)::SpellDummy_Impl::isValid(this=<unavailable>, rWord=<unavailable>, nLanguage=<unavailable>, rProperties=<unavailable>) at unolingu.cxx:248:5
    frame #30: 0x00000001588b3310 libmergedlo.dylib`non-virtual thunk to (anonymous namespace)::SpellDummy_Impl::isValid(rtl::OUString const&, short, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at unolingu.cxx:0
    frame #31: 0x00000001588405ec libmergedlo.dylib`ImpEditEngine::DoOnlineSpelling(this=0x0000000149859800, pThisNodeOnly=<unavailable>, bSpellAtCursorPos=<unavailable>, bInterruptible=<unavailable>) at impedit4.cxx:2480:37
    frame #32: 0x0000000134059498 libsdlo.dylib`SdDrawDocument::SpellObject(this=0x000000014961cb20, pObj=0x0000000149646150) at drawdoc4.cxx:885:16
    frame #33: 0x00000001340591b0 libsdlo.dylib`SdDrawDocument::OnlineSpellingHdl(this=0x000000014961cb20, (null)=<unavailable>) at drawdoc4.cxx:823:17
    frame #34: 0x000000015a52b9b0 libmergedlo.dylib`Scheduler::CallbackTaskScheduling() at scheduler.cxx:584:20
    frame #35: 0x000000015a6e7bf8 libmergedlo.dylib`SvpSalInstance::CheckTimeout(bool) [inlined] SalTimer::CallCallback(this=<unavailable>) at saltimer.hxx:53:13
    frame #36: 0x000000015a6e7bec libmergedlo.dylib`SvpSalInstance::CheckTimeout(this=<unavailable>, bExecuteTimers=true) at svpinst.cxx:167:53
    frame #37: 0x000000015a6e863c libmergedlo.dylib`SvpSalInstance::ImplYield(this=0x00006000008c50e0, bWait=true, bHandleAllCurrentEvents=false) at svpinst.cxx:430:17
    frame #38: 0x000000015a6e8950 libmergedlo.dylib`SvpSalInstance::DoYield(this=0x00006000008c50e0, bWait=true, bHandleAllCurrentEvents=false) at svpinst.cxx:504:21
    frame #39: 0x000000015a53d920 libmergedlo.dylib`ImplYield(i_bWait=true, i_bAllEvents=false) at svapp.cxx:389:48
    frame #40: 0x000000015a53d328 libmergedlo.dylib`Application::Yield() at svapp.cxx:492:5 [artificial]
    frame #41: 0x000000015a53d210 libmergedlo.dylib`Application::Execute() at svapp.cxx:364:13
    frame #42: 0x00000001594ffeb4 libmergedlo.dylib`desktop::Desktop::Main(this=0x000000016e3aeed0) at app.cxx:1680:13
    frame #43: 0x000000015a5475d0 libmergedlo.dylib`ImplSVMain() at svmain.cxx:228:35
    frame #44: 0xffffffffffffffff libmergedlo.dylib`SVMain()
    frame #45: 0x000000015951e5e4 libmergedlo.dylib`soffice_main at sofficemain.cxx:121:12
    frame #46: 0x00000001595669bc libmergedlo.dylib`lo_startmain((null)=<unavailable>) at init.cxx:7860:5
    frame #47: 0x0000000105ae59d8 libuno_sal.dylib.3`osl_thread_start_Impl(pData=0x00006000005cb330) at thread.cxx:240:9
    frame #48: 0x0000000196733c0c libsystem_pthread.dylib`_pthread_start + 136

Change-Id: I8d25ed364f131434ce4f738604ddcf3f586cf6d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192052
Tested-by: Jenkins CollaboraOffice <[email protected]>
Reviewed-by: Miklos Vajna <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 8, 2025
in headless vclplug too. Same deadlock can happen in that
mode as seen originally as:

commit d193d65
Date:   Thu Sep 8 17:30:38 2022 +0200

    tdf#151894 Pre-init NSSpellCHecker to avoid SolarMutex deadlock

current example bts are main on thread 1, vcl launched to run on
its event loop on 'lo_startmain' side thread.

(lldb) thread backtrace 1
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00000001966f489c libsystem_kernel.dylib`__psynch_mutexwait + 8
    frame #1: 0x0000000196730e58 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 84
    frame #2: 0x000000019672e840 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow + 220
    frame #3: 0x0000000105ad554c libuno_sal.dylib.3`osl_acquireMutex(pMutex=<unavailable>) at mutex.cxx:99:20
    frame #4: 0x000000015a6e8370 libmergedlo.dylib`SvpSalYieldMutex::doAcquire(unsigned int) [inlined] osl::Mutex::acquire(this=0x00000001497e7ec8) at mutex.hxx:63:20
    frame #5: 0x000000015a6e8368 libmergedlo.dylib`SvpSalYieldMutex::doAcquire(this=0x00000001497e7ec0, nLockCount=1) at svpinst.cxx:357:18
    frame #6: 0x000000015952fda8 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] comphelper::SolarMutex::acquire(this=0x00000001497e7ec0, nLockCount=1) at solarmutex.hxx:86:5
    frame #7: 0x000000015952fd98 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] osl::Guard<comphelper::SolarMutex>::Guard(this=<unavailable>, t=0x00000001497e7ec0) at mutex.hxx:144:17
    frame #8: 0x000000015952fd98 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] SolarMutexGuard::SolarMutexGuard(this=<unavailable>) at svapp.hxx:1344:11
    frame #9: 0x000000015952fd90 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] SolarMutexGuard::SolarMutexGuard(this=<unavailable>) at svapp.hxx:1344:78
    frame #10: 0x000000015952fd90 libmergedlo.dylib`doc_saveAs(pThis=0x000060000124a9a0, sUrl="/tmp/ErrareHumanumEst.fodg", pFormat="fodg", pFilterOptions="{\"DecomposePDF\":{\"type\":\"boolean\",\"value\":\"true\"}}") at init.cxx:3698:21
    ...
    frame #32: 0x0000000102965334 main + 228
(lldb) thread backtrace 11
  thread #11, name = 'lo_startmain'
    frame #0: 0x00000001966f53cc libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001967340e0 libsystem_pthread.dylib`_pthread_cond_wait + 984
    frame #2: 0x0000000197ddefd0 Foundation`-[NSOperation waitUntilFinished] + 488
    frame #3: 0x00000001967e28f8 CoreFoundation`_CFXNotificationPost + 804
    frame #4: 0x0000000197d9c680 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 88
    frame #5: 0x000000019a737554 AppKit`-[NSMenu insertItem:atIndex:] + 892
    frame #6: 0x000000019a8f1e00 AppKit`-[NSApplication(NSServicesMenuPrivate) _fillSpellCheckerPopupButton:] + 1380
    frame #7: 0x000000019a8f1550 AppKit`-[NSSpellChecker _fillSpellCheckerPopupButton:] + 76
    frame #8: 0x000000019a8f0688 AppKit`-[NSSpellChecker init] + 248
    frame #9: 0x000000019a8f0580 AppKit`__36+[NSSpellChecker sharedSpellChecker]_block_invoke + 20
    frame #10: 0x000000019659585c libdispatch.dylib`_dispatch_client_callout + 16
    frame #11: 0x000000019657ea28 libdispatch.dylib`_dispatch_once_callout + 32
    frame #12: 0x000000019a8f0568 AppKit`+[NSSpellChecker sharedSpellChecker] + 140
    frame #13: 0x0000000158dbb054 libmergedlo.dylib`MacSpellChecker::getLocales(this=0x00006000006fc500) at macspellimp.mm:118:42
    frame #14: 0x0000000158da1e94 libmergedlo.dylib`LngSvcMgr::GetAvailableSpellSvcs_Impl(this=0x000000014966e020) at lngsvcmgr.cxx:975:63
    frame #15: 0x0000000158da46f8 libmergedlo.dylib`LngSvcMgr::getAvailableServices(this=0x000000014966e020, rServiceName=0x000000015c044600, rLocale=0x000000016e3ae1d0) at lngsvcmgr.cxx:1369:9
    frame #16: 0x0000000158d9c434 libmergedlo.dylib`LngSvcMgr::UpdateAll(this=0x000000014966e020) at lngsvcmgr.cxx:655:46
    frame #17: 0x0000000158d9bd38 libmergedlo.dylib`LngSvcMgr::LngSvcMgr(this=0x000000014966e020) at lngsvcmgr.cxx:414:5
    frame #18: 0x0000000158da7a70 libmergedlo.dylib`::linguistic_LngSvcMgr_get_implementation(com::sun::star::uno::XComponentContext *, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> &) [inlined] LngSvcMgr::LngSvcMgr(this=0x000000014966e020) at lngsvcmgr.cxx:402:1
    frame #19: 0x0000000158da7a6c libmergedlo.dylib`linguistic_LngSvcMgr_get_implementation((null)=<unavailable>, (null)=<unavailable>) at lngsvcmgr.cxx:1816:30
    frame #20: 0x000000012dc30ee0 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] std::__1::__function::__value_func<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::operator()[abi:ne190102](this=0x0000000149747c90, __args=0x000000016e3ae310, __args=0x000000016e3ae308) const at function.h:430:12
    frame #21: 0x000000012dc30ec4 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] std::__1::function<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::operator()(this= Function = linguistic_LngSvcMgr_get_implementation , __arg=0x0000600000cc86b8, __arg=0x000000016e3ae308) const at function.h:989:10
    frame #22: 0x000000012dc30ec4 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(this=0x0000000149747c18, context=0x000000015c487110) at servicemanager.cxx:701:13
    frame #23: 0x000000012dc30d4c libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::createInstance(this=0x0000000149747c18, context=0x000000015c487110, singletonRequest=false) at servicemanager.cxx:666:30
    frame #24: 0x000000012dc34ed8 libuno_cppuhelpergcc3.dylib.3`non-virtual thunk to cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] cppuhelper::ServiceManager::createInstanceWithContext(this=<unavailable>, aServiceSpecifier=<unavailable>, Context=0x000000015c487110) at servicemanager.cxx:1002:36
    frame #25: 0x000000012dc34eb4 libuno_cppuhelpergcc3.dylib.3`non-virtual thunk to cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) at servicemanager.cxx:0
    frame #26: 0x00000001588b29c8 libmergedlo.dylib`com::sun::star::linguistic2::LinguServiceManager::create(the_context=0x000000015c487110) at LinguServiceManager.hpp:38:129
    frame #27: 0x00000001588b3444 libmergedlo.dylib`(anonymous namespace)::SpellDummy_Impl::GetSpell_Impl() [inlined] GetLngSvcMgr_Impl() at unolingu.cxx:60:52
    frame #28: 0x00000001588b3438 libmergedlo.dylib`(anonymous namespace)::SpellDummy_Impl::GetSpell_Impl(this=0x0000600002df4300) at unolingu.cxx:216:61
    frame #29: 0x00000001588b3314 libmergedlo.dylib`non-virtual thunk to (anonymous namespace)::SpellDummy_Impl::isValid(rtl::OUString const&, short, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) [inlined] (anonymous namespace)::SpellDummy_Impl::isValid(this=<unavailable>, rWord=<unavailable>, nLanguage=<unavailable>, rProperties=<unavailable>) at unolingu.cxx:248:5
    frame #30: 0x00000001588b3310 libmergedlo.dylib`non-virtual thunk to (anonymous namespace)::SpellDummy_Impl::isValid(rtl::OUString const&, short, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at unolingu.cxx:0
    frame #31: 0x00000001588405ec libmergedlo.dylib`ImpEditEngine::DoOnlineSpelling(this=0x0000000149859800, pThisNodeOnly=<unavailable>, bSpellAtCursorPos=<unavailable>, bInterruptible=<unavailable>) at impedit4.cxx:2480:37
    frame #32: 0x0000000134059498 libsdlo.dylib`SdDrawDocument::SpellObject(this=0x000000014961cb20, pObj=0x0000000149646150) at drawdoc4.cxx:885:16
    frame #33: 0x00000001340591b0 libsdlo.dylib`SdDrawDocument::OnlineSpellingHdl(this=0x000000014961cb20, (null)=<unavailable>) at drawdoc4.cxx:823:17
    frame #34: 0x000000015a52b9b0 libmergedlo.dylib`Scheduler::CallbackTaskScheduling() at scheduler.cxx:584:20
    frame #35: 0x000000015a6e7bf8 libmergedlo.dylib`SvpSalInstance::CheckTimeout(bool) [inlined] SalTimer::CallCallback(this=<unavailable>) at saltimer.hxx:53:13
    frame #36: 0x000000015a6e7bec libmergedlo.dylib`SvpSalInstance::CheckTimeout(this=<unavailable>, bExecuteTimers=true) at svpinst.cxx:167:53
    frame #37: 0x000000015a6e863c libmergedlo.dylib`SvpSalInstance::ImplYield(this=0x00006000008c50e0, bWait=true, bHandleAllCurrentEvents=false) at svpinst.cxx:430:17
    frame #38: 0x000000015a6e8950 libmergedlo.dylib`SvpSalInstance::DoYield(this=0x00006000008c50e0, bWait=true, bHandleAllCurrentEvents=false) at svpinst.cxx:504:21
    frame #39: 0x000000015a53d920 libmergedlo.dylib`ImplYield(i_bWait=true, i_bAllEvents=false) at svapp.cxx:389:48
    frame #40: 0x000000015a53d328 libmergedlo.dylib`Application::Yield() at svapp.cxx:492:5 [artificial]
    frame #41: 0x000000015a53d210 libmergedlo.dylib`Application::Execute() at svapp.cxx:364:13
    frame #42: 0x00000001594ffeb4 libmergedlo.dylib`desktop::Desktop::Main(this=0x000000016e3aeed0) at app.cxx:1680:13
    frame #43: 0x000000015a5475d0 libmergedlo.dylib`ImplSVMain() at svmain.cxx:228:35
    frame #44: 0xffffffffffffffff libmergedlo.dylib`SVMain()
    frame #45: 0x000000015951e5e4 libmergedlo.dylib`soffice_main at sofficemain.cxx:121:12
    frame #46: 0x00000001595669bc libmergedlo.dylib`lo_startmain((null)=<unavailable>) at init.cxx:7860:5
    frame #47: 0x0000000105ae59d8 libuno_sal.dylib.3`osl_thread_start_Impl(pData=0x00006000005cb330) at thread.cxx:240:9
    frame #48: 0x0000000196733c0c libsystem_pthread.dylib`_pthread_start + 136

Change-Id: I8d25ed364f131434ce4f738604ddcf3f586cf6d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192060
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 8, 2025
...as seen after
<llvm/llvm-project@6ca835b>
"[compiler-rt][asan] Add wcscpy/wcsncpy; enable wcscat/wcsncat on Windows
(#160493)" when building Extension_nlpsolver,

> ==1084736==ERROR: AddressSanitizer: wcsncpy-param-overlap: memory ranges [0x7cacc15e1480,0x7cacc15e1498) and [0x7cacc15e1480, 0x7cacc15e1498) overlap
>  #0 in wcsncpy at ~/github.com/llvm/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:664:5
>  #1 in lucene::util::StringBuffer::prepend(wchar_t const*, unsigned long) at workdir/UnpackedTarball/clucene/src/shared/CLucene/util/StringBuffer.cpp:233:7
>  #2 in lucene::util::StringBuffer::prepend(wchar_t const*) at workdir/UnpackedTarball/clucene/src/shared/CLucene/util/StringBuffer.cpp:214:7
>  #3 in lucene::analysis::standard::StandardTokenizer::ReadNumber(wchar_t const*, wchar_t, lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/standard/StandardTokenizer.cpp:181:11
>  #4 in lucene::analysis::standard::StandardTokenizer::ReadNumber(wchar_t const*, wchar_t, lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/standard/StandardTokenizer.cpp:238:16
>  #5 in lucene::analysis::standard::StandardTokenizer::next(lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/standard/StandardTokenizer.cpp:160:13
>  #6 in lucene::analysis::standard::StandardFilter::next(lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/standard/StandardFilter.cpp:27:16
>  #7 in lucene::analysis::LowerCaseFilter::next(lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/Analyzers.cpp:151:13
>  #8 in lucene::analysis::StopFilter::next(lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/Analyzers.cpp:218:16
>  #9 in lucene::index::DocumentsWriter::ThreadState::FieldData::invertField(lucene::document::Field*, lucene::analysis::Analyzer*, int) at workdir/UnpackedTarball/clucene/src/core/CLucene/index/DocumentsWriterThreadState.cpp:901:32
>  #10 in lucene::index::DocumentsWriter::ThreadState::FieldData::processField(lucene::analysis::Analyzer*) at workdir/UnpackedTarball/clucene/src/core/CLucene/index/DocumentsWriterThreadState.cpp:798:9
>  #11 in lucene::index::DocumentsWriter::ThreadState::processDocument(lucene::analysis::Analyzer*) at workdir/UnpackedTarball/clucene/src/core/CLucene/index/DocumentsWriterThreadState.cpp:557:24
>  #12 in lucene::index::DocumentsWriter::updateDocument(lucene::document::Document*, lucene::analysis::Analyzer*, lucene::index::Term*) at workdir/UnpackedTarball/clucene/src/core/CLucene/index/DocumentsWriter.cpp:946:16
>  #13 in lucene::index::DocumentsWriter::addDocument(lucene::document::Document*, lucene::analysis::Analyzer*) at workdir/UnpackedTarball/clucene/src/core/CLucene/index/DocumentsWriter.cpp:930:10
>  #14 in lucene::index::IndexWriter::addDocument(lucene::document::Document*, lucene::analysis::Analyzer*) at workdir/UnpackedTarball/clucene/src/core/CLucene/index/IndexWriter.cpp:685:28
>  #15 in HelpIndexer::indexDocuments() at helpcompiler/source/HelpIndexer.cxx:125:21
>  #16 in main at helpcompiler/source/HelpIndexer_main.cxx:79:22
>
> 0x7cacc15e1480 is located 0 bytes inside of 1024-byte region [0x7cacc15e1480,0x7cacc15e1880)
> allocated by thread T0 here:
>  #0 in malloc at ~/github.com/llvm/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:67:3
>  #1 in lucene::analysis::Token::growBuffer(unsigned long) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/AnalysisHeader.cpp:162:21
>  #2 in lucene::analysis::standard::StandardTokenizer::ReadAlphaNum(wchar_t, lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/standard/StandardTokenizer.cpp:260:8
>  #3 in lucene::analysis::standard::StandardTokenizer::next(lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/standard/StandardTokenizer.cpp:154:13
>  #4 in lucene::analysis::standard::StandardFilter::next(lucene::analysis::Token*) at workdir/UnpackedTarball/clucene/src/core/CLucene/analysis/standard/StandardFilter.cpp:27:16
>
> SUMMARY: AddressSanitizer: wcsncpy-param-overlap workdir/UnpackedTarball/clucene/src/shared/CLucene/util/StringBuffer.cpp:233:7 in lucene::util::StringBuffer::prepend(wchar_t const*, unsigned long)
> ==1084736==ABORTING
> make[1]: *** [nlpsolver/Extension_nlpsolver.mk:14: workdir/Extension/nlpsolver/root/help/de.done] Error 1

That wcsncpy move of a memory range onto itself looks a bit scary, but appears
to be by design of how recursive invocations of StandardTokenizer::ReadNumber
work.

Change-Id: I3ce9cc8343140ee287fac7db46b28e5adb7b67f9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192069
Reviewed-by: Stephan Bergmann <[email protected]>
Tested-by: Jenkins
tdf-gerrit pushed a commit that referenced this pull request Oct 11, 2025
Direct leak of 392 byte(s) in 1 object(s) allocated from:
  #0 0x5cc5b75ab144 in ___interceptor_malloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:67:3
  #1 0x5cc5ba1b928a in _cairo_image_surface_create_for_pixman_image /work/workdir/UnpackedTarball/cairo/src/cairo-image-surface.c:191:15
  #2 0x5cc5ba1b928a in _cairo_image_surface_create_with_pixman_format /work/workdir/UnpackedTarball/cairo/src/cairo-image-surface.c:370:15
  #3 0x5cc5ba200f40 in cairo_surface_create_similar_image /work/workdir/UnpackedTarball/cairo/src/cairo-surface.c:598:10
  #4 0x5cc5b8b16a5c in createTmpCompatibleCairoContext /src/libreoffice/vcl/headless/CairoCommon.cxx:621:31
  #5 0x5cc5b8b16a5c in CairoCommon::getCairoContext(bool, bool) const /src/libreoffice/vcl/headless/CairoCommon.cxx:432:14
  #6 0x5cc5b8b1a473 in CairoCommon::drawPolyPolygon(basegfx::B2DHomMatrix const&, basegfx::B2DPolyPolygon const&, double, bool) /src/libreoffice/vcl/headless/CairoCommon.cxx:959:19
  #7 0x5cc5b8558575 in SalGraphics::DrawPolyPolygon(basegfx::B2DHomMatrix const&, basegfx::B2DPolyPolygon const&, double, OutputDevice const&) /src/libreoffice/vcl/source/gdi/salgdilayout.cxx:499:5
  #8 0x5cc5b81c0ece in OutputDevice::DrawTransparentNatively(tools::PolyPolygon const&, unsigned short) /src/libreoffice/vcl/source/outdev/transparent.cxx:230:25
  #9 0x5cc5b81c0794 in OutputDevice::DrawTransparent(tools::PolyPolygon const&, unsigned short) /src/libreoffice/vcl/source/outdev/transparent.cxx:460:14
  #10 0x5cc5b83629c0 in GDIMetaFile::Play(OutputDevice&, unsigned long) /src/libreoffice/vcl/source/gdi/gdimtf.cxx:374:26

this happens because once a cairo context enters an error state no
functions have an effort on the cairo context.

The error is CAIRO_STATUS_INVALID_MATRIX and the matrix derived
from the polypolygon is degenerate.

The polypolygon contains a polygon with 0 points, which looks invalid,
detect that at import boundary rather than mess around with duplicating
with some with cairo_matrix_invert the invalid matrix at use location.

Change-Id: I3f6a53de3d2638146f969a6f0997c1a58f1669c3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192184
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 14, 2025
Fixes this assertion failure in a crash report:
	/opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1230: constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::back() [with _Tp = oox::xls::Sparkline; _Alloc = std::allocator<oox::xls::Sparkline>; reference = oox::xls::Sparkline&]: Assertion '!this->empty()' failed.

Backtrace from gdb on the core:
	#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
	#1  0x00007f906206e7f1 in __GI_abort () at abort.c:79
	#2  0x0000000000af43ee in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
	#3  0x00007f904d07ff87 in std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>)
	    at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#4  std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#5  oox::xls::SparklineGroupsContext::onCharacters(rtl::OUString const&) ()
	    at sc/source/filter/oox/SparklineFragment.cxx:232
	#6  0x00007f905cf0988a in oox::core::ContextHandler2Helper::processCollectedChars() ()
	    at include/rtl/ustring.hxx:546
	#7  0x00007f905cf09a05 in oox::core::ContextHandler2Helper::implEndElement (nElement=3475622, this=0x7f902403e880)
	    at oox/source/core/contexthandler2.cxx:123

gdb also points out that m_aSparklineGroups is non-empty.

Change-Id: Ib368550f6db0ed7ce4fbe37e056cd416208e7fe9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192393
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Jenkins CollaboraOffice <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 15, 2025
Fixes this assertion failure in a crash report:
	/opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1230: constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::back() [with _Tp = oox::xls::Sparkline; _Alloc = std::allocator<oox::xls::Sparkline>; reference = oox::xls::Sparkline&]: Assertion '!this->empty()' failed.

Backtrace from gdb on the core:
	#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
	#1  0x00007f906206e7f1 in __GI_abort () at abort.c:79
	#2  0x0000000000af43ee in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
	#3  0x00007f904d07ff87 in std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>)
	    at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#4  std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#5  oox::xls::SparklineGroupsContext::onCharacters(rtl::OUString const&) ()
	    at sc/source/filter/oox/SparklineFragment.cxx:232
	#6  0x00007f905cf0988a in oox::core::ContextHandler2Helper::processCollectedChars() ()
	    at include/rtl/ustring.hxx:546
	#7  0x00007f905cf09a05 in oox::core::ContextHandler2Helper::implEndElement (nElement=3475622, this=0x7f902403e880)
	    at oox/source/core/contexthandler2.cxx:123

gdb also points out that m_aSparklineGroups is non-empty.

Change-Id: Ib368550f6db0ed7ce4fbe37e056cd416208e7fe9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192424
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Jenkins
tdf-gerrit pushed a commit that referenced this pull request Oct 15, 2025
in headless vclplug too. Same deadlock can happen in that
mode as seen originally as:

commit d193d65
Date:   Thu Sep 8 17:30:38 2022 +0200

    tdf#151894 Pre-init NSSpellCHecker to avoid SolarMutex deadlock

current example bts are main on thread 1, vcl launched to run on
its event loop on 'lo_startmain' side thread.

(lldb) thread backtrace 1
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00000001966f489c libsystem_kernel.dylib`__psynch_mutexwait + 8
    frame #1: 0x0000000196730e58 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 84
    frame #2: 0x000000019672e840 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow + 220
    frame #3: 0x0000000105ad554c libuno_sal.dylib.3`osl_acquireMutex(pMutex=<unavailable>) at mutex.cxx:99:20
    frame #4: 0x000000015a6e8370 libmergedlo.dylib`SvpSalYieldMutex::doAcquire(unsigned int) [inlined] osl::Mutex::acquire(this=0x00000001497e7ec8) at mutex.hxx:63:20
    frame #5: 0x000000015a6e8368 libmergedlo.dylib`SvpSalYieldMutex::doAcquire(this=0x00000001497e7ec0, nLockCount=1) at svpinst.cxx:357:18
    frame #6: 0x000000015952fda8 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] comphelper::SolarMutex::acquire(this=0x00000001497e7ec0, nLockCount=1) at solarmutex.hxx:86:5
    frame #7: 0x000000015952fd98 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] osl::Guard<comphelper::SolarMutex>::Guard(this=<unavailable>, t=0x00000001497e7ec0) at mutex.hxx:144:17
    frame #8: 0x000000015952fd98 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] SolarMutexGuard::SolarMutexGuard(this=<unavailable>) at svapp.hxx:1344:11
    frame #9: 0x000000015952fd90 libmergedlo.dylib`doc_saveAs(_LibreOfficeKitDocument*, char const*, char const*, char const*) [inlined] SolarMutexGuard::SolarMutexGuard(this=<unavailable>) at svapp.hxx:1344:78
    frame #10: 0x000000015952fd90 libmergedlo.dylib`doc_saveAs(pThis=0x000060000124a9a0, sUrl="/tmp/ErrareHumanumEst.fodg", pFormat="fodg", pFilterOptions="{\"DecomposePDF\":{\"type\":\"boolean\",\"value\":\"true\"}}") at init.cxx:3698:21
    ...
    frame #32: 0x0000000102965334 main + 228
(lldb) thread backtrace 11
  thread #11, name = 'lo_startmain'
    frame #0: 0x00000001966f53cc libsystem_kernel.dylib`__psynch_cvwait + 8
    frame #1: 0x00000001967340e0 libsystem_pthread.dylib`_pthread_cond_wait + 984
    frame #2: 0x0000000197ddefd0 Foundation`-[NSOperation waitUntilFinished] + 488
    frame #3: 0x00000001967e28f8 CoreFoundation`_CFXNotificationPost + 804
    frame #4: 0x0000000197d9c680 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 88
    frame #5: 0x000000019a737554 AppKit`-[NSMenu insertItem:atIndex:] + 892
    frame #6: 0x000000019a8f1e00 AppKit`-[NSApplication(NSServicesMenuPrivate) _fillSpellCheckerPopupButton:] + 1380
    frame #7: 0x000000019a8f1550 AppKit`-[NSSpellChecker _fillSpellCheckerPopupButton:] + 76
    frame #8: 0x000000019a8f0688 AppKit`-[NSSpellChecker init] + 248
    frame #9: 0x000000019a8f0580 AppKit`__36+[NSSpellChecker sharedSpellChecker]_block_invoke + 20
    frame #10: 0x000000019659585c libdispatch.dylib`_dispatch_client_callout + 16
    frame #11: 0x000000019657ea28 libdispatch.dylib`_dispatch_once_callout + 32
    frame #12: 0x000000019a8f0568 AppKit`+[NSSpellChecker sharedSpellChecker] + 140
    frame #13: 0x0000000158dbb054 libmergedlo.dylib`MacSpellChecker::getLocales(this=0x00006000006fc500) at macspellimp.mm:118:42
    frame #14: 0x0000000158da1e94 libmergedlo.dylib`LngSvcMgr::GetAvailableSpellSvcs_Impl(this=0x000000014966e020) at lngsvcmgr.cxx:975:63
    frame #15: 0x0000000158da46f8 libmergedlo.dylib`LngSvcMgr::getAvailableServices(this=0x000000014966e020, rServiceName=0x000000015c044600, rLocale=0x000000016e3ae1d0) at lngsvcmgr.cxx:1369:9
    frame #16: 0x0000000158d9c434 libmergedlo.dylib`LngSvcMgr::UpdateAll(this=0x000000014966e020) at lngsvcmgr.cxx:655:46
    frame #17: 0x0000000158d9bd38 libmergedlo.dylib`LngSvcMgr::LngSvcMgr(this=0x000000014966e020) at lngsvcmgr.cxx:414:5
    frame #18: 0x0000000158da7a70 libmergedlo.dylib`::linguistic_LngSvcMgr_get_implementation(com::sun::star::uno::XComponentContext *, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> &) [inlined] LngSvcMgr::LngSvcMgr(this=0x000000014966e020) at lngsvcmgr.cxx:402:1
    frame #19: 0x0000000158da7a6c libmergedlo.dylib`linguistic_LngSvcMgr_get_implementation((null)=<unavailable>, (null)=<unavailable>) at lngsvcmgr.cxx:1816:30
    frame #20: 0x000000012dc30ee0 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] std::__1::__function::__value_func<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::operator()[abi:ne190102](this=0x0000000149747c90, __args=0x000000016e3ae310, __args=0x000000016e3ae308) const at function.h:430:12
    frame #21: 0x000000012dc30ec4 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] std::__1::function<com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>::operator()(this= Function = linguistic_LngSvcMgr_get_implementation , __arg=0x0000600000cc86b8, __arg=0x000000016e3ae308) const at function.h:989:10
    frame #22: 0x000000012dc30ec4 libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(this=0x0000000149747c18, context=0x000000015c487110) at servicemanager.cxx:701:13
    frame #23: 0x000000012dc30d4c libuno_cppuhelpergcc3.dylib.3`cppuhelper::ServiceManager::Data::Implementation::createInstance(this=0x0000000149747c18, context=0x000000015c487110, singletonRequest=false) at servicemanager.cxx:666:30
    frame #24: 0x000000012dc34ed8 libuno_cppuhelpergcc3.dylib.3`non-virtual thunk to cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) [inlined] cppuhelper::ServiceManager::createInstanceWithContext(this=<unavailable>, aServiceSpecifier=<unavailable>, Context=0x000000015c487110) at servicemanager.cxx:1002:36
    frame #25: 0x000000012dc34eb4 libuno_cppuhelpergcc3.dylib.3`non-virtual thunk to cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) at servicemanager.cxx:0
    frame #26: 0x00000001588b29c8 libmergedlo.dylib`com::sun::star::linguistic2::LinguServiceManager::create(the_context=0x000000015c487110) at LinguServiceManager.hpp:38:129
    frame #27: 0x00000001588b3444 libmergedlo.dylib`(anonymous namespace)::SpellDummy_Impl::GetSpell_Impl() [inlined] GetLngSvcMgr_Impl() at unolingu.cxx:60:52
    frame #28: 0x00000001588b3438 libmergedlo.dylib`(anonymous namespace)::SpellDummy_Impl::GetSpell_Impl(this=0x0000600002df4300) at unolingu.cxx:216:61
    frame #29: 0x00000001588b3314 libmergedlo.dylib`non-virtual thunk to (anonymous namespace)::SpellDummy_Impl::isValid(rtl::OUString const&, short, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) [inlined] (anonymous namespace)::SpellDummy_Impl::isValid(this=<unavailable>, rWord=<unavailable>, nLanguage=<unavailable>, rProperties=<unavailable>) at unolingu.cxx:248:5
    frame #30: 0x00000001588b3310 libmergedlo.dylib`non-virtual thunk to (anonymous namespace)::SpellDummy_Impl::isValid(rtl::OUString const&, short, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at unolingu.cxx:0
    frame #31: 0x00000001588405ec libmergedlo.dylib`ImpEditEngine::DoOnlineSpelling(this=0x0000000149859800, pThisNodeOnly=<unavailable>, bSpellAtCursorPos=<unavailable>, bInterruptible=<unavailable>) at impedit4.cxx:2480:37
    frame #32: 0x0000000134059498 libsdlo.dylib`SdDrawDocument::SpellObject(this=0x000000014961cb20, pObj=0x0000000149646150) at drawdoc4.cxx:885:16
    frame #33: 0x00000001340591b0 libsdlo.dylib`SdDrawDocument::OnlineSpellingHdl(this=0x000000014961cb20, (null)=<unavailable>) at drawdoc4.cxx:823:17
    frame #34: 0x000000015a52b9b0 libmergedlo.dylib`Scheduler::CallbackTaskScheduling() at scheduler.cxx:584:20
    frame #35: 0x000000015a6e7bf8 libmergedlo.dylib`SvpSalInstance::CheckTimeout(bool) [inlined] SalTimer::CallCallback(this=<unavailable>) at saltimer.hxx:53:13
    frame #36: 0x000000015a6e7bec libmergedlo.dylib`SvpSalInstance::CheckTimeout(this=<unavailable>, bExecuteTimers=true) at svpinst.cxx:167:53
    frame #37: 0x000000015a6e863c libmergedlo.dylib`SvpSalInstance::ImplYield(this=0x00006000008c50e0, bWait=true, bHandleAllCurrentEvents=false) at svpinst.cxx:430:17
    frame #38: 0x000000015a6e8950 libmergedlo.dylib`SvpSalInstance::DoYield(this=0x00006000008c50e0, bWait=true, bHandleAllCurrentEvents=false) at svpinst.cxx:504:21
    frame #39: 0x000000015a53d920 libmergedlo.dylib`ImplYield(i_bWait=true, i_bAllEvents=false) at svapp.cxx:389:48
    frame #40: 0x000000015a53d328 libmergedlo.dylib`Application::Yield() at svapp.cxx:492:5 [artificial]
    frame #41: 0x000000015a53d210 libmergedlo.dylib`Application::Execute() at svapp.cxx:364:13
    frame #42: 0x00000001594ffeb4 libmergedlo.dylib`desktop::Desktop::Main(this=0x000000016e3aeed0) at app.cxx:1680:13
    frame #43: 0x000000015a5475d0 libmergedlo.dylib`ImplSVMain() at svmain.cxx:228:35
    frame #44: 0xffffffffffffffff libmergedlo.dylib`SVMain()
    frame #45: 0x000000015951e5e4 libmergedlo.dylib`soffice_main at sofficemain.cxx:121:12
    frame #46: 0x00000001595669bc libmergedlo.dylib`lo_startmain((null)=<unavailable>) at init.cxx:7860:5
    frame #47: 0x0000000105ae59d8 libuno_sal.dylib.3`osl_thread_start_Impl(pData=0x00006000005cb330) at thread.cxx:240:9
    frame #48: 0x0000000196733c0c libsystem_pthread.dylib`_pthread_start + 136

Change-Id: I8d25ed364f131434ce4f738604ddcf3f586cf6d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192052
Tested-by: Jenkins CollaboraOffice <[email protected]>
Reviewed-by: Miklos Vajna <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 15, 2025
Fixes this assertion failure in a crash report:
	/opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1230: constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::back() [with _Tp = oox::xls::Sparkline; _Alloc = std::allocator<oox::xls::Sparkline>; reference = oox::xls::Sparkline&]: Assertion '!this->empty()' failed.

Backtrace from gdb on the core:
	#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
	#1  0x00007f906206e7f1 in __GI_abort () at abort.c:79
	#2  0x0000000000af43ee in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
	#3  0x00007f904d07ff87 in std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>)
	    at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#4  std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#5  oox::xls::SparklineGroupsContext::onCharacters(rtl::OUString const&) ()
	    at sc/source/filter/oox/SparklineFragment.cxx:232
	#6  0x00007f905cf0988a in oox::core::ContextHandler2Helper::processCollectedChars() ()
	    at include/rtl/ustring.hxx:546
	#7  0x00007f905cf09a05 in oox::core::ContextHandler2Helper::implEndElement (nElement=3475622, this=0x7f902403e880)
	    at oox/source/core/contexthandler2.cxx:123

gdb also points out that m_aSparklineGroups is non-empty.

Change-Id: Ib368550f6db0ed7ce4fbe37e056cd416208e7fe9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192393
Reviewed-by: Caolán McNamara <[email protected]>
Tested-by: Jenkins CollaboraOffice <[email protected]>
(cherry picked from commit c70e355)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192432
Reviewed-by: Andras Timar <[email protected]>
Tested-by: Andras Timar <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 20, 2025
Fixes this assertion failure in a crash report:
	/opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1230: constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::back() [with _Tp = oox::xls::Sparkline; _Alloc = std::allocator<oox::xls::Sparkline>; reference = oox::xls::Sparkline&]: Assertion '!this->empty()' failed.

Backtrace from gdb on the core:
	#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
	#1  0x00007f906206e7f1 in __GI_abort () at abort.c:79
	#2  0x0000000000af43ee in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
	#3  0x00007f904d07ff87 in std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>)
	    at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#4  std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#5  oox::xls::SparklineGroupsContext::onCharacters(rtl::OUString const&) ()
	    at sc/source/filter/oox/SparklineFragment.cxx:232
	#6  0x00007f905cf0988a in oox::core::ContextHandler2Helper::processCollectedChars() ()
	    at include/rtl/ustring.hxx:546
	#7  0x00007f905cf09a05 in oox::core::ContextHandler2Helper::implEndElement (nElement=3475622, this=0x7f902403e880)
	    at oox/source/core/contexthandler2.cxx:123

gdb also points out that m_aSparklineGroups is non-empty.

Change-Id: Ib368550f6db0ed7ce4fbe37e056cd416208e7fe9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192424
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Jenkins
(cherry picked from commit cde426b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192722
Reviewed-by: Xisco Fauli <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 20, 2025
Fixes this assertion failure in a crash report:
	/opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1230: constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::back() [with _Tp = oox::xls::Sparkline; _Alloc = std::allocator<oox::xls::Sparkline>; reference = oox::xls::Sparkline&]: Assertion '!this->empty()' failed.

Backtrace from gdb on the core:
	#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
	#1  0x00007f906206e7f1 in __GI_abort () at abort.c:79
	#2  0x0000000000af43ee in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
	#3  0x00007f904d07ff87 in std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>)
	    at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#4  std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#5  oox::xls::SparklineGroupsContext::onCharacters(rtl::OUString const&) ()
	    at sc/source/filter/oox/SparklineFragment.cxx:232
	#6  0x00007f905cf0988a in oox::core::ContextHandler2Helper::processCollectedChars() ()
	    at include/rtl/ustring.hxx:546
	#7  0x00007f905cf09a05 in oox::core::ContextHandler2Helper::implEndElement (nElement=3475622, this=0x7f902403e880)
	    at oox/source/core/contexthandler2.cxx:123

gdb also points out that m_aSparklineGroups is non-empty.

Change-Id: Ib368550f6db0ed7ce4fbe37e056cd416208e7fe9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192424
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Jenkins
(cherry picked from commit cde426b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192721
Reviewed-by: Xisco Fauli <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 20, 2025
...in CppunitTest_sd_pdf_import_test and CppunitTest_sd_export_tests,

> workdir/UnpackedTarball/afdko/c/shared/source/t1write/t1write.c:379:21: runtime error: signed integer overflow: 47774 * 52845 cannot be represented in type 'int'
>  #0 in saveCstr at workdir/UnpackedTarball/afdko/c/shared/source/t1write/t1write.c:379:21
>  #1 in saveSubr at workdir/UnpackedTarball/afdko/c/shared/source/t1write/t1write.c:572:9
>  #2 in saveStdSubr at workdir/UnpackedTarball/afdko/c/shared/source/t1write/t1write.c:587:11
>  #3 in saveStdSubrs at workdir/UnpackedTarball/afdko/c/shared/source/t1write/t1write.c:611:5
>  #4 in t1wBegFont at workdir/UnpackedTarball/afdko/c/shared/source/t1write/t1write.c:2103:5
>  #5 in t1_BegFont at workdir/UnpackedTarball/afdko/c/shared/source/tx_shared/tx_shared.c:2230:13
>  #6 in ttrReadFont at workdir/UnpackedTarball/afdko/c/shared/source/tx_shared/tx_shared.c:4956:5
>  #7 in convertTx(txCtx_*) at vcl/source/gdi/embeddedfontsafdko.cxx:55:17
>  #8 in EmbeddedFontsManager::tx_t1(rtl::OUString const&, rtl::OUString const&) at vcl/source/gdi/embeddedfontsafdko.cxx:116:19
>  #9 in toPfaCID(SubSetInfo&, rtl::OUString const&, rtl::OUString const&, bool&, std::__debug::map<int, int, std::less<int>, std::allocator<std::pair<int const, int>>>&, rtl::OString&, rtl::OString&, rtl::OString&) at svx/source/svdraw/svdpdf.cxx:1189:14
>  #10 in ImpSdrPdfImport::convertToOTF(long, SubSetInfo&, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, std::basic_string_view<char16_t, std::char_traits<char16_t>>, std::__debug::vector<unsigned char, std::allocator<unsigned char>> const&) at svx/source/svdraw/svdpdf.cxx:1674:10
>  #11 in ImpSdrPdfImport::CollectFonts() at svx/source/svdraw/svdpdf.cxx:328:27
>  #12 in ImpSdrPdfImport::ImpSdrPdfImport(SdrModel&, o3tl::strong_int<short, SdrLayerIDTag>, tools::Rectangle const&, Graphic const&) at svx/source/svdraw/svdpdf.cxx:122:5
>  #13 in SdrEditView::DoImportMarkedMtf(SvdProgressInfo*) at svx/source/svdraw/svdedtv2.cxx:2168:37
>  #14 in testImportSimpleText::TestBody() at sd/qa/unit/SdrPdfImportTest.cxx:122:32

etc. and

> workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/recode.c:1744:17: runtime error: left shift of negative value -51
>  #0 in t1parse at workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/recode.c:1744:17
>  #1 in cstrRecode at workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/recode.c:3279:11
>  #2 in recodeAddChar at workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/recode.c:3383:5
>  #3 in csAddChar at workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/cs.c:152:5
>  #4 in cidAddChars at workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/parse.c:3001:13
>  #5 in parseFont at workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/parse.c:1507:9
>  #6 in tcAddFont at workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/tc.c:1006:5
>  #7 in tcCompactFont at workdir/UnpackedTarball/afdko/c/makeotf/lib/typecomp/tc.c:1054:5
>  #8 in hotReadFont at workdir/UnpackedTarball/afdko/c/makeotf/lib/hotconv/hot.c:369:5
>  #9 in psConvFont at workdir/UnpackedTarball/afdko/c/makeotf/source/cb.c:329:16
>  #10 in cbConvert at workdir/UnpackedTarball/afdko/c/makeotf/source/cb.c:1622:20
>  #11 in EmbeddedFontsManager::makeotf(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&) at vcl/source/gdi/embeddedfontsafdko.cxx:263:5
>  #12 in ImpSdrPdfImport::convertToOTF(long, SubSetInfo&, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, std::basic_string_view<char16_t, std::char_traits<char16_t>>, std::__debug::vector<unsigned char, std::allocator<unsigned char>> const&) at svx/source/svdraw/svdpdf.cxx:1721:9
>  #13 in ImpSdrPdfImport::CollectFonts() at svx/source/svdraw/svdpdf.cxx:328:27
>  #14 in ImpSdrPdfImport::ImpSdrPdfImport(SdrModel&, o3tl::strong_int<short, SdrLayerIDTag>, tools::Rectangle const&, Graphic const&) at svx/source/svdraw/svdpdf.cxx:122:5
>  #15 in SdrEditView::DoImportMarkedMtf(SvdProgressInfo*) at svx/source/svdraw/svdedtv2.cxx:2168:37
>  #16 in testImportSimpleText::TestBody() at sd/qa/unit/SdrPdfImportTest.cxx:122:32

etc. and

> workdir/UnpackedTarball/afdko/c/mergefonts/source/mergeFonts.c:300:5: runtime error: call to function cfwMergeFDArray through pointer to incorrect function type 'long (*)(void *, abfTopDict *, int *)'
> workdir/UnpackedTarball/afdko/c/shared/source/cffwrite/cffwrite.c:491: note: cfwMergeFDArray defined here
>  #0 in mergeFDArray at workdir/UnpackedTarball/afdko/c/mergefonts/source/mergeFonts.c:300:5
>  #1 in t1rMergeFont at workdir/UnpackedTarball/afdko/c/mergefonts/source/mergeFonts.c:390:13
>  #2 in mergeFile at workdir/UnpackedTarball/afdko/c/mergefonts/source/mergeFonts.c:1521:17
>  #3 in doMergeFileSet at workdir/UnpackedTarball/afdko/c/mergefonts/source/mergeFonts.c:1726:9
>  #4 in EmbeddedFontsManager::mergefonts(rtl::OUString const&, rtl::OUString const&, std::__debug::vector<std::pair<rtl::OUString, rtl::OUString>, std::allocator<std::pair<rtl::OUString, rtl::OUString>>> const&) at vcl/source/gdi/embeddedfontsafdko.cxx:179:24
>  #5 in toPfaCID(SubSetInfo&, rtl::OUString const&, rtl::OUString const&, bool&, std::__debug::map<int, int, std::less<int>, std::allocator<std::pair<int const, int>>>&, rtl::OString&, rtl::OString&, rtl::OString&) at svx/source/svdraw/svdpdf.cxx:1197:14
>  #6 in ImpSdrPdfImport::convertToOTF(long, SubSetInfo&, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, std::basic_string_view<char16_t, std::char_traits<char16_t>>, std::__debug::vector<unsigned char, std::allocator<unsigned char>> const&) at svx/source/svdraw/svdpdf.cxx:1674:10
>  #7 in ImpSdrPdfImport::CollectFonts() at svx/source/svdraw/svdpdf.cxx:328:27
>  #8 in ImpSdrPdfImport::ImpSdrPdfImport(SdrModel&, o3tl::strong_int<short, SdrLayerIDTag>, tools::Rectangle const&, Graphic const&) at svx/source/svdraw/svdpdf.cxx:122:5
>  #9 in SdrEditView::DoImportMarkedMtf(SvdProgressInfo*) at svx/source/svdraw/svdedtv2.cxx:2168:37
>  #10 in testImportSimpleText::TestBody() at sd/qa/unit/SdrPdfImportTest.cxx:122:32

and

> workdir/UnpackedTarball/afdko/c/shared/source/dynarr/dynarr.c:111:9: runtime error: call to function initCharset through pointer to incorrect function type 'void (*)(void *, long, void *)'
> workdir/UnpackedTarball/afdko/c/shared/source/cffwrite/cffwrite_charset.c:76: note: initCharset defined here
>  #0 in dnaGrow at workdir/UnpackedTarball/afdko/c/shared/source/dynarr/dynarr.c:111:9
>  #1 in dnaNext at workdir/UnpackedTarball/afdko/c/shared/source/dynarr/dynarr.c:162:13
>  #2 in cfwCharsetNew at workdir/UnpackedTarball/afdko/c/shared/source/cffwrite/cffwrite_charset.c:98:28
>  #3 in cfwNew at workdir/UnpackedTarball/afdko/c/shared/source/cffwrite/cffwrite.c:2236:5
>  #4 in cff_SetMode at workdir/UnpackedTarball/afdko/c/shared/source/tx_shared/tx_shared.c:1129:22
>  #5 in setMode at workdir/UnpackedTarball/afdko/c/shared/source/tx_shared/tx_shared.c:5585:13
>  #6 in EmbeddedFontsManager::mergefonts(rtl::OUString const&, rtl::OUString const&, std::__debug::vector<std::pair<rtl::OUString, rtl::OUString>, std::allocator<std::pair<rtl::OUString, rtl::OUString>>> const&) at vcl/source/gdi/embeddedfontsafdko.cxx:167:5
>  #7 in toPfaCID(SubSetInfo&, rtl::OUString const&, rtl::OUString const&, bool&, std::__debug::map<int, int, std::less<int>, std::allocator<std::pair<int const, int>>>&, rtl::OString&, rtl::OString&, rtl::OString&) at svx/source/svdraw/svdpdf.cxx:1197:14
>  #8 in ImpSdrPdfImport::convertToOTF(long, SubSetInfo&, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, std::basic_string_view<char16_t, std::char_traits<char16_t>>, std::__debug::vector<unsigned char, std::allocator<unsigned char>> const&) at svx/source/svdraw/svdpdf.cxx:1674:10
>  #9 in ImpSdrPdfImport::CollectFonts() at svx/source/svdraw/svdpdf.cxx:328:27
>  #10 in ImpSdrPdfImport::ImpSdrPdfImport(SdrModel&, o3tl::strong_int<short, SdrLayerIDTag>, tools::Rectangle const&, Graphic const&) at svx/source/svdraw/svdpdf.cxx:122:5
>  #11 in SdrEditView::DoImportMarkedMtf(SvdProgressInfo*) at svx/source/svdraw/svdedtv2.cxx:2168:37
>  #12 in testImportSimpleText::TestBody() at sd/qa/unit/SdrPdfImportTest.cxx:122:32

but which has been suppressed at least for now with an

> __attribute__((no_sanitize("function")))

as that appears to be a pervasive issue with the dnaDCL macro defined in
workdir/UnpackedTarball/afdko/c/shared/include/dynarr.h

Change-Id: Ib259a660713fa87f45020fefa841483cf810fc45
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192733
Reviewed-by: Stephan Bergmann <[email protected]>
Tested-by: Jenkins
tdf-gerrit pushed a commit that referenced this pull request Oct 23, 2025
The BufferedDecompositionFlusher thread is waiting for the SolarMutex
and has accumulated a bunch of rtl::References to Primitive2Ds in
aRemoved[1|2] created from direct pointers to Primitive2Ds during the
earlier phase.

Thread 6 (Thread 0x7fd2e27fe6c0 (LWP 3729389)):
 #0  0x00007fd313d3012b in  () at /lib/x86_64-linux-gnu/libc.so.6
 #1  0x00007fd313d364da in pthread_mutex_lock () at /lib/x86_64-linux-gnu/libc.so.6
 #2  0x00007fd3140a75f1 in osl_acquireMutex(oslMutex) (pMutex=0x556f87223470) at sal/osl/unx/mutex.cxx:93
         nRet = 32723
 #3  0x00007fd30e02be53 in osl::Mutex::acquire() (this=0x556f87223968) at include/osl/mutex.hxx:63
         pInst = 0x556f87223830
         __PRETTY_FUNCTION__ = "virtual void SvpSalYieldMutex::doAcquire(sal_uInt32)"
 #4  SvpSalYieldMutex::doAcquire(unsigned int) (this=0x556f87223960, nLockCount=1) at vcl/headless/svpinst.cxx:376
         pInst = 0x556f87223830
         __PRETTY_FUNCTION__ = "virtual void SvpSalYieldMutex::doAcquire(sal_uInt32)"
 #5  0x00007fd312bcd4fc in comphelper::SolarMutex::acquire(unsigned int) (this=<optimized out>, nLockCount=nLockCount@entry=1) at include/comphelper/solarmutex.hxx:86
         __PRETTY_FUNCTION__ = "void comphelper::SolarMutex::acquire(sal_uInt32)"
 #6  0x00007fd312bcd6bd in osl::Guard<comphelper::SolarMutex>::Guard(comphelper::SolarMutex*) (this=<optimized out>, pT_=<optimized out>) at include/osl/mutex.hxx:137
 #7  0x00007fd312bccd53 in drawinglayer::primitive2d::BufferedDecompositionFlusher::run() (this=0x7fd2d4159230) at drawinglayer/source/primitive2d/BufferedDecompositionFlusher.cxx:154
         aGuard = {pT = 0x556f87223960}
         aNow = {__d = {__r = 64556205175663173}}
         aRemoved1 = std::__debug::vector of length 1155, capacity 2048 =

The active thread 1 asserts that the reference count of a
SimpleReferenceObject isn't zero during dtor.

Thread 1 (Thread 0x7fd2e2fff6c0 (LWP 3726667)):
 #21 0x00007fd313c2760a in salhelper::SimpleReferenceObject::~SimpleReferenceObject() (this=this@entry=0x7fd2d62f51f0, __in_chrg=<optimized out>) at salhelper/source/simplereferenceobject.cxx:29
 #22 0x00007fd312bcbc57 in drawinglayer::primitive2d::BasePrimitive2D::~BasePrimitive2D() (this=this@entry=0x7fd2d62f51f0, __in_chrg=<optimized out>) at drawinglayer/source/primitive2d/baseprimitive2d.cxx:34
 #23 0x00007fd312bcc368 in drawinglayer::primitive2d::BufferedDecompositionPrimitive2D::~BufferedDecompositionPrimitive2D() (this=this@entry=0x7fd2d62f51f0, __in_chrg=<optimized out>) at drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx:69
 #24 0x00007fd310300136 in drawinglayer::primitive2d::SdrGrafPrimitive2D::~SdrGrafPrimitive2D() (this=0x7fd2d62f51f0, __in_chrg=<optimized out>) at svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx:29
 #25 0x00007fd310300141 in drawinglayer::primitive2d::SdrGrafPrimitive2D::~SdrGrafPrimitive2D() (this=0x7fd2d62f51f0, __in_chrg=<optimized out>) at svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx:29
 #26 0x00007fd312bcc5d3 in salhelper::SimpleReferenceObject::release() (this=<optimized out>) at include/salhelper/simplereferenceobject.hxx:83
 #27 0x00007fd312bd1e63 in rtl::Reference<drawinglayer::primitive2d::BasePrimitive2D>::~Reference() (this=0x7fd2d62f4b10, __in_chrg=<optimized out>) at include/rtl/ref.hxx:126
 #28 std::destroy_at<rtl::Reference<drawinglayer::primitive2d::BasePrimitive2D> >(rtl::Reference<drawinglayer::primitive2d::BasePrimitive2D>*) (__location=0x7fd2d62f4b10) at /usr/include/c++/12/bits/stl_construct.h:88
 #29 std::_Destroy<rtl::Reference<drawinglayer::primitive2d::BasePrimitive2D> >(rtl::Reference<drawinglayer::primitive2d::BasePrimitive2D>*) (__pointer=0x7fd2d62f4b10) at /usr/include/c++/12/bits/stl_construct.h:149

So, what if a BufferedDecompositionPrimitive2D was registered with
BufferedDecompositionFlusher, so a direct pointer to it exists.

On Thread 0 the BufferedDecompositionPrimitive2D ref count hits 0,
dtoring starts.

Meanwhile Thread 6 merrily spins its loop, creates a rtl::Reference from
the BufferedDecompositionPrimitive2D, ref count goes back up to 1.

BufferedDecompositionPrimitive2D::dtor gets around to unregistering
itself from BufferedDecompositionFlusher, but that doesn't matter
because the rtl::Reference to the primitive already exists in aRemoved,
dtor hits assert that refcount isn't 0

Change-Id: Iac0a03bb7cbadf949ba1ac00d69cf15cc2505e18
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192674
Tested-by: Jenkins
Tested-by: Caolán McNamara <[email protected]>
Reviewed-by: Caolán McNamara <[email protected]>
tdf-gerrit pushed a commit that referenced this pull request Oct 24, 2025
Fixes this assertion failure in a crash report:
	/opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1230: constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::back() [with _Tp = oox::xls::Sparkline; _Alloc = std::allocator<oox::xls::Sparkline>; reference = oox::xls::Sparkline&]: Assertion '!this->empty()' failed.

Backtrace from gdb on the core:
	#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
	#1  0x00007f906206e7f1 in __GI_abort () at abort.c:79
	#2  0x0000000000af43ee in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) ()
	#3  0x00007f904d07ff87 in std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>)
	    at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#4  std::vector<oox::xls::Sparkline, std::allocator<oox::xls::Sparkline> >::back (this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:1228
	#5  oox::xls::SparklineGroupsContext::onCharacters(rtl::OUString const&) ()
	    at sc/source/filter/oox/SparklineFragment.cxx:232
	#6  0x00007f905cf0988a in oox::core::ContextHandler2Helper::processCollectedChars() ()
	    at include/rtl/ustring.hxx:546
	#7  0x00007f905cf09a05 in oox::core::ContextHandler2Helper::implEndElement (nElement=3475622, this=0x7f902403e880)
	    at oox/source/core/contexthandler2.cxx:123

gdb also points out that m_aSparklineGroups is non-empty.

Change-Id: Ib368550f6db0ed7ce4fbe37e056cd416208e7fe9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192424
Reviewed-by: Miklos Vajna <[email protected]>
Tested-by: Jenkins
(cherry picked from commit cde426b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192722
Reviewed-by: Xisco Fauli <[email protected]>
(cherry picked from commit 468da43)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192730
Reviewed-by: Christian Lohmaier <[email protected]>
Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
Tested-by: Christian Lohmaier <[email protected]>
This pull request was closed.
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.