office-gobmx/sal
Mike Kaganski bc0ba22e79 Avoid stack overflow in testTdf124815 on Windows
Regression from commit 2af67c35d2.

It happens in row 217, in a recursive calculation of cell values,
starting on row 454 down to 0, with 237 repeated patterns on stack:

=======================
ucrtbased.dll!__acrt_FlsGetValue(unsigned long fls_index) Line 472
ucrtbased.dll!__crt_state_management::get_current_state_index() Line 101
ucrtbased.dll!__crt_state_management::dual_state_global<long>::value() Line 147
ucrtbased.dll!_query_new_mode() Line 30
ucrtbased.dll!heap_alloc_dbg(const unsigned __int64 size, const int block_use, const char * const file_name, const int line_number) Line 447
ucrtbased.dll!_malloc_dbg(unsigned __int64 size, int block_use, const char * file_name, int line_number) Line 496
ucrtbased.dll!malloc(unsigned __int64 size) Line 27
sclo.dll!operator new(unsigned __int64 size) Line 35
sclo.dll!std::_Default_allocate_traits::_Allocate(const unsigned __int64 _Bytes) Line 52
sclo.dll!std::_Allocate<16,std::_Default_allocate_traits,0>(const unsigned __int64 _Bytes) Line 180
sclo.dll!std::allocator<std::_Container_proxy>::allocate(const unsigned __int64 _Count) Line 785
sclo.dll!std::_Container_base12::_Alloc_proxy<std::allocator<std::_Container_proxy>>(std::allocator<std::_Container_proxy> && _Al) Line 1098
sclo.dll!std::vector<rtl::OUString,std::allocator<rtl::OUString>>::vector<rtl::OUString,std::allocator<rtl::OUString>>() Line 445
sclo.dll!sc::TokenStringContext::TokenStringContext(const ScDocument * pDoc, formula::FormulaGrammar::Grammar eGram) Line 38
sclo.dll!sc::FormulaLogger::GroupScope::Impl::Impl(sc::FormulaLogger & rLogger, const rtl::OUString & rPrefix, const ScDocument & rDoc, const ScFormulaCell & rCell, bool bOutputEnabled) Line 80
sclo.dll!std::make_unique<sc::FormulaLogger::GroupScope::Impl,sc::FormulaLogger &,rtl::OUString const &,ScDocument const &,ScFormulaCell const &,bool &,0>(sc::FormulaLogger & <_Args_0>, const rtl::OUString & <_Args_1>, const ScDocument & <_Args_2>, const ScFormulaCell & <_Args_3>, bool & <_Args_4>) Line 2055
sclo.dll!sc::FormulaLogger::GroupScope::GroupScope(sc::FormulaLogger & rLogger, const rtl::OUString & rPrefix, const ScDocument & rDoc, const ScFormulaCell & rCell, bool bOutputEnabled) Line 127
sclo.dll!sc::FormulaLogger::enterGroup(const ScDocument & rDoc, const ScFormulaCell & rCell) Line 352
sclo.dll!ScFormulaCell::InterpretFormulaGroup(long nStartOffset, long nEndOffset) Line 4573
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1606
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::GetErrCode() Line 2956
sclo.dll!ScInterpreter::GetCellValueOrZero(const ScAddress & rPos, ScRefCellValue & rCell) Line 202
sclo.dll!ScInterpreter::GetCellValue(const ScAddress & rPos, ScRefCellValue & rCell) Line 186
sclo.dll!ScInterpreter::GetDouble() Line 2088
sclo.dll!ScInterpreter::CalculateAddSub(bool _bSub) Line 1277
sclo.dll!ScInterpreter::ScAdd() Line 1261
sclo.dll!ScInterpreter::Interpret() Line 4032
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
.......................
<SKIP repeated pattern>
.......................
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::GetErrCode() Line 2956
sclo.dll!ScInterpreter::GetCellValueOrZero(const ScAddress & rPos, ScRefCellValue & rCell) Line 202
sclo.dll!ScInterpreter::GetCellValue(const ScAddress & rPos, ScRefCellValue & rCell) Line 186
sclo.dll!ScInterpreter::GetDouble() Line 2088
sclo.dll!ScInterpreter::CalculateAddSub(bool _bSub) Line 1300
sclo.dll!ScInterpreter::ScAdd() Line 1261
sclo.dll!ScInterpreter::Interpret() Line 4032
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::GetErrCode() Line 2956
sclo.dll!ScInterpreter::GetCellValueOrZero(const ScAddress & rPos, ScRefCellValue & rCell) Line 202
sclo.dll!ScInterpreter::GetCellValue(const ScAddress & rPos, ScRefCellValue & rCell) Line 186
sclo.dll!ScInterpreter::GetDouble() Line 2088
sclo.dll!ScInterpreter::CalculateAddSub(bool _bSub) Line 1300
sclo.dll!ScInterpreter::ScAdd() Line 1261
sclo.dll!ScInterpreter::Interpret() Line 4032
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::GetErrCode() Line 2956
sclo.dll!ScInterpreter::GetCellValueOrZero(const ScAddress & rPos, ScRefCellValue & rCell) Line 202
sclo.dll!ScInterpreter::GetCellValue(const ScAddress & rPos, ScRefCellValue & rCell) Line 186
sclo.dll!ScInterpreter::GetDouble() Line 2088
sclo.dll!ScInterpreter::CalculateAddSub(bool _bSub) Line 1300
sclo.dll!ScInterpreter::ScAdd() Line 1261
sclo.dll!ScInterpreter::Interpret() Line 4032
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::GetErrCode() Line 2956
sclo.dll!ScInterpreter::PushCellResultToken(bool bDisplayEmptyAsString, const ScAddress & rAddress, SvNumFormatType * pRetTypeExpr, unsigned long * pRetIndexExpr, bool bFinalResult) Line 703
sclo.dll!ScInterpreter::CalculateLookup(bool bHLookup) Line 7451
sclo.dll!ScInterpreter::ScVLookup() Line 7519
sclo.dll!ScInterpreter::Interpret() Line 4254
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::IsEmpty() Line 2733
sclo.dll!ScRefCellValue::hasEmptyValue() Line 681
sclo.dll!ScInterpreter::Compare(ScQueryOp eOp) Line 916
sclo.dll!ScInterpreter::ScLess() Line 1214
sclo.dll!ScInterpreter::Interpret() Line 4040
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::IsValue() Line 2745
sclo.dll!`anonymous namespace'::hasNumericImpl(CellType eType, ScFormulaCell * pFormula) Line 155
sclo.dll!ScRefCellValue::hasNumeric() Line 625
sclo.dll!ScInterpreter::FillEntry(ScQueryEntry & rEntry) Line 7484
sclo.dll!ScInterpreter::CalculateLookup(bool bHLookup) Line 7301
sclo.dll!ScInterpreter::ScVLookup() Line 7519
sclo.dll!ScInterpreter::Interpret() Line 4254
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::IsEmpty() Line 2733
sclo.dll!ScRefCellValue::hasEmptyValue() Line 681
sclo.dll!ScInterpreter::Compare(ScQueryOp eOp) Line 916
sclo.dll!ScInterpreter::ScLess() Line 1214
sclo.dll!ScInterpreter::Interpret() Line 4040
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
sclo.dll!lcl_InterpretSpan(std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<ScFormulaCell *>>> & rSpanIter, long nStartOffset, long nEndOffset, const boost::intrusive_ptr<ScFormulaCellGroup> & mxParentGroup, bool & bAllowThreading, ScDocument & rDoc) Line 1669
sclo.dll!lcl_EvalDirty(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> & rCells, long nRow1, long nRow2, ScDocument & rDoc, const boost::intrusive_ptr<ScFormulaCellGroup> & mxGroup, bool bThreadingDepEval, bool bSkipRunning, bool & bIsDirty, bool & bAllowThreading) Line 1779
sclo.dll!ScColumn::HandleRefArrayForParallelism(long nRow1, long nRow2, const boost::intrusive_ptr<ScFormulaCellGroup> & mxGroup) Line 1854
sclo.dll!ScTable::HandleRefArrayForParallelism(short nCol, long nRow1, long nRow2, const boost::intrusive_ptr<ScFormulaCellGroup> & mxGroup) Line 2458
sclo.dll!ScDocument::HandleRefArrayForParallelism(const ScAddress & rPos, long nLength, const boost::intrusive_ptr<ScFormulaCellGroup> & mxGroup) Line 1828
sclo.dll!`anonymous namespace'::ScDependantsCalculator::DoIt() Line 4553
sclo.dll!ScFormulaCell::CheckComputeDependencies(sc::FormulaLogger::GroupScope & rScope, bool fromFirstRow, long nStartOffset, long nEndOffset, bool bCalcDependencyOnly) Line 4683
sclo.dll!ScFormulaCell::InterpretFormulaGroupOpenCL(sc::FormulaLogger::GroupScope & aScope, bool & bDependencyComputed, bool & bDependencyCheckFailed) Line 4988
sclo.dll!ScFormulaCell::InterpretFormulaGroup(long nStartOffset, long nEndOffset) Line 4644
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1606
sclo.dll!ScFormulaCell::MaybeInterpret() Line 446
sclo.dll!ScFormulaCell::IsEmpty() Line 2733
sclo.dll!ScRefCellValue::hasEmptyValue() Line 681
sclo.dll!ScInterpreter::PushCellResultToken(bool bDisplayEmptyAsString, const ScAddress & rAddress, SvNumFormatType * pRetTypeExpr, unsigned long * pRetIndexExpr, bool bFinalResult) Line 692
sclo.dll!ScInterpreter::Interpret() Line 4633
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext, ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1939
sclo.dll!ScFormulaCell::Interpret(long nStartOffset, long nEndOffset) Line 1632
sclo.dll!`anonymous namespace'::DirtyCellInterpreter::operator()(unsigned __int64 __formal, ScFormulaCell * p) Line 104
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'::DirtyCellInterpreter>(mdds::detail::mtv::iterator_value_node<unsigned __int64,mdds::mtv::base_element_block> & rNode, unsigned __int64 nOffset, unsigned __int64 nDataSize, `anonymous-namespace'::DirtyCellInterpreter & rFuncElem) Line 110
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'::DirtyCellInterpreter,sc::FuncElseNoOp<unsigned __int64,bool>>(const mdds::detail::mtv::iterator_base<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>::iterator_trait,mdds::detail::mtv::private_data_forward_update<mdds::detail::mtv::iterator_value_node<unsigned __int64,mdds::mtv::base_element_block>>> & itPos, 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, unsigned __int64 nStart, unsigned __int64 nEnd, `anonymous-namespace'::DirtyCellInterpreter & rFuncElem, sc::FuncElseNoOp<unsigned __int64,bool> & rFuncElse) Line 354
sclo.dll!sc::ProcessFormula<`anonymous namespace'::DirtyCellInterpreter>(const mdds::detail::mtv::iterator_base<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>::iterator_trait,mdds::detail::mtv::private_data_forward_update<mdds::detail::mtv::iterator_value_node<unsigned __int64,mdds::mtv::base_element_block>>> & it, 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, long nRow1, long nRow2, `anonymous-namespace'::DirtyCellInterpreter & rFuncElem) Line 33
sclo.dll!ScColumn::InterpretDirtyCells(long nRow1, long nRow2) Line 115
sclo.dll!ScTable::InterpretDirtyCells(short nCol1, long nRow1, short nCol2, long nRow2) Line 2504
sclo.dll!ScDocument::InterpretDirtyCells(const ScRangeList & rRanges) Line 3908
sclo.dll!ScMyOLEFixer::CreateChartListener(ScDocument * pDoc, const rtl::OUString & rName, const rtl::OUString & rRangeList) Line 101
sclo.dll!ScMyOLEFixer::FixupOLEs() Line 141
sclo.dll!ScMyTables::FixupOLEs() Line 77
sclo.dll!ScXMLImport::endDocument() Line 1700
expwraplo.dll!sax_fastparser::FastSaxParserImpl::parseStream(const com::sun::xml::sax::InputSource & rStructSource) Line 875
expwraplo.dll!sax_fastparser::FastSaxParser::parseStream(const com::sun::xml::sax::InputSource & aInputSource) Line 1373
mergedlo.dll!SvXMLImport::parseStream(const com::sun::xml::sax::InputSource & aInputSource) Line 488
sclo.dll!ScXMLImportWrapper::ImportFromComponent(const com::sun::uno::Reference<com::sun::uno::XComponentContext> & xContext, const com::sun::uno::Reference<com::sun::frame::XModel> & xModel, const com::sun::uno::Reference<com::sun::xml::sax::XParser> & xParser, com::sun::xml::sax::InputSource & aParserInput, const rtl::OUString & sComponentName, const rtl::OUString & sDocName, const rtl::OUString & sOldDocName, const com::sun::uno::Sequence<com::sun::uno::Any> & aArgs, bool bMustBeSuccessfull) Line 189
sclo.dll!ScXMLImportWrapper::Import(ImportFlags nMode, ErrCode & rError) Line 513
sclo.dll!ScDocShell::LoadXML(SfxMedium * pLoadMedium, const com::sun::uno::Reference<com::sun::embed::XStorage> & xStor) Line 481
sclo.dll!ScDocShell::Load(SfxMedium & rMedium) Line 628
mergedlo.dll!SfxObjectShell::LoadOwnFormat(SfxMedium & rMedium) Line 3033
mergedlo.dll!SfxObjectShell::DoLoad(SfxMedium * pMed) Line 674
mergedlo.dll!SfxBaseModel::load(const com::sun::uno::Sequence<com::sun:🫘:PropertyValue> & seqArguments) Line 1879
mergedlo.dll!`anonymous namespace'::SfxFrameLoader_Impl::load(const com::sun::uno::Sequence<com::sun:🫘:PropertyValue> & rArgs, const com::sun::uno::Reference<com::sun::frame::XFrame> & _rTargetFrame) Line 680
mergedlo.dll!framework::LoadEnv::impl_loadContent() Line 1157
mergedlo.dll!framework::LoadEnv::start() Line 395
mergedlo.dll!framework::LoadEnv::startLoading(const rtl::OUString & sURL, const com::sun::uno::Sequence<com::sun:🫘:PropertyValue> & lMediaDescriptor, const com::sun::uno::Reference<com::sun::frame::XFrame> & xBaseFrame, const rtl::OUString & sTarget, long nSearchFlags, LoadEnvFeatures eFeature) Line 300
mergedlo.dll!framework::LoadEnv::loadComponentFromURL(const com::sun::uno::Reference<com::sun::frame::XComponentLoader> & xLoader, const com::sun::uno::Reference<com::sun::uno::XComponentContext> & xContext, const rtl::OUString & sURL, const rtl::OUString & sTarget, long nSearchFlags, const com::sun::uno::Sequence<com::sun:🫘:PropertyValue> & lArgs) Line 169
mergedlo.dll!framework::Desktop::loadComponentFromURL(const rtl::OUString & sURL, const rtl::OUString & sTargetFrameName, long nSearchFlags, const com::sun::uno::Sequence<com::sun:🫘:PropertyValue> & lArguments) Line 613
unotest.dll!unotest::MacrosTest::loadFromDesktop(const rtl::OUString & rURL, const rtl::OUString & rDocService, const com::sun::uno::Sequence<com::sun:🫘:PropertyValue> & rExtraArgs) Line 57
test_sc_uicalc.dll!ScUiCalcTest::createDoc(const char * pName) Line 64
test_sc_uicalc.dll!testTdf124815::TestBody() Line 138
test_sc_uicalc.dll!std::_Invoker_pmf_pointer::_Call<void (__cdecl testTdf124815::*)(void),testTdf124815 * &>(void(testTdf124815::*)() _Pmf, testTdf124815 * & _Arg1) Line 1579
test_sc_uicalc.dll!std::invoke<void (__cdecl testTdf124815::*&)(void),testTdf124815 * &>(void(testTdf124815::*)() & _Obj, testTdf124815 * & <_Args_0>) Line 1579
test_sc_uicalc.dll!std::_Invoker_ret<std::_Unforced,0>::_Call<void (__cdecl testTdf124815::*&)(void),testTdf124815 * &>(void(testTdf124815::*)() & <_Vals_0>, testTdf124815 * & <_Vals_1>) Line 1615
test_sc_uicalc.dll!std::_Call_binder<std::_Unforced,0,void (__cdecl testTdf124815::*)(void),std::tuple<testTdf124815 *>,std::tuple<>>(std::_Invoker_ret<std::_Unforced,0> __formal, std::integer_sequence<unsigned __int64,0> __formal, void(testTdf124815::*)() & _Obj, std::tuple<testTdf124815 *> & _Tpl, std::tuple<> && _Ut) Line 1402
test_sc_uicalc.dll!std::_Binder<std::_Unforced,void (__cdecl testTdf124815::*&)(void),testTdf124815 * &>::operator()<>() Line 1442
test_sc_uicalc.dll!std::_Invoker_functor::_Call<std::_Binder<std::_Unforced,void (__cdecl testTdf124815::*&)(void),testTdf124815 * &> &>(std::_Binder<std::_Unforced,void (__cdecl testTdf124815::*&)(void),testTdf124815 * &> & _Obj) Line 1579
test_sc_uicalc.dll!std::invoke<std::_Binder<std::_Unforced,void (__cdecl testTdf124815::*&)(void),testTdf124815 * &> &>(std::_Binder<std::_Unforced,void (__cdecl testTdf124815::*&)(void),testTdf124815 * &> & _Obj) Line 1579
test_sc_uicalc.dll!std::_Invoker_ret<void,1>::_Call<std::_Binder<std::_Unforced,void (__cdecl testTdf124815::*&)(void),testTdf124815 * &> &>(std::_Binder<std::_Unforced,void (__cdecl testTdf124815::*&)(void),testTdf124815 * &> & <_Vals_0>) Line 1598
test_sc_uicalc.dll!std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void (__cdecl testTdf124815::*&)(void),testTdf124815 * &>,void>::_Do_call() Line 927
test_sc_uicalc.dll!std::_Func_class<void>::operator()() Line 970
test_sc_uicalc.dll!CppUnit::TestCaller<testTdf124815>::runTest() Line 176
cppunitd_dll.dll!CppUnit::TestCaseMethodFunctor::operator()() Line 33
vclbootstrapprotector.dll!`anonymous namespace'::Protector::protect(const CppUnit::Functor & functor, const CppUnit::ProtectorContext & __formal) Line 46
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() Line 21
unobootstrapprotector.dll!`anonymous namespace'::Prot::protect(const CppUnit::Functor & functor, const CppUnit::ProtectorContext & __formal) Line 79
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() Line 21
unoexceptionprotector.dll!`anonymous namespace'::Prot::protect(const CppUnit::Functor & functor, const CppUnit::ProtectorContext & context) Line 61
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() Line 21
cppunitd_dll.dll!CppUnit::DefaultProtector::protect(const CppUnit::Functor & functor, const CppUnit::ProtectorContext & context) Line 15
cppunitd_dll.dll!CppUnit::ProtectorChain::ProtectFunctor::operator()() Line 21
cppunitd_dll.dll!CppUnit::ProtectorChain::protect(const CppUnit::Functor & functor, const CppUnit::ProtectorContext & context) Line 86
cppunitd_dll.dll!CppUnit::TestResult::protect(const CppUnit::Functor & functor, CppUnit::Test * test, const std::string & shortDescription) Line 182
cppunitd_dll.dll!CppUnit::TestCase::run(CppUnit::TestResult * result) Line 91
cppunitd_dll.dll!CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult * controller) Line 65
cppunitd_dll.dll!CppUnit::TestComposite::run(CppUnit::TestResult * result) Line 24
cppunitd_dll.dll!CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult * controller) Line 65
cppunitd_dll.dll!CppUnit::TestComposite::run(CppUnit::TestResult * result) Line 24
cppunitd_dll.dll!CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult * result) Line 47
cppunitd_dll.dll!CppUnit::TestResult::runTest(CppUnit::Test * test) Line 150
cppunitd_dll.dll!CppUnit::TestRunner::run(CppUnit::TestResult & controller, const std::string & testPath) Line 96
cppunittester.exe!`anonymous namespace'::ProtectedFixtureFunctor::run() Line 316
cppunittester.exe!sal_main() Line 466
cppunittester.exe!main(int argc, char * * argv) Line 373
cppunittester.exe!invoke_main() Line 79
cppunittester.exe!__scrt_common_main_seh() Line 288
cppunittester.exe!__scrt_common_main() Line 331
cppunittester.exe!mainCRTStartup() Line 17
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
=======================

It doesn't happen on Linux; opening the test file in Calc succeeds
on Windows.

We set stack size of soffice.bin to 10000 in desktop/Executable_soffice_bin.mk;
let's do the same for cppunittester, that had the default stack of
1 M [1], which is obviously too small and does not match existing
recursion control values in the code (see ScFormulaCell::Interpret).

[1] https://docs.microsoft.com/en-us/windows/win32/procthread/thread-stack-size

Change-Id: I30e6abaea120d6ed5bafb798628e7fc26a8dac59
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90556
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-16 14:02:00 +01:00
..
android
cppunittester
inc
osl
qa
rtl
test
textenc
util
CppunitTest_Module_DLL.mk
CppunitTest_sal_comtools.mk
CppunitTest_sal_osl.mk
CppunitTest_sal_osl_security.mk
CppunitTest_sal_rtl.mk
CppunitTest_sal_types.mk
Executable_cppunittester.mk Avoid stack overflow in testTdf124815 on Windows 2020-03-16 14:02:00 +01:00
Executable_osl_process_child.mk
Library_lo-bootstrap.mk
Library_sal.mk
Library_sal_textenc.mk
Makefile
Module_sal.mk
README

System abstraction layer; rtl, osl and sal

rtl:
Platform independent strings

osl:
platform specific stuff, threads, dynamic loading, process, ipc, etc

Exports only C API and some inline-methods (only C++ API).