Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


Hi!

I'm getting sc_opencl_test failing reliably on my Win10, with build log 
like https://pastebin.com/TsiTeYV6.

My config:

--with-external-tar=c:/lo/src/lo-externalsrc
--with-junit=c:/lo/src/junit-4.10.jar
--with-ant-home=c:/lo/src/apache-ant-1.9.5
--with-galleries=no
--with-visual-studio=2017
--enable-pch
--enable-dbgutil
--enable-symbols
--without-help
--with-lang=ru
--with-myspell-dicts
--enable-64-bit
--enable-werror
--enable-breakpad

The failing test is ScOpenCLTest::testDatabaseFormulaDmax. Main thread 
call stack:



ntdll.dll!NtWaitForAlertByThreadId()
ntdll.dll!RtlSleepConditionVariableSRW()
KernelBase.dll!SleepConditionVariableSRW()
msvcp140d.dll!__crtSleepConditionVariableSRW(_RTL_CONDITION_VARIABLE * 
pCond, _RTL_SRWLOCK * pLock, unsigned long dwMs, unsigned long flags) 
Line 659
        at f:\dd\vctools\crt\crtw32\misc\winapisupp.cpp(659)
msvcp140d.dll!Concurrency::details::stl_condition_variable_win7::wait_for(Concurrency::details::stl_critical_section_interface
 
* lock, unsigned int timeout) Line 216
        at f:\dd\vctools\crt\crtw32\stdcpp\thr\primitives.h(216)
msvcp140d.dll!do_wait(_Cnd_internal_imp_t * cond, _Mtx_internal_imp_t * 
mtx, const xtime * target) Line 82
        at f:\dd\vctools\crt\crtw32\stdcpp\thr\cond.c(82)
msvcp140d.dll!_Cnd_timedwait(_Cnd_internal_imp_t * cond, 
_Mtx_internal_imp_t * mtx, const xtime * xt) Line 111
        at f:\dd\vctools\crt\crtw32\stdcpp\thr\cond.c(111)
comphelper.dll!std::_Cnd_timedwaitX(_Cnd_internal_imp_t * _Cnd, 
_Mtx_internal_imp_t * _Mtx, const xtime * _Xt) Line 103
        at c:\program files (x86)\microsoft visual 
studio\2017\community\vc\tools\msvc\14.15.26726\include\thr\xthread(103)
comphelper.dll!std::condition_variable::wait_until(std::unique_lock<std::mutex> 
& _Lck, const xtime * _Abs_time) Line 775
        at c:\program files (x86)\microsoft visual 
studio\2017\community\vc\tools\msvc\14.15.26726\include\mutex(775)
comphelper.dll!std::condition_variable::wait_for<__int64,std::ratio<1,1> 
(std::unique_lock<std::mutex> & _Lck, const 
std::chrono::duration<__int64,std::ratio<1,1> > & _Rel_time) Line 731
        at c:\program files (x86)\microsoft visual 
studio\2017\community\vc\tools\msvc\14.15.26726\include\mutex(731)
comphelper.dll!comphelper::ThreadTaskTag::waitUntilDone() Line 311
        at c:\lo\src\core\comphelper\source\misc\threadpool.cxx(311)
comphelper.dll!comphelper::ThreadPool::waitUntilDone(const 
std::shared_ptr<comphelper::ThreadTaskTag> & rTag) Line 237
        at c:\lo\src\core\comphelper\source\misc\threadpool.cxx(237)
sclo.dll!ScFormulaCell::InterpretFormulaGroupThreading(sc::FormulaLogger::GroupScope 
& aScope, bool & bDependencyComputed, bool & bDependencyCheckFailed) 
Line 4670
        at c:\lo\src\core\sc\source\core\data\formulacell.cxx(4670)
sclo.dll!ScFormulaCell::InterpretFormulaGroup() Line 4532
        at c:\lo\src\core\sc\source\core\data\formulacell.cxx(4532)
sclo.dll!ScFormulaCell::Interpret() Line 1560
        at c:\lo\src\core\sc\source\core\data\formulacell.cxx(1560)
