[libcxx-commits] [PATCH] D134036: [libc++][format] Implements string escaping.

Erich Keane via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Oct 25 11:22:31 PDT 2022


erichkeane added subscribers: urnathan, ChuanqiXu, erichkeane.
erichkeane added a comment.

So I'm seeing a libcxx build failure from this patch, though it is pretty clear it is revealing a Clang bug.  I'm having trouble minimizing it though, so I was hoping you/someone here could help with it?

   llvm-lit: /iusers/ekeane1/workspaces/delayed-concepts/libcxx/utils/libcxx/test/newconfig.py:19: note: (llvm-libc++-shared.cfg.in) Using %{cxx} substitution: '/iusers/ekeane1/workspaces/delayed-concepts/build/./bin/clang++'
  llvm-lit: /iusers/ekeane1/workspaces/delayed-concepts/libcxx/utils/libcxx/test/newconfig.py:19: note: (llvm-libc++-shared.cfg.in) Using %{flags} substitution: ' --target=x86_64-unknown-linux-gnu'
  llvm-lit: /iusers/ekeane1/workspaces/delayed-concepts/libcxx/utils/libcxx/test/newconfig.py:19: note: (llvm-libc++-shared.cfg.in) Using %{compile_flags} substitution: '-nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support -std=c++2b -fmodules -fcxx-modules -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-noexcept-type -Wno-atomic-alignment -W
  no-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -D_LIBCPP_DISABLE_AVAILABILITY -fcoroutines-ts -Werror=thread-safety -Wuser-defined-warnings'
  llvm-lit: /iusers/ekeane1/workspaces/delayed-concepts/libcxx/utils/libcxx/test/newconfig.py:19: note: (llvm-libc++-shared.cfg.in) Using %{link_flags} substitution: '-lc++experimental -nostdlib++ -L %{lib} -Wl,-rpath,%{lib} -lc++ -pthread'
  llvm-lit: /iusers/ekeane1/workspaces/delayed-concepts/libcxx/utils/libcxx/test/newconfig.py:19: note: (llvm-libc++-shared.cfg.in) Using %{exec} substitution: '%{executor} --execdir %T -- '
  llvm-lit: /iusers/ekeane1/workspaces/delayed-concepts/libcxx/utils/libcxx/test/newconfig.py:19: note: (llvm-libc++-shared.cfg.in) All available features: modules-build, verify-support, clang-16.0, locale.fr_CA.ISO8859-1, clang, stdlib=libc++, long_tests, clang-16.0.0, fcoroutines-ts, locale.zh_CN.UTF-8, locale.ja_JP.UTF-8, linux, objective-c++, has-fblocks, target=x86_64-unknown-linux-gnu, buildhost=linux, locale.fr_FR.UTF-8, c++experimental, locale.cs_CZ.ISO8859-2, libcpp
  -abi-version=1, fdelayed-template-parsing, diagnose-if-support, locale.en_US.UTF-8, stdlib=llvm-libc++, has-fconstexpr-steps, -fsized-deallocation, clang-16, c++2b, thread-safety, -faligned-allocation, locale.ru_RU.UTF-8, has-unix-headers
  FAIL: llvm-libc++-shared.cfg.in :: std/utilities/format/format.functions/escaped_output.ascii.pass.cpp (1 of 7790)
  ******************** TEST 'llvm-libc++-shared.cfg.in :: std/utilities/format/format.functions/escaped_output.ascii.pass.cpp' FAILED ********************
  Script:
  --
  : 'COMPILED WITH';  /iusers/ekeane1/workspaces/delayed-concepts/build/./bin/clang++ /localdisk2/ekeane1/workspaces/delayed-concepts/libcxx/test/std/utilities/format/format.functions/escaped_output.ascii.pass.cpp  --target=x86_64-unknown-linux-gnu -nostdinc++ -I /iusers/ekeane1/workspaces/delayed-concepts/build/include/c++/v1 -I /iusers/ekeane1/workspaces/delayed-concepts/build/include/x86_64-unknown-linux-gnu/c++/v1 -I /iusers/ekeane1/workspaces/delayed-concepts/libcxx/tes
  t/support -std=c++2b -fmodules -fcxx-modules -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-noexcept-type -Wno-atomic-alignment -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -D_LIBCPP_DISAB
  LE_AVAILABILITY -fcoroutines-ts -Werror=thread-safety -Wuser-defined-warnings -D_LIBCPP_HAS_NO_UNICODE -lc++experimental -nostdlib++ -L /iusers/ekeane1/workspaces/delayed-concepts/build/./lib/x86_64-unknown-linux-gnu -Wl,-rpath,/iusers/ekeane1/workspaces/delayed-concepts/build/./lib/x86_64-unknown-linux-gnu -lc++ -pthread -o /localdisk2/ekeane1/workspaces/delayed-concepts/build/runtimes/runtimes-bins/test/std/utilities/format/format.functions/Output/escaped_output.ascii.pa
  ss.cpp.dir/t.tmp.exe
  : 'EXECUTED AS';  "/usr/bin/python3.6" /iusers/ekeane1/workspaces/delayed-concepts/libcxx/test/../utils/run.py --execdir /localdisk2/ekeane1/workspaces/delayed-concepts/build/runtimes/runtimes-bins/test/std/utilities/format/format.functions/Output/escaped_output.ascii.pass.cpp.dir --  /localdisk2/ekeane1/workspaces/delayed-concepts/build/runtimes/runtimes-bins/test/std/utilities/format/format.functions/Output/escaped_output.ascii.pass.cpp.dir/t.tmp.exe
  --
  Exit Code: 1
  
  Command Output (stdout):
  --
  $ ":" "COMPILED WITH"
  $ "/iusers/ekeane1/workspaces/delayed-concepts/build/./bin/clang++" "/localdisk2/ekeane1/workspaces/delayed-concepts/libcxx/test/std/utilities/format/format.functions/escaped_output.ascii.pass.cpp" "--target=x86_64-unknown-linux-gnu" "-nostdinc++" "-I" "/iusers/ekeane1/workspaces/delayed-concepts/build/include/c++/v1" "-I" "/iusers/ekeane1/workspaces/delayed-concepts/build/include/x86_64-unknown-linux-gnu/c++/v1" "-I" "/iusers/ekeane1/workspaces/delayed-concepts/libcxx/test/support" "-std=c++2b" "-fmodules" "-fcxx-modules" "-Werror" "-Wall" "-Wctad-maybe-unsupported" "-Wextra" "-Wshadow" "-Wundef" "-Wno-unused-command-line-argument" "-Wno-attributes" "-Wno-pessimizing-move" "-Wno-c++11-extensions" "-Wno-noexcept-type" "-Wno-atomic-alignment" "-Wno-user-defined-literals" "-Wno-tautological-compare" "-Wsign-compare" "-Wunused-variable" "-Wunused-parameter" "-Wunreachable-code" "-Wno-unused-local-typedef" "-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER" "-D_LIBCPP_ENABLE_EXPERIMENTAL" "-D_LIBCPP_DISABLE_AVAILABILITY" "-fcoroutines-ts" "-Werror=thread-safety" "-Wuser-defined-warnings" "-D_LIBCPP_HAS_NO_UNICODE" "-lc++experimental" "-nostdlib++" "-L" "/iusers/ekeane1/workspaces/delayed-concepts/build/./lib/x86_64-unknown-linux-gnu" "-Wl,-rpath,/iusers/ekeane1/workspaces/delayed-concepts/build/./lib/x86_64-unknown-linux-gnu" "-lc++" "-pthread" "-o" "/localdisk2/ekeane1/workspaces/delayed-concepts/build/runtimes/runtimes-bins/test/std/utilities/format/format.functions/Output/escaped_output.ascii.pass.cpp.dir/t.tmp.exe"
  # command stderr:
  clang-16: tools/clang/include/clang/AST/AbstractBasicReader.inc:736: clang::APValue clang::serialization::BasicReaderBase<T>::readAPValue() [with Impl = clang::ASTRecordReader]: Assertion `lvaluePath->getType() == elemTy && "Unexpected type reference!"' failed.
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
  Stack dump:
  0.      Program arguments: /localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -main-file-name escaped_output.ascii.pass.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/localdisk2/ekeane1/workspaces/delayed-concepts/build/runtimes/runtimes-bins/test/std/utilities/format/format.functions -nostdinc++ -resource-dir /localdisk2/ekeane1/workspaces/delayed-concepts/build/lib/clang/16.0.0 -I /iusers/ekeane1/workspaces/delayed-concepts/build/include/c++/v1 -I /iusers/ekeane1/workspaces/delayed-concepts/build/include/x86_64-unknown-linux-gnu/c++/v1 -I /iusers/ekeane1/workspaces/delayed-concepts/libcxx/test/support -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D _LIBCPP_ENABLE_EXPERIMENTAL -D _LIBCPP_DISABLE_AVAILABILITY -D _LIBCPP_HAS_NO_UNICODE -internal-isystem /localdisk2/ekeane1/workspaces/delayed-concepts/build/lib/clang/16.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-noexcept-type -Wno-atomic-alignment -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Werror=thread-safety -Wuser-defined-warnings -std=c++2b -fdeprecated-macro -fdebug-compilation-dir=/localdisk2/ekeane1/workspaces/delayed-concepts/build/runtimes/runtimes-bins/test/std/utilities/format/format.functions -ferror-limit 19 -pthread -fcoroutines-ts -fgnuc-version=4.2.1 -fmodules -fimplicit-module-maps -fmodules-cache-path=/nfs/site/home/ekeane1/.cache/clang/ModuleCache -fmodules-validate-system-headers -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/lit-tmp-ddqg5hwq/escaped_output-3e7200.o -x c++ /localdisk2/ekeane1/workspaces/delayed-concepts/libcxx/test/std/utilities/format/format.functions/escaped_output.ascii.pass.cpp
  1.      <eof> parser at end of file
  2.      Per-file LLVM IR generation
  3.      /iusers/ekeane1/workspaces/delayed-concepts/build/include/c++/v1/__format/formatter_output.h:443:1: Generating code for declaration 'std::__formatter::__is_escaped_sequence_written'
   #0 0x0000000007ff1cff PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
   #1 0x0000000007fef44c SignalHandler(int) Signals.cpp:0:0
   #2 0x00007f4a9fb0bdd0 __restore_rt sigaction.c:0:0
   #3 0x00007f4a9e34e70f raise (/lib64/libc.so.6+0x3770f)
   #4 0x00007f4a9e338b25 abort (/lib64/libc.so.6+0x21b25)
   #5 0x00007f4a9e3389f9 _nl_load_domain.cold.0 loadmsgcat.c:0:0
   #6 0x00007f4a9e346cc6 .annobin___GI___assert_fail.end assert.c:0:0
   #7 0x0000000008ddfda8 clang::serialization::BasicReaderBase<clang::ASTRecordReader>::readAPValue() ASTReaderDecl.cpp:0:0
   #8 0x0000000008df0c99 clang::ASTStmtReader::VisitConstantExpr(clang::ConstantExpr*) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8df0c99)
   #9 0x0000000008df1eda clang::ASTReader::ReadStmtFromStream(clang::serialization::ModuleFile&) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8df1eda)
  #10 0x0000000008d5a3e4 clang::ASTReader::GetExternalDeclStmt(unsigned long) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8d5a3e4)
  #11 0x000000000ac32830 clang::FunctionDecl::getBody(clang::FunctionDecl const*&) const (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0xac32830)
  #12 0x00000000084c6f71 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x84c6f71)
  #13 0x0000000008418cf6 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8418cf6)
  #14 0x0000000008414db5 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8414db5)
  #15 0x000000000841d339 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d339)
  #16 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #17 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #18 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #19 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #20 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #21 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #22 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #23 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #24 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #25 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #26 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #27 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #28 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #29 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #30 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #31 0x000000000841d288 clang::CodeGen::CodeGenModule::EmitDeferred() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x841d288)
  #32 0x00000000084200bd clang::CodeGen::CodeGenModule::Release() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x84200bd)
  #33 0x0000000008d0fb1a (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&) ModuleBuilder.cpp:0:0
  #34 0x0000000008d0f29d clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
  #35 0x0000000009f41bbd clang::ParseAST(clang::Sema&, bool, bool) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x9f41bbd)
  #36 0x0000000008d0e398 clang::CodeGenAction::ExecuteAction() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8d0e398)
  #37 0x0000000008c2cf09 clang::FrontendAction::Execute() (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8c2cf09)
  #38 0x0000000008bc1fe1 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8bc1fe1)
  #39 0x0000000008d05b3b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x8d05b3b)
  #40 0x00000000056a2474 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x56a2474)
  #41 0x000000000569b057 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
  #42 0x000000000569f98b clang_main(int, char**) (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x569f98b)
  #43 0x00007f4a9e33a6a3 __libc_start_main (/lib64/libc.so.6+0x236a3)
  #44 0x000000000569a92e _start (/localdisk2/ekeane1/workspaces/delayed-concepts/build/bin/clang-16+0x569a92e)
  clang-16: error: unable to execute command: Aborted (core dumped)
  clang-16: error: clang frontend command failed due to signal (use -v to see invocation)
  clang version 16.0.0 (https://github.com/llvm/llvm-project.git a48007355a03851f0f9bfcafd7a7865ca7467416)
  Target: x86_64-unknown-linux-gnu
  Thread model: posix
  InstalledDir: /iusers/ekeane1/workspaces/delayed-concepts/build/./bin
  clang-16: note: diagnostic msg:
  ********************
  
  PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
  Preprocessed source(s) and associated run script(s) are located at:
  clang-16: note: diagnostic msg: /tmp/lit-tmp-ddqg5hwq/escaped_output-b4d1d3.cpp
  clang-16: note: diagnostic msg: /tmp/lit-tmp-ddqg5hwq/escaped_output-b4d1d3.cache
  clang-16: note: diagnostic msg: /tmp/lit-tmp-ddqg5hwq/escaped_output-b4d1d3.sh
  clang-16: note: diagnostic msg:
  
  ********************

This happens consistently for me (across a number of files), in all compile modes, but with libcxx modules enabled

  cmake -G Ninja ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_PROJECTS="clang;lldb" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DLLVM_USE_LINKER=lld -DLIBCXX_TEST_PARAMS="enable_modules=True"

I just don't really have a good idea how to debug it however, nor what ended up causing this.  So any help you could provide would be grately appreciated.  The result as it sits is that I have no ability to test libcxx.  Also, perhaps @ChuanqiXu or @urnathan have some idea, as this DOES seem modules related.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134036/new/

https://reviews.llvm.org/D134036



More information about the libcxx-commits mailing list