sc_opencl_test failing

Kaganski Mike mikekaganski at hotmail.com
Sat Sep 1 07:07:56 UTC 2018


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.


More information about the LibreOffice mailing list