https://bugs.documentfoundation.org/show_bug.cgi?id=172631

            Bug ID: 172631
           Summary: Writer aborts (SIGABRT via JVM signal handler)
                    exporting a footnote to ODF during AutoRecovery,
                    triggered by Zotero citation refresh
           Product: LibreOffice
           Version: 26.2.4.2 release
          Hardware: x86-64 (AMD64)
                OS: Linux (All)
            Status: UNCONFIRMED
          Severity: normal
          Priority: medium
         Component: Writer
          Assignee: [email protected]
          Reporter: [email protected]

Description:
soffice.bin crashes with SIGABRT while AutoRecovery/autosave exports the
document to ODF. The native fault happens inside libswlo.so/libxolo.so
while exporting a footnote (XMLTextParagraphExport::exportTextFootnote /
exportTextFootnoteHelper -> exportParagraph -> ...). Because a Java-based
extension (LanguageTool/WritingTool) is loaded in the process, the JVM's
own signal handler (JVM_handle_linux_signal in libjvm.so) intercepts the
native crash and turns it into abort(), so the process dies with SIGABRT
instead of SIGSEGV.
The crash is consistently triggered a few seconds after the Zotero
LibreOffice Integration extension performs a citation "refresh" (visible
in the log as "ZoteroOpenOfficeIntegration: Executing refresh"), which
marks the document dirty and causes AutoRecovery's background save to
fire (SfxBaseModel::storeToRecoveryFile -> SaveAsOwnFormat).

Steps to Reproduce:
1. Open a Writer document (.odt or .docx) that has footnotes, at least
   one containing a Zotero citation field.
2. Have Zotero desktop running with the "Zotero LibreOffice Integration"
   extension connected.
3. Trigger a citation refresh from Zotero (e.g. via the Zotero toolbar
   "Refresh" button, or any action that calls the integration's refresh).
4. Let AutoRecovery's periodic background save fire (or wait ~1 min).

Actual Results:
soffice.bin aborts. Reproduced identically 3 times in one session
(2026-07-01, at 07:06:51, 07:20:50 and 07:24:19), all with the same
top-of-stack signatur

Expected Results:
AutoRecovery/export should not crash Writer regardless of the state of a
citation field/footnote after an external refresh.



Reproducible: Always


User Profile Reset: No

Additional Info:
Environment:
- LibreOffice 26.2.4.2 (Build:2), Arch package libreoffice-fresh 26.2.4-3
- libswlo.so Build ID: 426ad2635a0b8c81981c1c1f0570839952ebd07c
- OS: Garuda Linux (Arch-based), kernel 7.1.2-3-cachyos
- VCL backend: Qt6 (kwin/Plasma session)
- Zotero 9.0.4, "Zotero LibreOffice Integration" extension active
- WritingTool (LanguageTool) 26.4.1 also loaded (Java-based extension —
  this is why a JVM signal handler is present in the crashing thread)

Backtrace of the crashing thread (2026-07-01 07:24:19, PID 12800):

Signal: 6 (ABRT) si_code: SI_TKILL

#0  abort (libc.so.6 + 0x256e2)
#1  n/a (libuno_sal.so.3 + 0x4cbd5)
#2  n/a (libjvm.so + 0xbe18a3)
#3  JVM_handle_linux_signal (libjvm.so + 0xbe1c85)
#4  n/a (libc.so.6 + 0x3e270)
#5  n/a (libswlo.so + 0xae6e96)
#6  n/a (libswlo.so + 0xae0525)
#7  XMLTextParagraphExport::exportParagraph(...) (libxolo.so + 0x3c1da4)
#8  XMLTextParagraphExport::exportTextContentEnumeration(...) (libxolo.so +
0x3c45ce)
#9  XMLTextParagraphExport::exportText(...) (libxolo.so + 0x3b9f78)
#10 XMLTextParagraphExport::exportTextFootnote(...) (libxolo.so + 0x39979e)
#11 XMLTextParagraphExport::exportTextRangeEnumeration(...) (libxolo.so +
0x3bf681)
#12 XMLTextParagraphExport::exportParagraph(...) (libxolo.so + 0x3c1ec9)
#13 XMLTextParagraphExport::exportTextContentEnumeration(...) (libxolo.so +
0x3c45ce)
#14 XMLTextParagraphExport::exportText(...) (libxolo.so + 0x3b9f78)
#15 XMLTextParagraphExport::collectTextAutoStylesAndNodeExportOrder(...)
(libxolo.so + 0x3bac8b)
...
#27 SfxObjectShell::SaveAsOwnFormat(SfxMedium&) (libsfxlo.so + 0x374d4a)
#31 SfxBaseModel::storeToRecoveryFile(...) (libsfxlo.so + 0x3924e2)
...
DispatchUserEvents / QtInstance::ImplYield (main event loop)

A second occurrence (PID 15952) shows the same path going through
exportTextFootnoteHelper explicitly:
#10 XMLTextParagraphExport::exportTextFootnoteHelper(...) (libxolo.so +
0x399361)

A third occurrence (PID 6503) crashes one call earlier, comparing property
values while exporting the same footnote paragraph:
#6  uno_type_equalData (libuno_cppu.so.3 + 0x193ee)
#7  XMLPropertyHandler::equals(...) (libxolo.so + 0x3165ad)
#8  n/a (libswlo.so + 0xae6e61)
#9  n/a (libswlo.so + 0xae0525)
#13 XMLTextParagraphExport::exportTextFootnote(...) (libxolo.so + 0x39979e)

Note: libswlo.so is stripped (no exported symbols for the crashing
frames), so an addr2line/gdb session against a debug build, or a
debuginfod-enabled backtrace, would be needed to pin down the exact line.
Happy to provide the raw core dump or run further diagnostics on request.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to