[ROOT 6.34] Windows: TMethodCall and Boost.Coroutine2 issue?


ROOT Version: 6.34.04
Platform: win64 (Windows 10)
Compiler: MSVC 19.33.31630.0
Boost Version: 1.81


Dear ROOT Developers & Maintainers,

I try to port the software of my client to ROOT 6.34. And I encountered a crash on Windows 10.
It may be related to TMethodCall and/or Boost.Coroutine2.

MWE

Here is a MWE which attempts to reproduce the problem: Files · 44135 · Uranie CEA / Prerequisites / Prerequisites Detection / Detect ROOT + Boost · GitLab

$ tree
.
├── CMakeLists.txt
├── inc
│   ├── LinkDef.h
│   └── Routine.hpp
├── print.C
├── src
│   └── Routine.cpp
└── test_routine.C

CMakeLists.txt:

add_test(NAME routine_with_macro
    COMMAND ${ROOT_root_CMD} -q
        "${CMAKE_CURRENT_SOURCE_DIR}/test_routine.C(\"${CMAKE_CURRENT_SOURCE_DIR}/print.C\", \"print\")")
add_test(NAME routine_without_macro
    COMMAND ${ROOT_root_CMD} -q "${CMAKE_CURRENT_SOURCE_DIR}/test_routine.C(\"\", \"\")")

inc/LinkDef.h:

#pragma link C++ class MWE::Routine;

inc/Routine.hpp:

namespace MWE {
    class Routine {
    public:
        Routine(const std::string& macro, const std::string& name): _macro{macro}, _name{name} {};
        void test();
    [...]
    };
}

print.C:

void print(int number) {
    cout << "print::number: " << number << endl;
}

src/Routine.cpp:

[...]
void my_print(int number) {
    std::cout << "my_print::number: " << number << std::endl;
}

ClassImp(MWE::Routine);
void MWE::Routine::test() {
    if (!_macro.empty()) {
        std::cout << "test::macro: " << _macro << std::endl;
        gROOT->LoadMacro(_macro.data());
    }
    TMethodCall call;
    if (!_name.empty()) {
        std::cout << "test::name: " << _name << std::endl;
        call.Init(_name.data(), "0");
    }

    coroutine_t::pull_type source(
        [&](coroutine_t::push_type& sink) {
            int value=1;
            if (_name.empty())
                my_print(0);
            else
                call.Execute();
            sink(value);
        }
    );
[...]
}

test_routine.C:

void test_routine(const string& macro, const string& name) {
    MWE::Routine routine(macro, name);
    routine.test();
}

ROOT 6.32

ROOT 6.32 seems to run the tests:

$ Get-Variable CXX_STANDARD,CMAKE_CONFIGURATION_TYPES,CTEST_OPTIONS
CXX_STANDARD                   17  
CMAKE_CONFIGURATION_TYPES      Release
CTEST_OPTIONS                  -VV
$ cmake -DCMAKE_INSTALL_PREFIX="${CI_PROJECT_DIR}/install" ../ -DCMAKE_CXX_STANDARD="${CXX_STANDARD}"
[...]
-- Found Boost: C:/.../detect-root-boost/outputs/boost/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found suitable version "1.81.0", minimum required is "1.66") found components: coroutine system 
[...]
$ cmake --build . --config ${CMAKE_CONFIGURATION_TYPES} --target install -j $(Get-ComputerInfo -Property CsProcessors).CsProcessors.NumberOfCores[0]
[...]
$ ctest -C ${CMAKE_CONFIGURATION_TYPES} ${CTEST_OPTIONS}
[...]
1:    ------------------------------------------------------------------
1:   | Welcome to ROOT 6.32.08                        https://root.cern |
1:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
1:   | Built for win64 on Jan 24 2025, 09:43:32                         |
1:   | From tags/v6-32-08@v6-32-08                                      |
1:   | With MSVC 19.33.31630.0                                          |
1:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
1:    ------------------------------------------------------------------
1: 
1: 
1: Processing C:/.../detect-root-boost/test_routine.C("C:/.../detect-root-boost/print.C", "print")...
1: test::macro: C:/.../detect-root-boost/print.C
1: test::name: print
1: print::number: 0
1: test::source: 1 
1/3 Test #1: routine_with_macro ...............   Passed    0.50 sec
[...]
2:    ------------------------------------------------------------------
2:   | Welcome to ROOT 6.32.08                        https://root.cern |
2:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
2:   | Built for win64 on Jan 24 2025, 09:43:32                         |
2:   | From tags/v6-32-08@v6-32-08                                      |
2:   | With MSVC 19.33.31630.0                                          |
2:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
2:    ------------------------------------------------------------------
2: 
2: 
2: Processing C:/.../detect-root-boost/test_routine.C("", "")...
2: my_print::number: 0
2: test::source: 1 
2/3 Test #2: routine_without_macro ............   Passed    0.41 sec

