sal/Executable_cppunittester.mk |    8 ++++++++
 1 file changed, 8 insertions(+)

New commits:
commit bc0ba22e794332c339effe817ab766ee8a1b3e40
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Mon Mar 16 12:59:54 2020 +0300
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Mon Mar 16 14:02:00 2020 +0100

    Avoid stack overflow in testTdf124815 on Windows
    
    Regression from commit 2af67c35d283abefe6030a5b90b831b0b797dd62.
    
    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::SharedS
 
tring>,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::star::xml::sax::InputSource & rStructSource) Line 875
    expwraplo.dll!sax_fastparser::FastSaxParser::parseStream(const 
com::sun::star::xml::sax::InputSource & aInputSource) Line 1373
    mergedlo.dll!SvXMLImport::parseStream(const 
com::sun::star::xml::sax::InputSource & aInputSource) Line 488
    sclo.dll!ScXMLImportWrapper::ImportFromComponent(const 
com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & 
xContext, const com::sun::star::uno::Reference<com::sun::star::frame::XModel> & 
xModel, const com::sun::star::uno::Reference<com::sun::star::xml::sax::XParser> 
& xParser, com::sun::star::xml::sax::InputSource & aParserInput, const 
rtl::OUString & sComponentName, const rtl::OUString & sDocName, const 
rtl::OUString & sOldDocName, const 
com::sun::star::uno::Sequence<com::sun::star::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::star::uno::Reference<com::sun::star::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::star::uno::Sequence<com::sun::star::beans::PropertyValue> & 
seqArguments) Line 1879
    mergedlo.dll!`anonymous namespace'::SfxFrameLoader_Impl::load(const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rArgs, 
const com::sun::star::uno::Reference<com::sun::star::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::star::uno::Sequence<com::sun::star::beans::PropertyValue> & 
lMediaDescriptor, const 
com::sun::star::uno::Reference<com::sun::star::frame::XFrame> & xBaseFrame, 
const rtl::OUString & sTarget, long nSearchFlags, LoadEnvFeatures eFeature) 
Line 300
    mergedlo.dll!framework::LoadEnv::loadComponentFromURL(const 
com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> & 
xLoader, const 
com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & 
xContext, const rtl::OUString & sURL, const rtl::OUString & sTarget, long 
nSearchFlags, const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArgs) 
Line 169
    mergedlo.dll!framework::Desktop::loadComponentFromURL(const rtl::OUString & 
sURL, const rtl::OUString & sTargetFrameName, long nSearchFlags, const 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & 
lArguments) Line 613
    unotest.dll!unotest::MacrosTest::loadFromDesktop(const rtl::OUString & 
rURL, const rtl::OUString & rDocService, const 
com::sun::star::uno::Sequence<com::sun::star::beans::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.kagan...@collabora.com>

diff --git a/sal/Executable_cppunittester.mk b/sal/Executable_cppunittester.mk
index 509196b25ecd..3b9016783b80 100644
--- a/sal/Executable_cppunittester.mk
+++ b/sal/Executable_cppunittester.mk
@@ -28,4 +28,12 @@ $(eval $(call 
gb_Executable_add_exception_objects,cppunittester,\
        sal/cppunittester/cppunittester \
 ))
 
+ifeq ($(COM),MSC)
+
+$(eval $(call gb_Executable_add_ldflags,cppunittester,\
+    /STACK:10000000 \
+))
+
+endif
+
 # vim: set noet sw=4 ts=4:
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to