c3c icon indicating copy to clipboard operation
c3c copied to clipboard

Linux (Ubuntu) unable to use `c3c run --sanitize=memory`

Open joshring opened this issue 9 months ago • 4 comments

By default it seems to be using GCC (?)

c3c run --sanitize=memory --reloc=PIE
cc: error: unrecognized argument to ‘-fsanitize=’ option: ‘memory’
Failed to link executable 'build/testing_07' using command 'cc -o build/testing_07 -rdynamic -pthread build/obj/linux-x64/std_collections_list.std.os.backtrace.Backtrace.o build/obj/linux-x64/thread_mgr.testing_v0_7.Arg2.float.o build/obj/linux-x64/thread_mgr.testing_v0_7.Arg.ulong.o build/obj/linux-x64/std_collections_maybe.float.o build/obj/linux-x64/std_collections_maybe.ulong.o build/obj/linux-x64/std.math.o build/obj/linux-x64/std.io.os.o build/obj/linux-x64/std.io.file.o build/obj/linux-x64/std.io.o build/obj/linux-x64/libc.o build/obj/linux-x64/std.atomic.o build/obj/linux-x64/std.ascii.o build/obj/linux-x64/std.core.string.conv.o build/obj/linux-x64/std.core.dstring.o build/obj/linux-x64/std.core.types.o build/obj/linux-x64/std.core.string.o build/obj/linux-x64/std.core.mem.o build/obj/linux-x64/std.core.mem.allocator.o build/obj/linux-x64/std.core.builtin.o build/obj/linux-x64/std.os.process.o build/obj/linux-x64/std.os.backtrace.o build/obj/linux-x64/std.os.linux.o build/obj/linux-x64/std.thread.os.o build/obj/linux-x64/std.os.posix.o build/obj/linux-x64/std.time.o build/obj/linux-x64/std.time.clock.o build/obj/linux-x64/std.time.os.o build/obj/linux-x64/testing_v0_7.o build/obj/linux-x64/fft.o -ldl -lm -fsanitize=memory'.

Forcing c3c to use LLD (ld.lld)

c3c run --sanitize=memory --linker=custom /usr/bin/ld.lld --reloc=PIE
ld.lld: error: unknown argument '-fsanitize=memory'
Failed to link executable 'build/testing_07' using command '/usr/bin/ld.lld -o build/testing_07 -export-dynamic -pie --eh-frame-hdr --gc-sections /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/x86_64-linux-gnu/crtn.o -L/usr/lib/x86_64-linux-gnu/ --dynamic-linker=/lib64/ld-linux-x86-64.so.2 -L/usr/lib/ -L/lib/ -m elf_x86_64 build/obj/linux-x64/std_collections_list.std.os.backtrace.Backtrace.o build/obj/linux-x64/thread_mgr.testing_v0_7.Arg2.float.o build/obj/linux-x64/thread_mgr.testing_v0_7.Arg.ulong.o build/obj/linux-x64/std_collections_maybe.float.o build/obj/linux-x64/std_collections_maybe.ulong.o build/obj/linux-x64/std.math.o build/obj/linux-x64/std.io.os.o build/obj/linux-x64/std.io.file.o build/obj/linux-x64/std.io.o build/obj/linux-x64/libc.o build/obj/linux-x64/std.atomic.o build/obj/linux-x64/std.ascii.o build/obj/linux-x64/std.core.string.conv.o build/obj/linux-x64/std.core.dstring.o build/obj/linux-x64/std.core.types.o build/obj/linux-x64/std.core.string.o build/obj/linux-x64/std.core.mem.o build/obj/linux-x64/std.core.mem.allocator.o build/obj/linux-x64/std.core.builtin.o build/obj/linux-x64/std.os.process.o build/obj/linux-x64/std.os.backtrace.o build/obj/linux-x64/std.os.linux.o build/obj/linux-x64/std.thread.os.o build/obj/linux-x64/std.os.posix.o build/obj/linux-x64/std.time.o build/obj/linux-x64/std.time.clock.o build/obj/linux-x64/std.time.os.o build/obj/linux-x64/testing_v0_7.o build/obj/linux-x64/fft.o -ldl -lm -lpthread -lc -fsanitize=memory'

joshring avatar Mar 19 '25 12:03 joshring

This is not c3 issue - https://github.com/golang/go/issues/25175 . It is easily circumvented by C3C_CC=/usr/bin/clang c3c run --sanitize=memory --reloc=PIE

mr6r4y avatar May 17 '25 13:05 mr6r4y

https://github.com/c3lang/c3c/issues/2141

mr6r4y avatar May 17 '25 13:05 mr6r4y

can confirm the above fix works on ubuntu

joshring avatar May 29 '25 23:05 joshring

@mr6r4y do you get a crash for it now too?

lerno avatar Jun 07 '25 00:06 lerno