ROOT 6.34

With ROOT 6.34, routine_with_macro crashes:

1:    ------------------------------------------------------------------
1:   | Welcome to ROOT 6.34.04                        https://root.cern |
1:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
1:   | Built for win64 on Feb 13 2025, 18:30:09                         |
1:   | From tags/v6-34-04@v6-34-04                                      |
1:   | With MSVC 19.33.31630.0                                          |
1:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
1:    ------------------------------------------------------------------
1: 
1: 
1: Processing C:/.../detect-root-boost/test_routine.C("C:/.../detect-root-boost/print.C", "print")...
1: test::macro: C:/.../detect-root-boost/print.C
1: test::name: print
1/3 Test #1: routine_with_macro ...............***Exception: SegFault  0.60 sec
[...]
2:    ------------------------------------------------------------------
2:   | Welcome to ROOT 6.34.04                        https://root.cern |
2:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
2:   | Built for win64 on Feb 13 2025, 18:30:09                         |
2:   | From tags/v6-34-04@v6-34-04                                      |
2:   | With MSVC 19.33.31630.0                                          |
2:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
2:    ------------------------------------------------------------------
2: 
2: 
2: Processing C:/.../detect-root-boost/test_routine.C("", "")...
2: my_print::number: 0
2: test::source: 1 
2/3 Test #2: routine_without_macro ............   Passed    0.33 sec

I apologise for the long post & multiple edits.

  • Do you recommend avoiding TMethodCall?
  • Or do you think the issue may be elsewhere ?

Best Regards,

Hi,
Did you try on any other platform by any chance? (just to see if it’s a platform dependent issue)

Thank you for your answer.

Here are the results on 4 platforms (2 Linux + 2 Windows):

Platform Status
Red Hat 8 Test #1: routine_with_macro ............... Passed 0.30 sec
Ubuntu 22 Test #1: routine_with_macro ............... Passed 0.27 sec
Windows 10 Test #1: routine_with_macro ...............***Exception: SegFault 0.60 sec
Windows Server 2016 Test #1: routine_with_macro ...............***Exception: SegFault 0.49 sec

Tell me if I misunderstood what you meant by platform.

Thanks, it’s exactly what I meant. So we’ll investigate and let you know.

1 Like

So here is what I get with boost v1.87.0 built from source and ROOT master:

C:\root-dev\build\x64\detect-root-boost>ctest -VV -C Release
UpdateCTestConfiguration  from :C:/root-dev/build/x64/detect-root-boost/DartConfiguration.tcl
Parse Config file:C:/root-dev/build/x64/detect-root-boost/DartConfiguration.tcl
UpdateCTestConfiguration  from :C:/root-dev/build/x64/detect-root-boost/DartConfiguration.tcl
Parse Config file:C:/root-dev/build/x64/detect-root-boost/DartConfiguration.tcl
Test project C:/root-dev/build/x64/detect-root-boost
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 1
    Start 1: routine