sclo.dll!`anonymous namespace'::CalcAllHandler::operator()(unsigned 
__int64 __formal, ScFormulaCell * pCell) Line 2908
        at c:\lo\src\core\sc\source\core\data\column.cxx(2908)
sclo.dll!sc::EachElem<mdds::mtv::noncopyable_managed_element_block<54,ScFormulaCell>,std::_Vector_iterator<std::_Vector_val<std::_Simple_types<ScFormulaCell
 
*> > >,mdds::detail::mtv::iterator_value_node<unsigned 
__int64,mdds::mtv::base_element_block>,`anonymous 
namespace'::CalcAllHandler>(mdds::detail::mtv::iterator_value_node<unsigned 
__int64,mdds::mtv::base_element_block> & rNode, 
`anonymous-namespace'::CalcAllHandler & rFuncElem) Line 120
        at c:\lo\src\core\sc\inc\mtvfunctions.hxx(120)
sclo.dll!sc::ProcessElements1<mdds::multi_type_vector<mdds::mtv::custom_block_func3<mdds::mtv::default_element_block<52,svl::SharedString>,mdds::mtv::noncopyable_managed_element_block<53,EditTextObject>,mdds::mtv::noncopyable_managed_element_block<54,ScFormulaCell>
 
,sc::CellStoreEvent>,mdds::mtv::noncopyable_managed_element_block<54,ScFormulaCell>,`anonymous 
namespace'::CalcAllHandler,sc::FuncElseNoOp<unsigned __int64,bool> 
(mdds::multi_type_vector<mdds::mtv::custom_block_func3<mdds::mtv::default_element_block<52,svl::SharedString>,mdds::mtv::noncopyable_managed_element_block<53,EditTextObject>,mdds::mtv::noncopyable_managed_element_block<54,ScFormulaCell>
,sc::CellStoreEvent> & rStore, `anonymous-namespace'::CalcAllHandler & rFuncElem, 
sc::FuncElseNoOp<unsigned __int64,bool> & rFuncElse) Line 311
        at c:\lo\src\core\sc\inc\mtvfunctions.hxx(311)
sclo.dll!sc::ProcessFormula<`anonymous 
namespace'::CalcAllHandler>(mdds::multi_type_vector<mdds::mtv::custom_block_func3<mdds::mtv::default_element_block<52,svl::SharedString>,mdds::mtv::noncopyable_managed_element_block<53,EditTextObject>,mdds::mtv::noncopyable_managed_element_block<54,ScFormulaCell>
 
,sc::CellStoreEvent> & rStore, `anonymous-namespace'::CalcAllHandler & 
rFunc) Line 25
        at c:\lo\src\core\sc\inc\mtvcellfunc.hxx(25)
sclo.dll!ScColumn::CalcAll() Line 3488
        at c:\lo\src\core\sc\source\core\data\column.cxx(3488)
sclo.dll!ScTable::CalcAll() Line 1880
        at c:\lo\src\core\sc\source\core\data\table2.cxx(1880)
sclo.dll!ScDocument::CalcAll() Line 3953
        at c:\lo\src\core\sc\source\core\data\document.cxx(3953)
test_sc_opencl_test.dll!ScOpenCLTest::testDatabaseFormulaDmax() Line 4139
        at c:\lo\src\core\sc\qa\unit\opencl-test.cxx(4139)
test_sc_opencl_test.dll!std::_Invoker_pmf_pointer::_Call<void (__cdecl 
ScOpenCLTest::*)(void),ScOpenCLTest * &>(void(ScOpenCLTest::*)() _Pmf, 
ScOpenCLTest * & _Arg1)
test_sc_opencl_test.dll!std::invoke<void (__cdecl 
ScOpenCLTest::*&)(void),ScOpenCLTest * &>(void(ScOpenCLTest::*)() & 
_Obj, ScOpenCLTest * & <_Args_0>)
test_sc_opencl_test.dll!std::_Invoker_ret<std::_Unforced,0>::_Call<void 
(__cdecl ScOpenCLTest::*&)(void),ScOpenCLTest * 
&>(void(ScOpenCLTest::*)() & <_Vals_0>, ScOpenCLTest * & <_Vals_1>)
test_sc_opencl_test.dll!std::_Call_binder<std::_Unforced,0,void (__cdecl 
ScOpenCLTest::*)(void),std::tuple<ScOpenCLTest *>,std::tuple<> 
(std::_Invoker_ret<std::_Unforced,0> __formal, 
std::integer_sequence<unsigned __int64,0> __formal, 
void(ScOpenCLTest::*)() & _Obj, std::tuple<ScOpenCLTest *> & _Tpl, 
std::tuple<> && _Ut) Line 1859
        at c:\program files (x86)\microsoft visual 
studio\2017\community\vc\tools\msvc\14.15.26726\include\functional(1859)
test_sc_opencl_test.dll!std::_Binder<std::_Unforced,void (__cdecl 
ScOpenCLTest::*&)(void),ScOpenCLTest * &>::operator()<>() Line 1914
        at c:\program files (x86)\microsoft visual 
studio\2017\community\vc\tools\msvc\14.15.26726\include\functional(1914)
test_sc_opencl_test.dll!std::_Invoker_functor::_Call<std::_Binder<std::_Unforced,void 
(__cdecl ScOpenCLTest::*&)(void),ScOpenCLTest * &> 
&>(std::_Binder<std::_Unforced,void (__cdecl 
ScOpenCLTest::*&)(void),ScOpenCLTest * &> & _Obj)
test_sc_opencl_test.dll!std::invoke<std::_Binder<std::_Unforced,void 
(__cdecl ScOpenCLTest::*&)(void),ScOpenCLTest * &> 
&>(std::_Binder<std::_Unforced,void (__cdecl 
ScOpenCLTest::*&)(void),ScOpenCLTest * &> & _Obj)
test_sc_opencl_test.dll!std::_Invoker_ret<void,1>::_Call<std::_Binder<std::_Unforced,void 
(__cdecl ScOpenCLTest::*&)(void),ScOpenCLTest * &> 
&>(std::_Binder<std::_Unforced,void (__cdecl 
ScOpenCLTest::*&)(void),ScOpenCLTest * &> & <_Vals_0>)
test_sc_opencl_test.dll!std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void 
(__cdecl ScOpenCLTest::*&)(void),ScOpenCLTest * &>,void>::_Do_call()
test_sc_opencl_test.dll!std::_Func_class<void>::operator()()
test_sc_opencl_test.dll!CppUnit::TestCaller<ScOpenCLTest>::runTest() 
Line 176
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\include\cppunit\testcaller.h(176)
cppunitd_dll.dll!CppUnit::TestCaseMethodFunctor::operator()() Line 33
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testcase.cpp(33)
vclbootstrapprotector.dll!`anonymous 
namespace'::Protector::protect(const CppUnit::Functor & functor, const 
CppUnit::ProtectorContext & __formal) Line 49
        at c:\lo\src\core\test\source\vclbootstrapprotector.cxx(49)
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() 
Line 21
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\protectorchain.cpp(21)
unobootstrapprotector.dll!`anonymous namespace'::Prot::protect(const 
CppUnit::Functor & functor, const CppUnit::ProtectorContext & __formal) 
Line 89
        at 
c:\lo\src\core\unotest\source\cpp\unobootstrapprotector\unobootstrapprotector.cxx(89)
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() 
Line 21
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\protectorchain.cpp(21)
unoexceptionprotector.dll!`anonymous namespace'::Prot::protect(const 
CppUnit::Functor & functor, const CppUnit::ProtectorContext & context) 
Line 63
        at 
