segmentation fault when executing the binary produced by compiling with ldc2 on MacOS (M1)

Kenneth Wolcott kennethwolcott at gmail.com
Sun May 18 20:53:48 UTC 2025


Hi;

I downloaded

https://github.com/ldc-developers/ldc/releases/download/v1.40.1/ldc2-1.40.1-osx-arm64.tar.xz

on my MacOS M1 Mac Mini.

I'm running zsh as my default shell.

I placed the contents of the tarball at /opt/dlang

which ldc2
/opt/dlang/bin/ldc2

     ldc2 -version
     LDC - the LLVM D compiler (1.40.1):
       based on DMD v2.110.0 and LLVM 19.1.7
       built with LDC - the LLVM D compiler (1.39.0)
       Default target: arm64-apple-darwin24.5.0
       Host CPU: apple-m1
       http://dlang.org - http://wiki.dlang.org/LDC


I have a very short test program:

     cat -n ./hello.d
          1	import std.stdio;
          2
          3	void main() {
          4	    writeln("Hello world!");
          5	}


ldc2 -v ./hello.d
binary    /opt/dlang/bin/ldc2
version   1.40.1 (DMD v2.110.0, LLVM 19.1.7)
config    /opt/dlang/etc/ldc2.conf (arm64-apple-darwin24.5.0)
predefs   LDC all D_Version2 assert D_PreConditions 
D_PostConditions D_Invariants D_ModuleInfo D_Exceptions 
D_TypeInfo AArch64 ARM_HardFloat D_HardFloat LittleEndian D_LP64 
D_PIC OSX darwin Posix CppRuntime_LLVM CppRuntime_Clang 
LDC_LLVM_1901 D_ObjectiveC
parse     hello
importall hello
import    object	(/opt/dlang/bin/../import/object.d)
import    
core.attribute	(/opt/dlang/bin/../import/core/attribute.d)
import    
ldc.attributes	(/opt/dlang/bin/../import/ldc/attributes.d)
import    
core.internal.hash	(/opt/dlang/bin/../import/core/internal/hash.d)
import    
core.internal.traits	(/opt/dlang/bin/../import/core/internal/traits.d)
import    
core.internal.entrypoint	(/opt/dlang/bin/../import/core/internal/entrypoint.d)
import    
core.internal.array.appending	(/opt/dlang/bin/../import/core/internal/array/appending.d)
import    
core.internal.array.comparison	(/opt/dlang/bin/../import/core/internal/array/comparison.d)
import    
core.internal.array.equality	(/opt/dlang/bin/../import/core/internal/array/equality.d)
import    
core.internal.array.casting	(/opt/dlang/bin/../import/core/internal/array/casting.d)
import    
core.internal.array.concatenation	(/opt/dlang/bin/../import/core/internal/array/concatenation.d)
import    
core.internal.array.construction	(/opt/dlang/bin/../import/core/internal/array/construction.d)
import    
core.internal.array.arrayassign	(/opt/dlang/bin/../import/core/internal/array/arrayassign.d)
import    
core.internal.array.capacity	(/opt/dlang/bin/../import/core/internal/array/capacity.d)
import    
core.internal.dassert	(/opt/dlang/bin/../import/core/internal/dassert.d)
import    
core.internal.destruction	(/opt/dlang/bin/../import/core/internal/destruction.d)
import    
core.internal.moving	(/opt/dlang/bin/../import/core/internal/moving.d)
import    
core.internal.postblit	(/opt/dlang/bin/../import/core/internal/postblit.d)
import    
core.internal.switch_	(/opt/dlang/bin/../import/core/internal/switch_.d)
import    core.lifetime	(/opt/dlang/bin/../import/core/lifetime.d)
import    
core.internal.attributes	(/opt/dlang/bin/../import/core/internal/attributes.d)
import    core.builtins	(/opt/dlang/bin/../import/core/builtins.d)
import    
ldc.intrinsics	(/opt/dlang/bin/../import/ldc/intrinsics.di)
import    std.stdio	(/opt/dlang/bin/../import/std/stdio.d)
import    
core.stdc.stddef	(/opt/dlang/bin/../import/core/stdc/stddef.d)
import    
std.algorithm.mutation	(/opt/dlang/bin/../import/std/algorithm/mutation.d)
import    std.traits	(/opt/dlang/bin/../import/std/traits.d)
import    std.meta	(/opt/dlang/bin/../import/std/meta.d)
import    
std.range.primitives	(/opt/dlang/bin/../import/std/range/primitives.d)
import    std.typecons	(/opt/dlang/bin/../import/std/typecons.d)
import    
std.format.spec	(/opt/dlang/bin/../import/std/format/spec.d)
import    
std.format.write	(/opt/dlang/bin/../import/std/format/write.d)
import    
std.format.internal.write	(/opt/dlang/bin/../import/std/format/internal/write.d)
import    
std.internal.attributes	(/opt/dlang/bin/../import/std/internal/attributes.d)
import    std.range	(/opt/dlang/bin/../import/std/range/package.d)
import    std.array	(/opt/dlang/bin/../import/std/array.d)
import    
std.functional	(/opt/dlang/bin/../import/std/functional.d)
import    std.conv	(/opt/dlang/bin/../import/std/conv.d)
import    std.ascii	(/opt/dlang/bin/../import/std/ascii.d)
import    
std.range.interfaces	(/opt/dlang/bin/../import/std/range/interfaces.d)
import    
core.stdc.stdio	(/opt/dlang/bin/../import/core/stdc/stdio.d)
import    
core.stdc.stdint	(/opt/dlang/bin/../import/core/stdc/stdint.d)
import    
core.stdc.config	(/opt/dlang/bin/../import/core/stdc/config.d)
import    
core.stdc.signal	(/opt/dlang/bin/../import/core/stdc/signal.d)
import    
core.stdc.wchar_	(/opt/dlang/bin/../import/core/stdc/wchar_.d)
import    core.atomic	(/opt/dlang/bin/../import/core/atomic.d)
import    
core.internal.atomic	(/opt/dlang/bin/../import/core/internal/atomic.d)
import    
core.stdc.stdarg	(/opt/dlang/bin/../import/core/stdc/stdarg.d)
import    
core.stdc.time	(/opt/dlang/bin/../import/core/stdc/time.d)
import    
core.sys.posix.stdc.time	(/opt/dlang/bin/../import/core/sys/posix/stdc/time.d)
import    
core.sys.posix.sys.types	(/opt/dlang/bin/../import/core/sys/posix/sys/types.d)
import    
core.sys.posix.config	(/opt/dlang/bin/../import/core/sys/posix/config.d)
import    
core.sys.posix.stdio	(/opt/dlang/bin/../import/core/sys/posix/stdio.d)
semantic  hello
import    std.exception	(/opt/dlang/bin/../import/std/exception.d)
import    
core.stdc.errno	(/opt/dlang/bin/../import/core/stdc/errno.d)
entry     main      	./hello.d
semantic2 hello
semantic3 hello
import    std.utf	(/opt/dlang/bin/../import/std/utf.d)
import    
core.exception	(/opt/dlang/bin/../import/core/exception.d)
import    
core.internal.string	(/opt/dlang/bin/../import/core/internal/string.d)
import    
std.algorithm.comparison	(/opt/dlang/bin/../import/std/algorithm/comparison.d)
import    
core.stdc.string	(/opt/dlang/bin/../import/core/stdc/string.d)
import    
core.internal.array.duplication	(/opt/dlang/bin/../import/core/internal/array/duplication.d)
import    
core.internal.array.utils	(/opt/dlang/bin/../import/core/internal/array/utils.d)
import    core.memory	(/opt/dlang/bin/../import/core/memory.d)
import    core.time	(/opt/dlang/bin/../import/core/time.d)
import    
core.sys.posix.time	(/opt/dlang/bin/../import/core/sys/posix/time.d)
import    
core.sys.posix.signal	(/opt/dlang/bin/../import/core/sys/posix/signal.d)
import    
core.sys.posix.sys.time	(/opt/dlang/bin/../import/core/sys/posix/sys/time.d)
import    
core.sys.posix.sys.select	(/opt/dlang/bin/../import/core/sys/posix/sys/select.d)
import    
core.sys.darwin.mach.kern_return	(/opt/dlang/bin/../import/core/sys/darwin/mach/kern_return.d)
import    
core.checkedint	(/opt/dlang/bin/../import/core/checkedint.d)
GC stats  7M used, 5M free, 12M total
code      hello
/usr/bin/cc hello.o -o hello -L/opt/dlang/bin/../lib 
-lphobos2-ldc -ldruntime-ldc -Wl,-dead_strip -lpthread -lm -lobjc 
-target arm64-apple-macos15


file ./hello
./hello: Mach-O 64-bit arm64 executable, 
flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|WEAK_DEFINES|BINDS_TO_WEAK|PIE|HAS_TLV_DESCRIPTORS>


./hello
zsh: segmentation fault  ./hello

What did I do wrong? Or what did I fail to do?

Thanks,
Ken Wolcott



More information about the digitalmars-d-ldc mailing list