1: Test command: C:\root-dev\build\x64\release\bin\root.exe "-q" "C:/root-dev/git/detect-root-boost/test_routine.C"
1: Working Directory: C:/root-dev/build/x64/detect-root-boost
1: Environment variable modifications:
1:  PATH=path_list_prepend:C:/Program Files/LinkBoost/bin
1: Test timeout computed to be: 1500
1:    ------------------------------------------------------------------
1:   | Welcome to ROOT 6.35.01                        https://root.cern |
1:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
1:   | Built for win64 on Mar 05 2025, 14:58:06                         |
1:   | From heads/master@v6-35-01-1504-gd010068639                      |
1:   | With MSVC 19.44.34823.2                                          |
1:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
1:    ------------------------------------------------------------------
1:
1:
1: Processing C:/root-dev/git/detect-root-boost/test_routine.C...
1: 0
1: 1 1 2 3 5
1/2 Test #1: routine ..........................   Passed    1.41 sec
test 2
    Start 2: process

2: Test command: C:\root-dev\build\x64\release\bin\root.exe "-q" "C:/root-dev/git/detect-root-boost/test_process.C"
2: Working Directory: C:/root-dev/build/x64/detect-root-boost
2: Environment variable modifications:
2:  PATH=path_list_prepend:C:/Program Files/LinkBoost/bin
2: Test timeout computed to be: 1500
2:    ------------------------------------------------------------------
2:   | Welcome to ROOT 6.35.01                        https://root.cern |
2:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
2:   | Built for win64 on Mar 05 2025, 14:58:06                         |
2:   | From heads/master@v6-35-01-1504-gd010068639                      |
2:   | With MSVC 19.44.34823.2                                          |
2:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
2:    ------------------------------------------------------------------
2:
2:
2: Processing C:/root-dev/git/detect-root-boost/test_process.C...
2/2 Test #2: process ..........................   Passed    2.08 sec

100% tests passed, 0 tests failed out of 2

Total Test time (real) =   3.52 sec

C:\root-dev\build\x64\detect-root-boost>

I’ll try with ROOT v6.34 and let you know

Same result with ROOT v6.34.04:

C:\root-dev\build\x64\detect-root-boost>ctest -VV -C Release
UpdateCTestConfiguration  from :C:/root-dev/build/x64/detect-root-boost/DartConfiguration.tcl
Parse Config file:C:/root-dev/build/x64/detect-root-boost/DartConfiguration.tcl
UpdateCTestConfiguration  from :C:/root-dev/build/x64/detect-root-boost/DartConfiguration.tcl
Parse Config file:C:/root-dev/build/x64/detect-root-boost/DartConfiguration.tcl
Test project C:/root-dev/build/x64/detect-root-boost
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 1
    Start 1: routine

1: Test command: C:\Users\bellenot\Downloads\root\bin\root.exe "-q" "C:/root-dev/git/detect-root-boost/test_routine.C"
1: Working Directory: C:/root-dev/build/x64/detect-root-boost
1: Environment variable modifications:
1:  PATH=path_list_prepend:C:/Program Files/LinkBoost/bin
1: Test timeout computed to be: 1500
1:    ------------------------------------------------------------------
1:   | Welcome to ROOT 6.34.04                        https://root.cern |
1:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
1:   | Built for win64 on Feb 10 2025, 12:25:15                         |
1:   | From tags/v6-34-04@v6-34-04                                      |
1:   | With MSVC 19.39.33521.0                                          |
1:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
1:    ------------------------------------------------------------------
1:
1:
1: Processing C:/root-dev/git/detect-root-boost/test_routine.C...
1: 0
1: 1 1 2 3 5
1/2 Test #1: routine ..........................   Passed    0.93 sec
test 2
    Start 2: process

2: Test command: C:\Users\bellenot\Downloads\root\bin\root.exe "-q" "C:/root-dev/git/detect-root-boost/test_process.C"
2: Working Directory: C:/root-dev/build/x64/detect-root-boost
2: Environment variable modifications:
2:  PATH=path_list_prepend:C:/Program Files/LinkBoost/bin
2: Test timeout computed to be: 1500
2:    ------------------------------------------------------------------
2:   | Welcome to ROOT 6.34.04                        https://root.cern |
2:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
2:   | Built for win64 on Feb 10 2025, 12:25:15                         |
2:   | From tags/v6-34-04@v6-34-04                                      |
2:   | With MSVC 19.39.33521.0                                          |
2:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
2:    ------------------------------------------------------------------
2:
2:
2: Processing C:/root-dev/git/detect-root-boost/test_process.C...
2/2 Test #2: process ..........................   Passed    1.90 sec