c:\lo\src\core\unotest\source\cpp\unoexceptionprotector\unoexceptionprotector.cxx(63)
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() 
Line 21
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\protectorchain.cpp(21)
cppunitd_dll.dll!CppUnit::DefaultProtector::protect(const 
CppUnit::Functor & functor, const CppUnit::ProtectorContext & context) 
Line 15
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\defaultprotector.cpp(15)
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() 
Line 21
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\protectorchain.cpp(21)
cppunitd_dll.dll!CppUnit::ProtectorChain::protect(const CppUnit::Functor 
& functor, const CppUnit::ProtectorContext & context) Line 86
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\protectorchain.cpp(86)
cppunitd_dll.dll!CppUnit::TestResult::protect(const CppUnit::Functor & 
functor, CppUnit::Test * test, const 
std::basic_string<char,std::char_traits<char>,std::allocator<char> > & 
shortDescription) Line 182
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testresult.cpp(182)
cppunitd_dll.dll!CppUnit::TestCase::run(CppUnit::TestResult * result) 
Line 91
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testcase.cpp(91)
cppunitd_dll.dll!CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult 
* controller) Line 65
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testcomposite.cpp(65)
cppunitd_dll.dll!CppUnit::TestComposite::run(CppUnit::TestResult * 
result) Line 24
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testcomposite.cpp(24)
cppunitd_dll.dll!CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult 
* controller) Line 65
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testcomposite.cpp(65)
cppunitd_dll.dll!CppUnit::TestComposite::run(CppUnit::TestResult * 
result) Line 24
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testcomposite.cpp(24)
cppunitd_dll.dll!CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult 
* result) Line 48
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testrunner.cpp(48)
cppunitd_dll.dll!CppUnit::TestResult::runTest(CppUnit::Test * test) Line 150
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testresult.cpp(150)
cppunitd_dll.dll!CppUnit::TestRunner::run(CppUnit::TestResult & 
controller, const 
std::basic_string<char,std::char_traits<char>,std::allocator<char> > & 
testPath) Line 96
        at 
