Issue 182078
Summary [nsan] nsan pass crashes, seemingly reaching the end of file
Labels new issue
Assignees
Reporter hageboeck
    In clang-21.1.8, I ran into the following crash with nsan:
```
1.      <eof> parser at end of file 
2.      Optimizer 
3. Running pass "nsan" on module "/home/build/code/root/tmva/tmva/src/Factory.cxx" 
 #0 0x00007f475aa29ec3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Support/Unix/Signals.inc:834:22 
 #1 0x00007f475aa267f5 llvm::sys::RunSignalHandlers() /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Support/Signals.cpp:104:20 
 #2 0x00007f475a92c238 HandleCrash /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Support/CrashRecoveryContext.cpp:73:5 
 #3 0x00007f475a92c238 CrashRecoverySignalHandler /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Support/CrashRecoveryContext.cpp:390:62 
 #4 0x00007f4759880020 __restore_rt libc_sigaction.c:0:0 
 #5 0x00007f475bc7a9bb llvm::IRBuilderBase::CreateCast(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, llvm::Twine const&, llvm::MDNode*, llvm::FMFSource) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/include/llvm/IR/IRBuilder.h:2243:5 
 #6 0x00007f475bc80505 llvm::IRBuilderBase::CreateFPTruncFMF(llvm::Value*, llvm::Type*, llvm::FMFSource, llvm::Twine const&, llvm::MDNode*) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/include/llvm/IR/IRBuilder.h:2179:32 
 #7 0x00007f475bc80505 llvm::IRBuilderBase::CreateFPTrunc(llvm::Value*, llvm::Type*, llvm::Twine const&, llvm::MDNode*) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/include/llvm/IR/IRBuilder.h:2169:28 
 #8 0x00007f475bc80505 maybeHandleKnownCallBase /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Transforms/Instrumentation/NumericalStabilitySanitizer.cpp:1614:19 
 #9 0x00007f475bc80505 handleCallBase /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Transforms/Instrumentation/NumericalStabilitySanitizer.cpp:1637:35 
#10 0x00007f475bc82085 createShadowValueWithOperandsAvailable /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Transforms/Instrumentation/NumericalStabilitySanitizer.cpp:1688:35 
#11 0x00007f475bc866e9 llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>::getNumBuckets() const /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/include/llvm/ADT/DenseMap.h:903:43 
#12 0x00007f475bc866e9 llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>, llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>::getNumBuckets() const /var/
tmp/portage/llvm-core/llvm-21.1.8/work/llvm/include/llvm/ADT/DenseMap.h:578:62 
#13 0x00007f475bc866e9 bool llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>, llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>::LookupBucketFor<llvm::
Value*>(llvm::Value* const&, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>*&) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/include/llvm/ADT/DenseMap.h:685:46
#14 0x00007f475bc866e9 std::pair<llvm::DenseMapIterator<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>, false>, bool> llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value
*, llvm::Value*>>, llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>::try_emplace<llvm::Value*>(llvm::Value*&&, llvm::Value*&&) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/include/llvm/ADT/DenseMap.h:258:24
#15 0x00007f475bc866e9 setShadow /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Transforms/Instrumentation/NumericalStabilitySanitizer.cpp:428:59
#16 0x00007f475bc866e9 maybeCreateShadowValue /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Transforms/Instrumentation/NumericalStabilitySanitizer.cpp:1793:18
#17 0x00007f475bc866e9 sanitizeFunction /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Transforms/Instrumentation/NumericalStabilitySanitizer.cpp:2156:27
#18 0x00007f475bc866e9 llvm::NumericalStabilitySanitizerPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Transforms/Instrumentation/NumericalStabilitySanitizer.cpp:639:26
#19 0x00007f4764feb3a6 llvm::detail::PassModel<llvm::Module, llvm::NumericalStabilitySanitizerPass, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /usr/lib/llvm/21/include/llvm/IR/PassManagerInternal.h:92:3
#20 0x00007f475ac21f51 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/include/llvm/IR/PassManagerImpl.h:80:18
#21 0x00007f4764ffc8d2 llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /usr/lib/llvm/21/include/llvm/ADT/SmallPtrSet.h:88:5
#22 0x00007f4764ffc8d2 llvm::SmallPtrSetImpl<llvm::AnalysisKey*>::~SmallPtrSetImpl() /usr/lib/llvm/21/include/llvm/ADT/SmallPtrSet.h:369:7
#23 0x00007f4764ffc8d2 llvm::SmallPtrSet<llvm::AnalysisKey*, 2u>::~SmallPtrSet() /usr/lib/llvm/21/include/llvm/ADT/SmallPtrSet.h:529:7
#24 0x00007f4764ffc8d2 llvm::PreservedAnalyses::~PreservedAnalyses() /usr/lib/llvm/21/include/llvm/IR/Analysis.h:112:7
#25 0x00007f4764ffc8d2 RunOptimizationPipeline /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/CodeGen/BackendUtil.cpp:1210:12
#26 0x00007f4765000839 RunCodegenPipeline /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/CodeGen/BackendUtil.cpp:1222:23
#27 0x00007f4765000839 emitAssembly /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/CodeGen/BackendUtil.cpp:1284:21
#28 0x00007f4765000839 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) /var/tmp/portage/llv
m-core/clang-21.1.8/work/clang/lib/CodeGen/BackendUtil.cpp:1449:25
#29 0x00007f476536e307 llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::release() /usr/lib/llvm/21/include/llvm/ADT/IntrusiveRefCntPtr.h:232:9
#30 0x00007f476536e307 llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::~IntrusiveRefCntPtr() /usr/lib/llvm/21/include/llvm/ADT/IntrusiveRefCntPtr.h:196:34
#31 0x00007f476536e307 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/CodeGen/CodeGenAction.cpp:316:20
#32 0x00007f4763a3d93c clang::ParseAST(clang::Sema&, bool, bool) /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/Parse/ParseAST.cpp:183:34
#33 0x00007f4765c87a72 clang::FrontendAction::Execute() /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/Frontend/FrontendAction.cpp:1225:38
#34 0x00007f4765c09297 llvm::Error::getPtr() const /usr/lib/llvm/21/include/llvm/Support/Error.h:281:12
#35 0x00007f4765c09297 llvm::Error::operator bool() /usr/lib/llvm/21/include/llvm/Support/Error.h:241:22
#36 0x00007f4765c09297 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/Frontend/CompilerInstance.cpp:1055:42
#37 0x00007f4765d1261b std::__shared_ptr<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2>::get() const /usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/shared_ptr_base.h:1667:16
#38 0x00007f4765d1261b std::__shared_ptr_access<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get() const /usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/shared_ptr_base.h:1364:69
#39 0x00007f4765d1261b std::__shared_ptr_access<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2, false, false>::operator*() const /usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/shared_ptr_base.h:1351:16
#40 0x00007f4765d1261b clang::CompilerInvocation::getFrontendOpts() /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/include/clang/Frontend/CompilerInvocation.h:259:48
#41 0x00007f4765d1261b clang::CompilerInstance::getFrontendOpts() /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/include/clang/Frontend/CompilerInstance.h:304:39
#42 0x00007f4765d1261b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:300:29
#43 0x000055999e3648b0 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/tools/driver/cc1_main.cpp:297:40
#44 0x000055999e35e5b3 ExecuteCC1Tool /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/tools/driver/driver.cpp:227:34
#45 0x00007f47657f4c25 operator() /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/Driver/Job.cpp:436:32
#46 0x00007f47657f4c25 callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef> >, std::string*, bool*) const::<lambda()> > /usr/lib/llvm/21/include/llvm/ADT/STLFunctionalExtras.h:46:52
#47 0x00007f475a92c32a llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /var/tmp/portage/llvm-core/llvm-21.1.8/work/llvm/lib/Support/CrashRecoveryContext.cpp:428:1
#48 0x00007f47657f73f5 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/Driver/Job.cpp:440:10
#49 0x00007f47657b0d86 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/Driver/Compilation.cpp:197:3
#50 0x00007f47657b1218 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/Driver/Compilation.cpp:251:5
#51 0x00007f47657c789b llvm::SmallVectorBase<unsigned int>::empty() const /usr/lib/llvm/21/include/llvm/ADT/SmallVector.h:82:46
#52 0x00007f47657c789b clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/lib/Driver/Driver.cpp:2246:28
#53 0x000055999e35f858 llvm::SmallVectorBase<unsigned int>::size() const /usr/lib/llvm/21/include/llvm/ADT/SmallVector.h:79:32
#54 0x000055999e35f858 llvm::SmallVectorTemplateCommon<std::pair<int, clang::driver::Command const*>, void>::end() /usr/lib/llvm/21/include/llvm/ADT/SmallVector.h:270:41
#55 0x000055999e35f858 clang_main(int, char**, llvm::ToolContext const&) /var/tmp/portage/llvm-core/clang-21.1.8/work/clang/tools/driver/driver.cpp:408:26
#56 0x000055999e35ca43 main /var/tmp/portage/llvm-core/clang-21.1.8/work/x/y/clang-abi_x86_64.amd64/tools/driver/clang-driver.cpp:18:1
#57 0x00007f475986ba3e __libc_start_call_main libc-start.c:0:0
#58 0x00007f475986bb64 __libc_start_main@GLIBC_2.2.5 (/usr/lib64/libc.so.6+0x24b64)
#59 0x000055999e35caa5 _start (/usr/lib/llvm/21/bin/clang++-21+0x10aa5)
```

Please find attached the preprocessed file and the run script:

[Factory-2c68dc.cpp](https://github.com/user-attachments/files/25397066/Factory-2c68dc.cpp)
[Factory-2c68dc.sh](https://github.com/user-attachments/files/25397065/Factory-2c68dc.sh)
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to