100% tests passed, 0 tests failed out of 2

Total Test time (real) =   2.85 sec

Thank you very much for your tests with ROOT 6.34 & 6.35.

Could you also test the following tag?

44135

Sorry: I didn’t give the version of the MWE in the post.

The failing test should be routine_with_macro.

Best Regards,

OK, right, now I see the error:

1: Processing C:/root-dev/git/detect-root-boost/test_routine.C("C:/root-dev/git/detect-root-boost/print.C", "print")...
1: test::macro: C:/root-dev/git/detect-root-boost/print.C
1: test::name: print
1/3 Test #1: routine_with_macro ...............***Exception: SegFault  1.66 sec

Looking into it…

1 Like

FYI, here is the stack trace:

 	libCling.dll!__chkstk() Line 109	Unknown
	libCling.dll!clang::AttributeCommonInfo::calculateAttributeSpellingListIndex() Line 152	C++
 	libCling.dll!clang::AttributeCommonInfo::getAttributeSpellingListIndex() Line 234	C++
 	libCling.dll!clang::ParsedAttr::existsInTarget(const clang::TargetInfo & Target) Line 203	C++
 	libCling.dll!ProcessDeclAttribute(clang::Sema & S, clang::Scope * scope, clang::Decl * D, const clang::ParsedAttr & AL, const clang::Sema::ProcessDeclAttributeOptions & Options) Line 9053	C++
 	libCling.dll!clang::Sema::ProcessDeclAttributeList(clang::Scope * S, clang::Decl * D, const clang::ParsedAttributesView & AttrList, const clang::Sema::ProcessDeclAttributeOptions & Options) Line 9866	C++
 	libCling.dll!clang::Sema::ProcessDeclAttributes(clang::Scope * S, clang::Decl * D, const clang::Declarator & PD) Line 10116	C++
 	libCling.dll!clang::Sema::ActOnFunctionDeclarator(clang::Scope * S, clang::Declarator & D, clang::DeclContext * DC, clang::TypeSourceInfo * TInfo, clang::LookupResult & Previous, llvm::MutableArrayRef<clang::TemplateParameterList *> TemplateParamListsRef, bool & AddToScope) Line 10432	C++
 	libCling.dll!clang::Sema::HandleDeclarator(clang::Scope * S, clang::Declarator & D, llvm::MutableArrayRef<clang::TemplateParameterList *> TemplateParamLists) Line 6554	C++
 	libCling.dll!clang::Sema::ActOnStartOfFunctionDef(clang::Scope * FnBodyScope, clang::Declarator & D, llvm::MutableArrayRef<clang::TemplateParameterList *> TemplateParameterLists, clang::Sema::SkipBodyInfo * SkipBody, clang::Sema::FnBodyKind BodyKind) Line 15457	C++
 	libCling.dll!clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator & D, const clang::Parser::ParsedTemplateInfo & TemplateInfo, clang::Parser::LateParsedAttrList * LateParsedAttrs) Line 1440	C++
 	libCling.dll!clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec & DS, clang::DeclaratorContext Context, clang::ParsedAttributes & Attrs, clang::SourceLocation * DeclEnd, clang::Parser::ForRangeInit * FRI) Line 2272	C++
 	libCling.dll!clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes & Attrs, clang::ParsedAttributes & DeclSpecAttrs, clang::ParsingDeclSpec & DS, clang::AccessSpecifier AS) Line 1244	C++
 	libCling.dll!clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes & Attrs, clang::ParsedAttributes & DeclSpecAttrs, clang::ParsingDeclSpec * DS, clang::AccessSpecifier AS) Line 1258	C++
 	libCling.dll!clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes & Attrs, clang::ParsedAttributes & DeclSpecAttrs, clang::ParsingDeclSpec * DS) Line 1070	C++
 	libCling.dll!clang::Parser::ParseLinkage(clang::ParsingDeclSpec & DS, clang::DeclaratorContext Context) Line 378	C++
 	libCling.dll!clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes & Attrs, clang::ParsedAttributes & DeclSpecAttrs, clang::ParsingDeclSpec & DS, clang::AccessSpecifier AS) Line 1240	C++
 	libCling.dll!clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes & Attrs, clang::ParsedAttributes & DeclSpecAttrs, clang::ParsingDeclSpec * DS, clang::AccessSpecifier AS) Line 1266	C++
 	libCling.dll!clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes & Attrs, clang::ParsedAttributes & DeclSpecAttrs, clang::ParsingDeclSpec * DS) Line 1070	C++
 	libCling.dll!clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef> & Result, clang::Sema::ModuleImportState & ImportState) Line 760	C++
 	libCling.dll!clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef> & Result, clang::Sema::ModuleImportState & ImportState) Line 607	C++
 	libCling.dll!cling::IncrementalParser::ParseOrWrapTopLevelDecl() Line 966	C++
 	libCling.dll!cling::IncrementalParser::ParseInternal(llvm::StringRef input) Line 915	C++
 	libCling.dll!cling::IncrementalParser::Compile(llvm::StringRef input, const cling::CompilationOptions & Opts) Line 842	C++
 	libCling.dll!cling::Interpreter::DeclareInternal(const std::string & input, const cling::CompilationOptions & CO, cling::Transaction * * T) Line 1365	C++
 	libCling.dll!cling::Interpreter::declare(const std::string & input, cling::Transaction * * T) Line 999	C++
 	libCling.dll!cling::Interpreter::DeclareCFunction(llvm::StringRef name, llvm::StringRef code, bool withAccessControl, cling::Transaction * & T) Line 1272	C++
 	libCling.dll!cling::Interpreter::compileFunction(llvm::StringRef name, llvm::StringRef code, bool ifUnique, bool withAccessControl) Line 1317	C++
 	libCling.dll!TClingCallFunc::compile_wrapper(const std::string & wrapper_name, const std::string & wrapper, bool withAccessControl) Line 144	C++
 	libCling.dll!TClingCallFunc::make_wrapper() Line 1061	C++
 	libCling.dll!TClingCallFunc::IFacePtr() Line 1782	C++
 	libCling.dll!TClingCallFunc::Exec(void * address, TInterpreterValue * interpVal) Line 1570	C++
 	libCling.dll!TCling::CallFunc_Exec(CallFunc_t * func, void * address) Line 7873	C++
 	libCore.dll!TMethodCall::Execute(void * object) Line 430	C++
 	libLinkBoost.dll!TMethodCall::Execute() Line 132	C++
 	libLinkBoost.dll!MWE::Routine::test::__l2::<lambda>(boost::coroutines2::detail::push_coroutine<int> & sink) Line 31	C++
 	libLinkBoost.dll!boost::coroutines2::detail::pull_coroutine<int>::control_block::<lambda>(boost::context::fiber && c) Line 88	C++
 	[External Code]	
 	libLinkBoost.dll!boost::context::detail::fiber_record<boost::context::fiber,boost::context::basic_fixedsize_stack<boost::context::stack_traits>,boost::context::fiber <lambda>(boost::context::fiber &&)>::run(void * fctx) Line 157	C++
 	libLinkBoost.dll!boost::context::detail::fiber_entry<boost::context::detail::fiber_record<boost::context::fiber,boost::context::basic_fixedsize_stack<boost::context::stack_traits>,boost::context::fiber <lambda>(boost::context::fiber &&)>>(boost::context::detail::transfer_t t) Line 97	C++
 	libLinkBoost.dll!make_fcontext() Line 159	Unknown
 	[External Code]	