c:\lo\src\core\workdir\unpackedtarball\cppunit\src\cppunit\testrunner.cpp(96)
cppunittester.exe!`anonymous namespace'::ProtectedFixtureFunctor::run() 
Line 316
        at c:\lo\src\core\sal\cppunittester\cppunittester.cxx(316)
cppunittester.exe!sal_main() Line 466
        at c:\lo\src\core\sal\cppunittester\cppunittester.cxx(466)
cppunittester.exe!main(int argc, char * * argv) Line 373
        at c:\lo\src\core\sal\cppunittester\cppunittester.cxx(373)
cppunittester.exe!invoke_main() Line 79
        at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(79)
cppunittester.exe!__scrt_common_main_seh() Line 288
        at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(288)
cppunittester.exe!__scrt_common_main() Line 331
        at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(331)
cppunittester.exe!mainCRTStartup() Line 17
        at f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp(17)
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()



The two failing threads (named thread-pool) have this call stack:



sclo.dll!ScDocument::GetFormatTable() Line 468
        at c:\lo\src\core\sc\source\core\data\documen2.cxx(468)
sclo.dll!ScDocument::GetNonThreadedContext() Line 580
        at c:\lo\src\core\sc\inc\document.hxx(580)
sclo.dll!ScColumn::GetInputString(long nRow, rtl::OUString & rString) 
Line 2590
        at c:\lo\src\core\sc\source\core\data\column3.cxx(2590)
sclo.dll!ScTable::GetInputString(short nCol, long nRow, rtl::OUString & 
rString) Line 1548
        at c:\lo\src\core\sc\source\core\data\table2.cxx(1548)
sclo.dll!ScDocument::GetInputString(short nCol, long nRow, short nTab, 
rtl::OUString & rString) Line 3552
        at c:\lo\src\core\sc\source\core\data\document.cxx(3552)
sclo.dll!ScDBInternalRange::getString(short nCol, long nRow) Line 309
        at c:\lo\src\core\sc\source\core\tool\doubleref.cxx(309)
sclo.dll!`anonymous 
namespace'::lcl_createStarQuery(svl::SharedStringPool & rPool, 
ScQueryParamBase * pParam, const ScDBRangeBase * pDBRef, const 
ScDBRangeBase * pQueryRef) Line 96
        at c:\lo\src\core\sc\source\core\tool\doubleref.cxx(96)
