cling
cling copied to clipboard
Error in MSVC when trying to import standard library headers
- [x] Checked for duplicates
Describe the bug
Following comments from other issue: https://github.com/root-project/cling/issues/414
-
clingcompiled using VS 2017 and MSVC 14.10.25017 - Including any standard headers in a shell session with
clingthat has the MSVC14.28.29910or14.29.30035(likely others too) include paths causes a crash
cling version 1.0~dev
Using VCToolsInstallDir 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\'
Adding VisualStudio SDK: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include'
Adding Windows SDK: 'C:\Program Files (x86)\Windows Kits\10\include'
Adding UniversalCRT SDK: 'C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt'
clang version 9.0.1 (http://root.cern.ch/git/clang.git ddd3a61c4ec7cb9661e8dc9781dc797f70537519) (http://root.cern.ch/git/llvm.git 85e42859fb6de405e303fc8d92e37ff2b652b4b5)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir:
ignoring duplicate directory "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include"
as it is a non-system directory that duplicates a system directory
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"
as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
C:\Program Files (x86)\Windows Kits\10\include
C:\Users\rayga\Projects\tmp\cling\cling-build\builddir\Debug\lib\clang\9.0.1\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\ATLMFC\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt
End of search list.
Adding runtime include paths:
"C:/Windows/Temp/cling-obj/include;C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/tools/cling/include;C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/tools/clang/include;C:/Users/rayga/Projects/tmp/cling/cling-build/builddir/tools/clang/include;C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/include;C:/Users/rayga/Projects/tmp/cling/cling-build/builddir/include"
Added include paths:
C:/Windows/Temp/cling-obj/include
C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/tools/cling/include
C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/tools/clang/include
C:/Users/rayga/Projects/tmp/cling/cling-build/builddir/tools/clang/include
C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/include
C:/Users/rayga/Projects/tmp/cling/cling-build/builddir/include
Setting up system headers with clang:
ignoring nonexistent directory "C:/Windows/Temp/cling-obj/include"
ignoring duplicate directory "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include"
as it is a non-system directory that duplicates a system directory
ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"
as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
C:\Program Files (x86)\Windows Kits\10\include
C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/tools/cling/include
C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/tools/clang/include
C:/Users/rayga/Projects/tmp/cling/cling-build/builddir/tools/clang/include
C:/Users/rayga/Projects/tmp/cling/cling-build/cling-src/include
C:/Users/rayga/Projects/tmp/cling/cling-build/builddir/include
C:\Users\rayga\Projects\tmp\cling\cling-build\builddir\Debug\lib\clang\9.0.1\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\ATLMFC\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt
End of search list.
#include "cling/Interpreter/RuntimeUniverse.h"
namespace cling { class Interpreter; namespace runtime { Interpreter* gCling=(Interpreter*)0x57c7d8f2d0;
RuntimeOptions* gClingOpts=(RuntimeOptions*)0x57c7d8f4cc;}}
extern "C" int __cxa_atexit(void (*f)(void*), void*, void*) ;
#define __dso_handle ((void*)0x57c7d8f2d0)
extern "C" int atexit(void(*f)()) { return __cxa_atexit((void(*)(void*))f, 0, __dso_handle); }
extern "C" int at_quick_exit(void(*f)()) { return __cxa_atexit((void(*)(void*))f, 0, __dso_handle); }
extern "C" __cdecl int (*__dllonexit(int (__cdecl *f)(void**, void**), void**, void**))(void**, void**) { __cxa_atexit((void(*)(void*))f, 0, __dso_handle); return f; }
extern "C" __cdecl int (*_onexit(int (__cdecl *f)()))() { __cxa_atexit((void(*)(void*))f, 0, __dso_handle); return f; }
Added include paths:
.
****************** CLING ******************
* Type C++ code and press enter to run it *
* Type .q to exit *
*******************************************
[cling]$ #include <string>
In file included from input_line_3:1:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\string:11:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\xstring:14:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\xmemory:16:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\xutility:15:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\utility:138:9: error: expected member name or ';' after declaration specifiers
!conjunction_v<_Is_implicitly_default_constructible<_Uty1>, _Is_implicitly_default_constructible<_Uty2>>)
^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\utility:138:9: error: expected ')'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\utility:137:23: note: to match this '('
constexpr explicit(
^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\utility:219:24: error: expected member name or ';' after declaration specifiers
constexpr explicit(!conjunction_v<is_convertible<const _Other1&, _Ty1>, is_convertible<const _Other2&, _Ty2>>)
~~~~~~~~~~~~~~~~~~ ^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\utility:219:24: error: expected ')'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\\include\utility:219:23: note: to match this '('
constexpr explicit(!conjunction_v<is_convertible<const _Other1&, _Ty1>, is_convertible<const _Other2&, _Ty2>>)
^
Assertion failed: !Calls.empty() && "Missing lambda call operator!", file C:\Users\rayga\Projects\tmp\cling\cling-build\cling-src\tools\clang\lib\AST\DeclCXX.cpp, line 1391
Stack dump:
0. Program arguments: cling.exe -v
#0 0x00007ff7d1f354cc HandleAbort c:\users\rayga\projects\tmp\cling\cling-build\cling-src\lib\support\windows\signals.inc:408:0
#1 0x00007ff90defbc31 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x6bc31)
#2 0x00007ff90defd889 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x6d889)
#3 0x00007ff90df034b5 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x734b5)
#4 0x00007ff90df03027 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x73027)
#5 0x00007ff90df01091 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x71091)
#6 0x00007ff90df03a1f (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x73a1f)
#7 0x00007ff7d63adb0a clang::CXXRecordDecl::getLambdaCallOperator(void)const c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\clang\lib\ast\declcxx.cpp:1391:0
#8 0x00007ff7d63f0957 clang::LambdaExpr::getCallOperator(void)const c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\clang\lib\ast\exprcxx.cpp:1213:0
#9 0x00007ff7d1c002da clang::RecursiveASTVisitor<cling::`anonymous namespace'::StaticVarCollector>::TraverseLambdaExpr c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\clang\include\clang\ast\recursiveastvisitor.h:2424:0
#10 0x00007ff7d1c5552c clang::RecursiveASTVisitor<cling::`anonymous namespace'::StaticVarCollector>::dataTraverseNode c:\users\rayga\projects\tmp\cling\cling-build\builddir\tools\clang\include\clang\ast\stmtnodes.inc:1035:0
#11 0x00007ff7d1c1d6fa clang::RecursiveASTVisitor<cling::`anonymous namespace'::StaticVarCollector>::TraverseStmt c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\clang\include\clang\ast\recursiveastvisitor.h:655:0
#12 0x00007ff7d1bcca45 cling::`anonymous namespace'::StaticVarCollector::StaticVarCollector c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\declunloader.cpp:549:0
#13 0x00007ff7d1bb6ab3 cling::DeclUnloader::VisitFunctionDecl(class clang::FunctionDecl *) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\declunloader.cpp:572:0
#14 0x00007ff7d1aa55e2 clang::declvisitor::Base<struct std::add_pointer,class cling::DeclUnloader,bool>::VisitCXXMethodDecl(class clang::CXXMethodDecl *) c:\users\rayga\projects\tmp\cling\cling-build\builddir\tools\clang\include\clang\ast\declnodes.inc:405:0
#15 0x00007ff7d1aa4eaf clang::declvisitor::Base<struct std::add_pointer,class cling::DeclUnloader,bool>::Visit(class clang::Decl *) c:\users\rayga\projects\tmp\cling\cling-build\builddir\tools\clang\include\clang\ast\declnodes.inc:405:0
#16 0x00007ff7d1aa497d cling::DeclUnloader::UnloadDecl(class clang::Decl *) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\declunloader.h:66:0
#17 0x00007ff7d1eafdb1 cling::TransactionUnloader::unloadDeclarations(class cling::Transaction *,class cling::DeclUnloader &) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\transactionunloader.cpp:53:0
#18 0x00007ff7d1eb04a9 cling::TransactionUnloader::RevertTransaction(class cling::Transaction *) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\transactionunloader.cpp:119:0
#19 0x00007ff7d1dd4096 cling::Interpreter::unload(class cling::Transaction &) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\interpreter.cpp:1538:0#20 0x00007ff7d1daa876 cling::IncrementalParser::commitTransaction(class llvm::PointerIntPair<class cling::Transaction *,2,enum cling::IncrementalParser::EParseResult,struct llvm::PointerLikeTypeTraits<class cling::Transaction *>,struct llvm::PointerIntPairInfo<class cling::Transaction *,2,struct llvm::PointerLikeTypeTraits<class cling::Transaction *> > > &,bool) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\incrementalparser.cpp:548:0
#21 0x00007ff7d1dab3ef cling::IncrementalParser::Compile(class llvm::StringRef,class cling::CompilationOptions const &) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\incrementalparser.cpp:777:0
#22 0x00007ff7d1dcde28 cling::Interpreter::DeclareInternal(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cling::CompilationOptions const &,class cling::Transaction * *)const c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\interpreter.cpp:1341:0
#23 0x00007ff7d1dd2123 cling::Interpreter::process(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cling::Value *,class cling::Transaction * *,bool) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\interpreter\interpreter.cpp:818:0
#24 0x00007ff7d1ef8729 cling::MetaProcessor::process(class llvm::StringRef,enum cling::Interpreter::CompilationResult &,class cling::Value *,bool) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\metaprocessor\metaprocessor.cpp:341:0
#25 0x00007ff7d20ca129 cling::UserInterface::runInteractively(bool) c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\lib\userinterface\userinterface.cpp:117:0
#26 0x00007ff7d19152b9 main c:\users\rayga\projects\tmp\cling\cling-build\cling-src\tools\cling\tools\driver\cling.cpp:138:0
#27 0x00007ff7da88f694 invoke_main f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:65:0
#28 0x00007ff7da88f557 __scrt_common_main_seh f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:259:0
#29 0x00007ff7da88f41e __scrt_common_main f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:302:0
#30 0x00007ff7da88f6b9 mainCRTStartup f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp:17:0
#31 0x00007ff94cbc54e0 (C:\WINDOWS\System32\KERNEL32.DLL+0x154e0)
#32 0x00007ff94d9e485b (C:\WINDOWS\SYSTEM32\ntdll.dll+0x485b)
Expected behavior
It doesn't crash or some help text describing why it's broken/where to begin fixing it is displayed
To Reproduce
- Follow compile steps from issue https://github.com/root-project/cling/issues/414
- Then try to run
clingwith recent MSVC version include paths