[llvm-bugs] [Bug 36718] New: segfault on non-trivial designated initializer

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Mar 13 17:55:47 PDT 2018


https://bugs.llvm.org/show_bug.cgi?id=36718

            Bug ID: 36718
           Summary: segfault on non-trivial designated initializer
           Product: clang
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: marcus.brinkmann at ruhr-uni-bochum.de
                CC: llvm-bugs at lists.llvm.org

Simple test program that crashes clang (gcc gives error "non-trivial designated
initializers not supported"). Note that I am not asking to support this weird
piece of code (I am not even sure if it's in any way standard-conform).

struct Foo {
  int x;
};
struct state_s {
  int abs_offset;
  Foo& sink;
};
void bar() {
  Foo* sink;
  auto state = state_s{.sink = *sink, .abs_offset = 0};
}

Compile with -std=c++11 (I am using clang 5.0.1 from NixOS unstable).

$ clang++ -std=c++11 testcase.ii
#0 0x0000000001cc3ada llvm::sys::PrintStackTrace(llvm::raw_ostream&)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1cc3ada)
#1 0x0000000001cc1d16 llvm::sys::RunSignalHandlers()
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1cc1d16)
#2 0x0000000001cc1e4b SignalHandler(int)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1cc1e4b)
#3 0x00007fb6f173fdd0 __restore_rt
(/nix/store/2kcrj1ksd2a14bm5sky182fv2xwfhfap-glibc-2.26-131/lib/libpthread.so.0+0x11dd0)
#4 0x0000000003502af8 clang::ASTContext::getTypeInfoImpl(clang::Type const*)
const
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x3502af8)
#5 0x00000000034fb005 clang::ASTContext::getTypeInfo(clang::Type const*) const
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x34fb005)
#6 0x000000000350291b clang::ASTContext::getPreferredTypeAlign(clang::Type
const*) const
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x350291b)
#7 0x00000000035037cb clang::ASTContext::getDeclAlign(clang::Decl const*, bool)
const
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x35037cb)
#8 0x0000000001ffd524
clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(clang::VarDecl const&)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1ffd524)
#9 0x0000000001ffedca
clang::CodeGen::CodeGenFunction::EmitAutoVarDecl(clang::VarDecl const&)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1ffedca)
#10 0x0000000001fff065 clang::CodeGen::CodeGenFunction::EmitDecl(clang::Decl
const&)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1fff065)
#11 0x0000000001ea0067
clang::CodeGen::CodeGenFunction::EmitDeclStmt(clang::DeclStmt const&)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1ea0067)
#12 0x0000000001eaca6b
clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1eaca6b)
#13 0x0000000001ea8cb2 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt
const*)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1ea8cb2)
#14 0x0000000001ea92af
clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt
const&, bool, clang::CodeGen::AggValueSlot)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1ea92af)
#15 0x0000000001edb5b1
clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::CodeGen::FunctionArgList&,
clang::Stmt const*)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1edb5b1)
#16 0x0000000001ee1bed
clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl,
llvm::Function*, clang::CodeGen::CGFunctionInfo const&)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1ee1bed)
#17 0x0000000001efde08
clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl,
llvm::GlobalValue*)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1efde08)
#18 0x0000000001f1bd08
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl,
llvm::GlobalValue*)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1f1bd08)
#19 0x0000000001f1cd10
clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1f1cd10)
#20 0x0000000001f1d51a
clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x1f1d51a)
#21 0x000000000252e7a1 (anonymous
namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x252e7a1)
#22 0x00000000025262e6
clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x25262e6)
#23 0x00000000029ae443 clang::ParseAST(clang::Sema&, bool, bool)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x29ae443)
#24 0x000000000252c397 clang::CodeGenAction::ExecuteAction()
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x252c397)
#25 0x0000000002214266 clang::FrontendAction::Execute()
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x2214266)
#26 0x00000000021e226c
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x21e226c)
#27 0x00000000022b3293
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x22b3293)
#28 0x00000000008f4ca0 cc1_main(llvm::ArrayRef<char const*>, char const*,
void*)
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x8f4ca0)
#29 0x000000000087e8b4 main
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x87e8b4)
#30 0x00007fb6f022b020 __libc_start_main
(/nix/store/2kcrj1ksd2a14bm5sky182fv2xwfhfap-glibc-2.26-131/lib/libc.so.6+0x21020)
#31 0x00000000008f2a3a _start
(/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0+0x8f2a3a)
Stack dump:
0.      Program arguments:
/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin/clang-5.0 -cc1
-triple x86_64-unknown-linux-gnu -emit-obj -disable-free -disable-llvm-verifier
-discard-value-names -main-file-name testcase.ii -mrelocation-model pic
-pic-level 2 -mthread-model posix -fmath-errno -masm-verbose
-mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64
-momit-leaf-frame-pointer -dwarf-column-info -debugger-tuning=gdb
-nostdsysteminc -resource-dir
/nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/lib/clang/5.0.1 -O2
-Wformat -Wformat-security -Werror=format-security -std=c++11
-fdeprecated-macro -fdebug-compilation-dir
/home/marcus/projects/neopg/neopg/build2/clang-bug -ferror-limit 19
-fmessage-length 181 -fwrapv -stack-protector 2 -stack-protector-buffer-size 4
-fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option
-fcolor-diagnostics -vectorize-loops -vectorize-slp -o
/run/user/1000/testcase-7ac857.o -x c++-cpp-output testcase.ii 
1.      <eof> parser at end of file
2.      testcase.ii:8:6: LLVM IR generation of declaration 'bar'
3.      testcase.ii:8:6: Generating code for declaration 'bar'
clang-5.0: error: unable to execute command: Segmentation fault
clang-5.0: error: clang frontend command failed due to signal (use -v to see
invocation)
clang version 5.0.1 (tags/RELEASE_501/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /nix/store/82vxrh0gjfhs773a61hrcv7ynw1wrzcz-clang-5.0.1/bin
clang-5.0: note: diagnostic msg: PLEASE submit a bug report to  and include the
crash backtrace, preprocessed source, and associated run script.
clang-5.0: note: diagnostic msg: Error generating preprocessed source(s) - no
preprocessable inputs.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180314/4dbd1231/attachment-0001.html>


More information about the llvm-bugs mailing list