And frankly speaking, I’m not sure if I can find the real issue behind this. But I’ll try nevertheless

Thank you for the stack trace.

How can I get a similar result?

Is it with a “debug mode” and Visual Studio? Here is what I see when I run the test of my client with VS 2022:

libCling.dll!00007fff85590b67()
libCling.dll!00007fff84b2e021()
libCling.dll!00007fff832f7c0b()
libCling.dll!00007fff834f09e6()
[...]
checkRelauncher.exe!00007ff79b7f3615()
checkRelauncher.exe!00007ff79b7f3360()
[..]
000001759b0bbfb0()

You would need to build from source in Debug mode with LLVM in Debug mode too (using -DLLVM_BUILD_TYPE=Debug). But since it’s not a real debug mode (it’s more like RelWithDebInfo), it’s not sure you’ll get the same results (I used an experimental full debug build)

1 Like

Hello,

I would like to propose a workaround solution with a “precompiled function”:

add_test(NAME routine_function
    COMMAND ${ROOT_root_CMD} -q "${CMAKE_CURRENT_SOURCE_DIR}/print.C(0)"
        "${CMAKE_CURRENT_SOURCE_DIR}/test_routine_function.C")

where the function is still
https://gitlab.com/uranie-cea/prerequisites/prerequisites_detection/detect-root-boost/-/blob/f58a305a2d9fdfeb6036adfe60f6c73cd81ff57b/print.C

