zig
zig copied to clipboard
Segmentation fault when running `zig cc -target thumb-linux-musleabi`
Zig Version
0.11.0-dev.1929+4ea2f441d
Steps to Reproduce and Observed Behavior
Create file atom.c:
int main() {
return 0;
}
Run stage4/bin/zig cc /path/to/atom.c -target thumb-linux-musleabi.
Obtained stacktrace:
$ stage3/bin/zig build -p stage4 -Dno-lib -Denable-llvm
...
$ gdb -q --args stage4/bin/zig cc /path/to/atom.c -target thumb-linux-musleabi
Reading symbols from stage4/bin/zig...
(gdb) r
Starting program: /path/to/zig/build/stage4/bin/zig cc /path/to/atom.c -target thumb-linux-musleabi
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffea5ff6c0 (LWP 8549)]
[New Thread 0x7fffe95fe6c0 (LWP 8550)]
[New Thread 0x7fffe85fd6c0 (LWP 8551)]
[New Thread 0x7fffe75fc6c0 (LWP 8552)]
[New Thread 0x7fffe65fb6c0 (LWP 8553)]
[New Thread 0x7fffe55fa6c0 (LWP 8554)]
[New Thread 0x7fffe45f96c0 (LWP 8555)]
[New Thread 0x7fffe35f86c0 (LWP 8556)]
LLVM Emit Object...
Thread 1 "zig" received signal SIGSEGV, Segmentation fault.
0x00007fffee2e26f3 in llvm::RegsForValue::getCopyToRegs(llvm::SDValue, llvm::SelectionDAG&, llvm::SDLoc const&, llvm::SDValue&, llvm::SDValue*, llvm::Value const*, llvm::ISD::NodeType) const
() from /usr/lib/libLLVM-15.so
(gdb) bt
#0 0x00007fffee2e26f3 in llvm::RegsForValue::getCopyToRegs(llvm::SDValue, llvm::SelectionDAG&, llvm::SDLoc const&, llvm::SDValue&, llvm::SDValue*, llvm::Value const*, llvm::ISD::NodeType) const () from /usr/lib/libLLVM-15.so
#1 0x00007fffee2f67ba in llvm::SelectionDAGBuilder::visitInlineAsm(llvm::CallBase const&, llvm::BasicBlock const*) () from /usr/lib/libLLVM-15.so
#2 0x00007fffee331f28 in llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) () from /usr/lib/libLLVM-15.so
#3 0x00007fffee39e0b4 in llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, bool&) () from /usr/lib/libLLVM-15.so
#4 0x00007fffee39f7b9 in llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) () from /usr/lib/libLLVM-15.so
#5 0x00007fffee3a1c52 in ?? () from /usr/lib/libLLVM-15.so
#6 0x00007ffff05056d9 in ?? () from /usr/lib/libLLVM-15.so
#7 0x00007fffedde7333 in ?? () from /usr/lib/libLLVM-15.so
#8 0x00007fffedaf2a10 in llvm::FPPassManager::runOnFunction(llvm::Function&) () from /usr/lib/libLLVM-15.so
#9 0x00007fffedaf2b54 in llvm::FPPassManager::runOnModule(llvm::Module&) () from /usr/lib/libLLVM-15.so
#10 0x00007fffedaf34bb in llvm::legacy::PassManagerImpl::run(llvm::Module&) () from /usr/lib/libLLVM-15.so
#11 0x00000000024a593b in ZigLLVMTargetMachineEmitToFile ()
#12 0x0000000000e2ca98 in codegen.llvm.Object.flushModule (self=0x266cb10, comp=0x266ce38, prog_node=0x7ffffffece80) at /path/to/zig/src/codegen/llvm.zig:833
#13 0x0000000000e4a7d9 in link.Elf.flushModule (self=0x266adf0, comp=0x266ce38, prog_node=0x7ffffffece80) at /path/to/zig/src/link/Elf.zig:1005
#14 0x0000000000e28fc1 in link.File.flushModule (base=0x266adf0, comp=0x266ce38, prog_node=0x7ffffffece80) at link.zig:782
#15 0x0000000000c0cf96 in link.File.linkAsArchive (base=0x266adf0, comp=0x266ce38, prog_node=0x7ffffffece80) at link.zig:954
#16 0x00000000009c1ad2 in link.File.flush (base=0x266adf0, comp=0x266ce38, prog_node=0x7ffffffece80) at link.zig:759
#17 0x00000000009c1526 in Compilation.flush (comp=0x266ce38, prog_node=0x7ffffffece80) at Compilation.zig:2556
#18 0x00000000009c56f7 in Compilation.update (comp=0x266ce38) at Compilation.zig:2520
#19 0x0000000000b20813 in Compilation.buildOutputFromZig (comp=0x2668cf8, src_basename=..., output_mode=Lib, out=0x2669008, misc_task_tag=compiler_rt) at Compilation.zig:5523
#20 0x0000000000b259a3 in Compilation.buildCompilerRtOneShot (comp=0x2668cf8, output_mode=Lib, out=0x2669008) at Compilation.zig:3901
#21 0x00000000009c9026 in Compilation.performAllTheWork (comp=0x2668cf8, main_progress_node=0x7ffffffefae0) at Compilation.zig:3246
#22 0x00000000009c486f in Compilation.update (comp=0x2668cf8) at Compilation.zig:2425
#23 0x00000000009ec7be in main.updateModule (gpa=..., comp=0x2668cf8, hook=<error reading variable: Cannot access memory at address 0x0>) at main.zig:3641
#24 0x00000000008d2541 in main.buildOutputType (gpa=..., arena=..., all_args=..., arg_mode=...) at main.zig:3278
#25 0x00000000008a6440 in main.mainArgs (gpa=..., arena=..., args=...) at main.zig:279
#26 0x00000000008a55a6 in main.main () at main.zig:207
Expected Behavior
No segmentation fault of the compiler.
Next step here is to file an LLVM bug report.
Tried:
zig version 0.13.0-dev.3+dddddcffd
zig cc atom.c -target thumb-linux-musleabi
and it works.