18 Commits
Author SHA1 Message Date
Stephan Bergmann 05252f87e0 Use consistent conditions in code and makefile
24b06b9c6b "log access violation on windows
tinderboxen" introduced C++ code into sal/cppunittester/cppunittester.cxx that
is conditional on "#if defined(_DEBUG)" (which is defined iff
$(MSVC_USE_DEBUG_RUNTIME) is TRUE, see the setting of -D_DEBUG in
solenv/gbuild/gbuild.mk), and it introduced this corresponding makefile code
which should thus use the same condition.

Change-Id: I62fca71e31ed9215984572dc6a2e05be41651b15
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165080
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-03-21 08:05:03 +01:00
Noel Grandin 24b06b9c6b log access violation on windows tinderboxen
where we currently have no good feedback when something
goes wrong.

Credit: Exception printing code written by
  msdn-whiteknight
as seen at
  https://stackoverflow.com/questions/22467604/how-can-you-use-capturestackbacktrace-to-capture-the-exception-stack-not-the-ca

Change-Id: I44c65b10c0b0151c3236521d62a824570d4cdccf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119561
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-07-28 18:34:08 +02:00
Mike Kaganski b3c8859cd2 Revert "Try to blind-solve cppunittester hangs on Windows"
This reverts commit 1126515226.

Reason for revert: it only took one run after merging the patch to see it
still hangs...

Change-Id: I9235004d0568462b112da7f23bc615f3647f4755
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94677
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-24 12:30:32 +02:00
Mike Kaganski 1126515226 Try to blind-solve cppunittester hangs on Windows
... calling OleInitialize early in sal_main to initialize COM and concurrency.

Seeing intermittent hangs in main thread in CAPNDataObject::GetData calling
m_rIDataObjectOrg->GetData, and the inner stack waiting objects in the code
doing apartment switching (I forgot to save a stack to paste unfortunately),
I suspect that being related to incorrect concurrency model. OleInitialize
docs [1] mention:

  Applications that use the following functionality must call OleInitialize
  before calling any other function in the COM library:

  * Clipboard
  * Drag and Drop
  * Object linking and embedding (OLE)
  * In-place activation

  ...

  Because OLE operations are not thread-safe, OleInitialize specifies the
  concurrency model as single-thread apartment.

CoInitializeEx sets COINIT_MULTITHREADED by default, so possibly that might
get called somewhere before clipboard/OLE code is called. I hope that this
change would fix those hangs.

[1] https://docs.microsoft.com/en-us/windows/win32/api/ole2/nf-ole2-oleinitialize

Change-Id: I7213c9d6cb4bd0691a3ce355995157797d7db93f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94675
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-24 10:28:59 +02:00
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::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.kaganski@collabora.com>
2020-03-16 14:02:00 +01:00
David Ostrovsky de030cd7a2 gbuild: Remove MSVC 2013 legacy code
Uwinapi is discontinued.

Change-Id: I063b4d0d8fab2d60de168e960a63b8181158ac01
Reviewed-on: https://gerrit.libreoffice.org/23198
Reviewed-by: David Ostrovsky <david@ostrovsky.org>
Tested-by: David Ostrovsky <david@ostrovsky.org>
2017-04-21 18:18:44 +02:00
Takeshi Abe 541761d7b8 prefer makefile-gmake-mode
Change-Id: I9cc9bfbddd3a90e00eee3e674994e5d6207f9034
2014-04-28 23:35:42 +09:00
Michael Stahl 70f834827b sal: rename "cppunit/cppunittester" executable
... and put it in OOO layer since it's used by the smoketest instset.

It was in subdirectory for hysteric reasons, to pick up libraries from
module local output directories in the dmake build system.

Change-Id: I73b66672b17ede52c03071eb2ddee1a23c059ea9
2013-09-22 11:08:31 +02:00
Michael Meeks 72e5d0c8fb Move to MPLv2 license headers, with ESC decision and author's permission. 2013-04-30 13:34:06 +01:00
Michael Stahl a53586f4ef gbuild: do not copy boost headers around
- do not use gb_UnpackedTarball_copy_header_files for boost
- adapt the optimization in concat-deps.c for new path
- use boost_headers in all LinkTargets that require it
- add explicit include paths to mysqlc, mysqlcppconn, libvisio, liborcus

Change-Id: I0c43e73ed43cc9d2e6bce8faf55e992d655a0bb9
2013-01-26 22:20:06 +01:00
Michael Stahl 5032dc0fc3 gbuild: invert handling of standard system libraries:
Always link in gb_STDLIBS, except when the library explicitly opts out
with gb_LinkTarget_disable_standard_system_libs.

Change-Id: I489a99114fbfa46d0421a27cf6c7b899dc268a4a
2012-09-28 16:49:08 +02:00
Michael Stahl b85c349783 gbuild: replace direct gb_STDLIBS use with ...
... new gb_LinkTarget_add_standard_system_libs

Change-Id: Ib2bc843098db3d8c6822b45a3d21724e67f57d69
2012-09-28 16:49:06 +02:00
Michael Stahl 2e677c3981 gbuild: split uwinapi out of gb_STDLIBS
Change-Id: I53316e0b9369d806197bccb42cf22d3497af43e7
2012-09-28 16:49:05 +02:00
Michael Stahl c923f7d2c2 gbuild: "use" vs. "add":
Naming convention for gbuild methods:
- "add" is used for stuff that is logically a part of the target
  (i.e. not registered at the Module, but defined in the target's makefile)
- "use" is used for stuff that is logically a different target
  (i.e. it is registered at the Module, has it's own makefile, may be
  in a different module than the target)
2012-04-08 01:05:52 +02:00
Matúš Kukan 84b3f7b345 gbuild: get rid of realpath in gb_Foo_set_include 2012-03-10 21:23:20 +01:00
Tor Lillqvist cf2dede213 No need to compile it as Objective-C++ for iOS any more 2012-02-23 23:09:31 +02:00
Tor Lillqvist bf2d6d8d04 Need to compile cppunittester as Objective-C++ for iOS 2012-01-03 11:35:48 +02:00
Matúš Kukan a9e130ab82 sal: convert to gbuild 2011-12-19 10:14:53 +01:00