sclo.dll!`anonymous 
namespace'::lcl_fillQueryEntries(svl::SharedStringPool & rPool, 
ScQueryParamBase * pParam, const ScDBRangeBase * pDBRef, const 
ScDBRangeBase * pQueryRef) Line 222
        at c:\lo\src\core\sc\source\core\tool\doubleref.cxx(222)
sclo.dll!ScDBRangeBase::fillQueryEntries(ScQueryParamBase * pParam, 
const ScDBRangeBase * pDBRef) Line 260
        at c:\lo\src\core\sc\source\core\tool\doubleref.cxx(260)
sclo.dll!ScDBInternalRange::createQueryParam(const ScDBRangeBase * 
pQueryRef) Line 375
        at c:\lo\src\core\sc\source\core\tool\doubleref.cxx(375)
sclo.dll!ScInterpreter::GetDBParams(bool & rMissingField) Line 7668
        at c:\lo\src\core\sc\source\core\tool\interpr1.cxx(7668)
sclo.dll!ScInterpreter::DBIterator(ScIterFunc eFunc) Line 7708
        at c:\lo\src\core\sc\source\core\tool\interpr1.cxx(7708)
sclo.dll!ScInterpreter::ScDBMax() Line 7876
        at c:\lo\src\core\sc\source\core\tool\interpr1.cxx(7876)
sclo.dll!ScInterpreter::Interpret() Line 4203
        at c:\lo\src\core\sc\source\core\tool\interpr4.cxx(4203)
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, 
ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1868
        at c:\lo\src\core\sc\source\core\data\formulacell.cxx(1868)
sclo.dll!ScColumn::CalculateInThread(ScInterpreterContext & rContext, 
long nRow, unsigned __int64 nLen, unsigned int nThisThread, unsigned int 
nThreadsTotal) Line 2969
        at c:\lo\src\core\sc\source\core\data\column2.cxx(2969)
sclo.dll!ScTable::CalculateInColumnInThread(ScInterpreterContext & 
rContext, short nCol, long nRow, unsigned __int64 nLen, unsigned int 
nThisThread, unsigned int nThreadsTotal) Line 2417
        at c:\lo\src\core\sc\source\core\data\table1.cxx(2417)
sclo.dll!ScDocument::CalculateInColumnInThread(ScInterpreterContext & 
rContext, const ScAddress & rTopPos, unsigned __int64 nLen, unsigned int 
nThisThread, unsigned int nThreadsTotal) Line 432
        at c:\lo\src\core\sc\source\core\data\documen8.cxx(432)
sclo.dll!`ScFormulaCell::InterpretFormulaGroupThreading'::`5'::Executor::doWork() 
Line 4637
        at c:\lo\src\core\sc\source\core\data\formulacell.cxx(4637)
comphelper.dll!comphelper::ThreadTask::exec() Line 264
        at c:\lo\src\core\comphelper\source\misc\threadpool.cxx(264)
comphelper.dll!comphelper::ThreadPool::ThreadWorker::execute() Line 72
        at c:\lo\src\core\comphelper\source\misc\threadpool.cxx(72)
salhelper3MSC.dll!salhelper::Thread::run() Line 40
        at c:\lo\src\core\salhelper\source\thread.cxx(40)
salhelper3MSC.dll!threadFunc(void * param) Line 186
        at c:\lo\src\core\include\osl\thread.hxx(186)
sal3.dll!oslWorkerWrapperFunction(void * pData) Line 58
        at c:\lo\src\core\sal\osl\w32\thread.cxx(58)
ucrtbased.dll!invoke_thread_procedure(unsigned int(*)(void *) procedure, 
void * const context) Line 92
        at minkernel\crts\ucrt\src\appcrt\startup\thread.cpp(92)
ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void * __ptr64)>(void 
* const parameter) Line 115
        at minkernel\crts\ucrt\src\appcrt\startup\thread.cpp(115)
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()



The problem seems to be in main thread's 
ScFormulaCell::InterpretFormulaGroupThreading, which calls 
pDocument->SetThreadedGroupCalcInProgress(true); then starts two threads 
in cycle; then waits for them before 
pDocument->SetThreadedGroupCalcInProgress(false). Naturally, an assert 
for !IsThreadedGroupCalcInProgress() must fail in all started threads.

I am not familiar with the code, and don't see how to proceed.

-- 
Best regards,
Mike Kaganski.

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.