https://bugs.documentfoundation.org/show_bug.cgi?id=169486
Bug ID: 169486
Summary: SolarMutexGuard is missing from Uno
XSpreadsheets2.importSheet. Cause assertion failure.
Product: LibreOffice
Version: 25.8.3.2 release
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: medium
Component: Calc
Assignee: [email protected]
Reporter: [email protected]
Description:
XSpreadsheets2.importSheet causes following assertion failure.
soffice.bin: /home/katsumi/libreoffice/vcl/source/app/dbggui.cxx:36: void
ImplDbgTestSolarMutex(bool): Assertion
`ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && "SolarMutex
not owned!"' failed.
Fatal exception: Signal 6
Stack:
warn:legacy.tools:4673:4673:svx/source/form/fmvwimp.cxx:436:
FmXFormView::~FmXFormView: Window list not empty!
#0 sal::backtrace_get(unsigned int) at
/home/katsumi/libreoffice/sal/osl/unx/backtraceapi.cxx:42
#1 (anonymous namespace)::printStack(int) at
/home/katsumi/libreoffice/sal/osl/unx/signal.cxx:289
#2 (anonymous namespace)::callSystemHandler(int, siginfo_t*, void*) at
/home/katsumi/libreoffice/sal/osl/unx/signal.cxx:330
#3 (anonymous namespace)::signalHandlerFunction(int, siginfo_t*, void*) at
/home/katsumi/libreoffice/sal/osl/unx/signal.cxx:446
#4 __restore_rt at libc_sigaction.c:?
#5 __pthread_kill_implementation at ./nptl/./nptl/pthread_kill.c:44
(discriminator 1)
#6 __GI_raise at ./signal/../sysdeps/posix/raise.c:27
#7 __GI_abort at ./stdlib/./stdlib/abort.c:81
#8 _nl_load_domain at ./intl/./intl/loadmsgcat.c:1177
#9 __assert_fail in /lib/x86_64-linux-gnu/libc.so.6
#10 ImplDbgTestSolarMutex(bool) at
/home/katsumi/libreoffice/vcl/source/app/dbggui.cxx:38
#11 DbgTestSolarMutex(bool) at
/home/katsumi/libreoffice/tools/source/debug/debug.cxx:55
#12 vcl::WindowOutputDevice::AcquireGraphics() const at
/home/katsumi/libreoffice/vcl/source/window/window.cxx:822 (discriminator 1)
#13 OutputDevice::ImplIsAntiparallel() const at
/home/katsumi/libreoffice/vcl/source/outdev/outdev.cxx:615
#14 vcl::Window::ImplInvalidate(vcl::Region const*, InvalidateFlags) at
/home/katsumi/libreoffice/vcl/source/window/paint.cxx:827 (discriminator 2)
#15 vcl::Window::Invalidate(tools::Rectangle const&, InvalidateFlags) at
/home/katsumi/libreoffice/vcl/source/window/paint.cxx:1164
#16 ScTabView::PaintArea(short, int, short, int, ScUpdateMode, long) at
/home/katsumi/libreoffice/sc/source/ui/view/tabview3.cxx:2813 (discriminator 2)
#17 ScTabViewShell::Notify(SfxBroadcaster&, SfxHint const&) at
/home/katsumi/libreoffice/sc/source/ui/view/tabvwsh5.cxx:63 (discriminator 2)
#18 SfxBroadcaster::Broadcast(SfxHint const&) at
/home/katsumi/libreoffice/svl/source/notify/SfxBroadcaster.cxx:39
(discriminator 2)
#19 ScDocShell::PostPaint(ScRangeList const&, PaintPartFlags, unsigned short,
long) at /home/katsumi/libreoffice/sc/source/ui/docshell/docsh3.cxx:196
(discriminator 6)
#20 ScDocShell::PostPaint(short, int, short, short, int, short, PaintPartFlags,
unsigned short, long) at
/home/katsumi/libreoffice/sc/source/ui/docshell/docsh3.cxx:106 (discriminator
4)
#21 ScDocShell::PostPaintGridAll() at
/home/katsumi/libreoffice/sc/source/ui/docshell/docsh3.cxx:211
#22 ScDocShell::TransferTab(ScDocShell&, short, short, bool, bool) at
/home/katsumi/libreoffice/sc/source/ui/docshell/docsh5.cxx:909
#23
ScTableSheetsObj::importSheet(com::sun::star::uno::Reference<com::sun::star::sheet::XSpreadsheetDocument>
const&, rtl::OUString const&, int) at
/home/katsumi/libreoffice/sc/source/ui/unoobj/docuno.cxx:4441
#24 gcc3::callVirtualMethod(void*, unsigned int, void*,
_typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int,
unsigned long*, double*) at
/home/katsumi/libreoffice/bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:87
#25 cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*,
bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int,
_typelib_MethodParameter*, void*, void**, _uno_Any**) at
/home/katsumi/libreoffice/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:230
#26 unoInterfaceProxyDispatch at
/home/katsumi/libreoffice/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:410
#27 binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*,
std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny>
>*) const at /home/katsumi/libreoffice/binaryurp/source/incomingrequest.cxx:236
(discriminator 1)
#28 binaryurp::IncomingRequest::execute() const at
/home/katsumi/libreoffice/binaryurp/source/incomingrequest.cxx:79
(discriminator 1)
#29 request at /home/katsumi/libreoffice/binaryurp/source/reader.cxx:86
(discriminator 1)
#30 cppu_threadpool::JobQueue::enter(void const*, bool) at
/usr/include/c++/13/mutex:778
#31 cppu_threadpool::ORequestThread::run() at
/home/katsumi/libreoffice/cppu/source/threadpool/thread.cxx:165
#32 threadFunc at /home/katsumi/libreoffice/include/osl/thread.hxx:190
#33 osl_thread_start_Impl(void*) at
/home/katsumi/libreoffice/sal/osl/unx/thread.cxx:240
#34 start_thread at ./nptl/./nptl/pthread_create.c:447
#35 clone3 at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:80
Aborted (core dumped)
other API has SolarMutexGuard.
void SAL_CALL ScTableSheetsObj::removeByName( const OUString& aName )
{
SolarMutexGuard aGuard;
bool bDone = false;
if (pDocShell)
{
SCTAB nIndex;
if ( !pDocShell->GetDocument().GetTable( aName, nIndex ) )
throw container::NoSuchElementException(); // not found
bDone = pDocShell->GetDocFunc().DeleteTable( nIndex, true );
}
if (!bDone)
throw uno::RuntimeException(); // NoSuchElementException is
handled above
}
But importSheet doesn't
sal_Int32 ScTableSheetsObj::importSheet(
const uno::Reference < sheet::XSpreadsheetDocument > & xDocSrc,
const OUString& srcName, const sal_Int32 nDestPosition )
{
//pDocShell is the destination
ScDocument& rDocDest = pDocShell->GetDocument();
importSheet should also have SolarMutexGuard.
Steps to Reproduce:
1.call Uno XSpreadsheets2.importSheet method
2.
3.
Actual Results:
soffice.bin crashes.
Expected Results:
no crash. API success.
Reproducible: Always
User Profile Reset: No
Additional Info:
N/A
--
You are receiving this mail because:
You are the assignee for the bug.