void print(int number) {
    cout << "print::number: " << number << endl;
}

and a new script is
https://gitlab.com/uranie-cea/prerequisites/prerequisites_detection/detect-root-boost/-/blob/f58a305a2d9fdfeb6036adfe60f6c73cd81ff57b/test_routine_function.C

void test_routine_function() {
    MWE::Routine routine(print);
    routine.test();
}

I added a new constructor to “eat” the function: inc/Routine.hpp · f58a305a2d9fdfeb6036adfe60f6c73cd81ff57b · Uranie CEA / Prerequisites / Prerequisites Detection / Detect ROOT + Boost · GitLab

    class Routine {
    public:
        Routine(const std::function<void(int)>& function): _function{std::move(function)} {};
    [...]
    };

And I call the function in the test() method: src/Routine.cpp · f58a305a2d9fdfeb6036adfe60f6c73cd81ff57b · Uranie CEA / Prerequisites / Prerequisites Detection / Detect ROOT + Boost · GitLab

void MWE::Routine::test() {
    coroutine_t::pull_type source(
        [&](coroutine_t::push_type& sink) {
            int value=1;
            if (_function != nullptr)
                _function(0);
        [...]
        }
    );
[...]
}

Here is the result of routine_function test on Windows 10:

3: Test command: C:\...\root.exe "-q" "C:/.../detect-root-boost/print.C(0)" "C:/.../detect-root-boost/test_routine_function.C"
3: Working Directory: C:/.../detect-root-boost/build
3: Environment variable modifications: 
3:  PATH=path_list_prepend:C:/.../detect-root-boost/install/bin
3: Test timeout computed to be: 1500
3:    ------------------------------------------------------------------
3:   | Welcome to ROOT 6.34.04                        https://root.cern |
3:   | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
3:   | Built for win64 on Feb 13 2025, 18:30:09                         |
3:   | From tags/v6-34-04@v6-34-04                                      |
3:   | With MSVC 19.33.31630.0                                          |
3:   | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
3:    ------------------------------------------------------------------
3: 
3: 
3: Processing C:/.../detect-root-boost/print.C(0)...
3: print::number: 0
3: Processing C:/.../detect-root-boost/test_routine_function.C...
3: print::number: 0
3: test::source: 1 
3/4 Test #3: routine_function .................   Passed    0.39 sec
  • Could it be a possible workaround?
  • Or do you think this solution is not relevant?

Best Regards,

1 Like

Well, if it works for you and does what you’re expecting, then I guess it’s fine, up to you. I’ll try to give it a try as soon as I can…

Right, it seems to work:

C:\root-dev\build\x64\detect-root-boost>ctest -j8 -C Debug
Test project C:/root-dev/build/x64/detect-root-boost
    Start 1: routine_with_macro
    Start 3: routine_function
    Start 4: process
    Start 2: routine_without_macro
1/4 Test #2: routine_without_macro ............   Passed    4.40 sec
2/4 Test #4: process ..........................   Passed    5.07 sec
3/4 Test #1: routine_with_macro ...............***Exception: SegFault  6.67 sec
4/4 Test #3: routine_function .................   Passed    6.89 sec

75% tests passed, 1 tests failed out of 4

Total Test time (real) =   6.92 sec

The following tests FAILED:
          1 - routine_with_macro (SEGFAULT)
Errors while running CTest

Congratulations for the workaround!

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.