Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CircleCI Linux segfaults for 64-bit shared Phobos testrunners during parallel GC marking #3127

Closed
kinke opened this issue Aug 8, 2019 · 19 comments

Comments

@kinke
Copy link
Member

kinke commented Aug 8, 2019

See #3093 (comment) and following posts, some weird and so far irreproducible segfaults in some other .so in GC worker threads. Worked around for now by a9a15c9.

@marcioapm
Copy link

This crash is not CircleCI specific - we are seeing it in one of our micro-services running in a Docker container, with Ubuntu 18.04 LTS (minimal) as base image.

The only different from this micro-service to others we run that are working fine, is that this one has very limited CPU and memory. (0.25 CPU and 256MB RAM)

It's unclear if this has been fixed on 1.18 or just worked around by disabling it for the test runner. Could you clarify? Thanks!

@kinke
Copy link
Member Author

kinke commented Sep 25, 2019

Okay thx for reporting, pinging @rainers - it's still worked around in current master, though I haven't checked whether Circle would pass now.

@rainers
Copy link
Contributor

rainers commented Sep 25, 2019

Are you using fork in your applications? This could be related to this then: dlang/druntime#2805

@ikod
Copy link

ikod commented Sep 29, 2019

Maybe this is related:

import std.stdio;
import core.sys.posix.signal;
import core.thread;
import core.sys.posix.unistd;
import core.sys.posix.sys.wait;
import core.memory;
import std.algorithm;
import std.range;

void block(int signum) {
    sigset_t m;
    sigemptyset(&m);
    sigaddset(&m, signum);
    sigprocmask(SIG_BLOCK, &m, null);
}

void main()
{
    auto x = new int[](10000);
    iota(10000).each!(i => x ~= i); 
    GC.collect();  // ldc create thread here
    block(SIGHUP); // block works only for current thread, not for thread created by GC.collect
    auto parent_pid = getpid();
    auto child_pid = fork();
    if ( child_pid == 0 ) { 
        //child
        kill(parent_pid, SIGHUP); // send signal to parent
        _exit(0);
    }   
    if ( child_pid == -1 ) { 
        _exit(0);
    }   
    Thread.sleep(1.seconds);
    writeln("This should be printed");
}

do not print what expected with ldc 1.17.0 on ubuntu (works ok with dmd).
The problem is that gc worker will not inherit sigmask and receive signal.

UPD: forgot to mention that --DRT-gcopt=parallel:0 fix problem.

@marcioapm
Copy link

Are you using fork in your applications? This could be related to this then: dlang/druntime#2805

No forking, it's just a simple vibe.d HTTP service.

@marcioapm
Copy link

marcioapm commented Sep 30, 2019

I suppose the threads are only created when the GC collection actually runs, right?
If so, could it be that in very limited environments, like containers, at that moment there might not be enough memory to create the new threads? Perhaps pre-creating the threads could be optional for these cases?

@kinke
Copy link
Member Author

kinke commented Sep 30, 2019

The CircleCI failures still persist after Rainer's latest druntime fixes, which are in LDC v1.18.0-beta2.

works ok with dmd

@ikod: That's strange, I don't think LDC's druntime diverges greatly in this regard. Did you test with the corresponding DMD version, 2.087? Otherwise please test with the latest LDC beta, which is based on 2.088. Also, do you link against shared libphobos.so with DMD? The problem here has only shown up with shared druntime AFAIK. LDC has separate shared druntime/Phobos libs, while DMD merges druntime into libphobos.so...

@ikod
Copy link

ikod commented Sep 30, 2019

Hello @kinke

No, I tried with dmd 2.083 and it was OK. now installed dmd 2.087.1 and it fails with dmd the same way as with ldc.

$ sudo dpkg -i dmd_2.087.1-0_amd64.deb 
[sudo] password for igor: 
(Reading database ... 291627 files and directories currently installed.)
Preparing to unpack dmd_2.087.1-0_amd64.deb ...
Unpacking dmd (2.087.1-0) over (2.083.0-0) ...
...
$ dub run
Performing "debug" build using /usr/bin/dmd for x86_64.
test ~master: building configuration "application"...
Linking...
Running ./test 
Program exited with code -1
$ ./test --DRT-gcopt=parallel:0
This should be printed
$ ldd test
	linux-vdso.so.1 =>  (0x00007ffdc7d5e000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd1b1294000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd1b0f8b000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd1b0d83000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd1b0b7f000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd1b0969000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd1b059f000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fd1b14b1000)

So --DRT-gcopt=parallel:0 fix problem in both dmd and ldc case.
Do you think I can place bugreport for druntime?

UPD. same problem with dmd 2.088

@kinke
Copy link
Member Author

kinke commented Sep 30, 2019

Do you think I can place bugreport for druntime?

Yep, please do; parallel GC marking was introduced with druntime 2.087.

@ikod
Copy link

ikod commented Sep 30, 2019

Do you think I can place bugreport for druntime?

Yep, please do; parallel GC marking was introduced with druntime 2.087.

Done
https://issues.dlang.org/show_bug.cgi?id=20256
Thanks!

@kinke
Copy link
Member Author

kinke commented Nov 3, 2019

@rainers: The situation has apparently worsened/become more visible/? with dlang/druntime#2816 - the shared libs CircleCI job newly failed dmd-testsuite's runnable/test8.d 2 out of 2 times. From https://circleci.com/gh/ldc-developers/ldc/9888:

1700: [New Thread 0x7fa1b919f700 (LWP 34339)]
1700: [New Thread 0x7fa1b0e0e700 (LWP 34340)]
1700: [New Thread 0x7fa1b8e0e700 (LWP 34341)]
1700: 
1700: Thread 2 "test8_0" received signal SIGSEGV, Segmentation fault.
1700: [Switching to Thread 0x7fa1b919f700 (LWP 34339)]
1700: 0x00007fa1b9329c25 in ?? () from /lib64/ld-linux-x86-64.so.2
1700: #0  0x00007fa1b9329c25 in ?? () from /lib64/ld-linux-x86-64.so.2
1700: #1  0x00007fa1b932a17a in ?? () from /lib64/ld-linux-x86-64.so.2
1700: #2  0x00007fa1b932aa71 in ?? () from /lib64/ld-linux-x86-64.so.2
1700: #3  0x00007fa1b932f7b7 in ?? () from /lib64/ld-linux-x86-64.so.2
1700: #4  0x00007fa1b9336a9e in ?? () from /lib64/ld-linux-x86-64.so.2
1700: #5  0x00007fa1b926971f in _D4core4sync5event5Event4waitMFNbNiSQBi4time8DurationZb (this=0x2, tmout=...) at event.d:247
1700: #6  0x00007fa1b9269692 in core.sync.event.Event.wait() (this=0x2) at event.d:203
1700: #7  0x00007fa1b9281c6f in _D2gc4impl12conservativeQw3Gcx14scanBackgroundMFNbZv (this=0x0) at gc.d:2907
1700: #8  0x00007fa1b9270852 in _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkDFNbZvZ20thread_lowlevelEntryUNbPvZQd (ctx=0x55df0543fdd0 "") at osthread.d:4177
1700: #9  0x00007fa1b8e25669 in start_thread (arg=<optimized out>) at pthread_create.c:479
1700: #10 0x00007fa1b90b0323 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

@rainers
Copy link
Contributor

rainers commented Nov 3, 2019

Is it reproducible locally, now?

@kinke
Copy link
Member Author

kinke commented Nov 3, 2019

I haven't tried it, but as CircleCI is the only failing service, I bet it isn't.

kinke added a commit to kinke/ldc that referenced this issue Nov 3, 2019
@rainers
Copy link
Contributor

rainers commented Nov 3, 2019

I tried on Ubuntu 19, also with reduced memory, but all tests pass.

@kinke
Copy link
Member Author

kinke commented Nov 3, 2019

Thx for the effort.

@kinke
Copy link
Member Author

kinke commented Jan 7, 2020

With v2.090 (#3262), this issue now also surfaces with static druntime; again CircleCI only, dmd-testsuite's runnable/sieve.d apparently consistently fails. From the CI log:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7f758c5c6700 (LWP 8156)]
[New Thread 0x7f758c5b5700 (LWP 8157)]
[New Thread 0x7f758c5b0700 (LWP 8158)]
[New Thread 0x7f758c5ab700 (LWP 8159)]
[New Thread 0x7f758c5a6700 (LWP 8160)]
[New Thread 0x7f758c5a1700 (LWP 8161)]
[New Thread 0x7f758c59c700 (LWP 8162)]
[New Thread 0x7f758c597700 (LWP 8163)]
[New Thread 0x7f758c592700 (LWP 8164)]
[New Thread 0x7f758c58d700 (LWP 8165)]
[New Thread 0x7f758c588700 (LWP 8166)]
[New Thread 0x7f758c583700 (LWP 8167)]
[New Thread 0x7f758c57e700 (LWP 8169)]
[New Thread 0x7f758c579700 (LWP 8170)]
[New Thread 0x7f758c574700 (LWP 8171)]
[New Thread 0x7f758c56f700 (LWP 8172)]
[New Thread 0x7f758c56a700 (LWP 8173)]
[New Thread 0x7f758c565700 (LWP 8174)]
[New Thread 0x7f758c560700 (LWP 8175)]
[New Thread 0x7f758c55b700 (LWP 8176)]
[New Thread 0x7f758c556700 (LWP 8177)]
[New Thread 0x7f758c551700 (LWP 8178)]
[New Thread 0x7f758c54c700 (LWP 8179)]
[New Thread 0x7f758c547700 (LWP 8180)]
[New Thread 0x7f758c542700 (LWP 8181)]
[New Thread 0x7f758c53d700 (LWP 8182)]
[New Thread 0x7f758c538700 (LWP 8183)]
[New Thread 0x7f758c533700 (LWP 8184)]
[New Thread 0x7f758c52e700 (LWP 8185)]
[New Thread 0x7f758c529700 (LWP 8186)]
[New Thread 0x7f758c524700 (LWP 8187)]
[New Thread 0x7f758c51f700 (LWP 8188)]
[New Thread 0x7f758c51a700 (LWP 8189)]
[New Thread 0x7f758c515700 (LWP 8190)]
[New Thread 0x7f758c510700 (LWP 8191)]
[New Thread 0x7f758c50b700 (LWP 8192)]
[New Thread 0x7f758c506700 (LWP 8193)]
[New Thread 0x7f758c501700 (LWP 8194)]
[New Thread 0x7f758c4fc700 (LWP 8195)]
[New Thread 0x7f758c4f7700 (LWP 8196)]
[New Thread 0x7f758c4f2700 (LWP 8197)]
[New Thread 0x7f758c4ed700 (LWP 8198)]
[New Thread 0x7f758c4e8700 (LWP 8199)]
[New Thread 0x7f758c4e3700 (LWP 8200)]
[New Thread 0x7f758c4de700 (LWP 8201)]
[New Thread 0x7f758c4d9700 (LWP 8202)]
[New Thread 0x7f758c4d4700 (LWP 8205)]
[New Thread 0x7f758c4cf700 (LWP 8209)]
[New Thread 0x7f758c4ca700 (LWP 8269)]
[New Thread 0x7f758c4c5700 (LWP 8271)]
[New Thread 0x7f758c4c0700 (LWP 8272)]
[New Thread 0x7f758c4bb700 (LWP 8273)]
[New Thread 0x7f758c4b6700 (LWP 8274)]
[New Thread 0x7f758c4b1700 (LWP 8275)]
[New Thread 0x7f758c4ac700 (LWP 8276)]
[New Thread 0x7f758c4a7700 (LWP 8277)]
[New Thread 0x7f758c4a2700 (LWP 8278)]
[New Thread 0x7f758c49d700 (LWP 8279)]
[New Thread 0x7f758c498700 (LWP 8280)]
[New Thread 0x7f758c493700 (LWP 8281)]
[New Thread 0x7f758c48e700 (LWP 8282)]
[New Thread 0x7f758c489700 (LWP 8283)]
[New Thread 0x7f758c484700 (LWP 8284)]

Thread 63 "sieve_0" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f758c489700 (LWP 8283)]
do_lookup_x (undef_name=undef_name@entry=0x7f758bd78870 "__clock_gettime", new_hash=new_hash@entry=845041693, old_hash=old_hash@entry=0x7f758c4860c0, ref=0x7f758bd763e0, result=result@entry=0x7f758c4860d0, scope=0x7f758c5c9428, i=0, version=0x7f758c5bb570, flags=5, skip=0x0, type_class=1, undef_map=0x7f758c5bda00) at dl-lookup.c:338
338	dl-lookup.c: No such file or directory.
#0  do_lookup_x (undef_name=undef_name@entry=0x7f758bd78870 "__clock_gettime", new_hash=new_hash@entry=845041693, old_hash=old_hash@entry=0x7f758c4860c0, ref=0x7f758bd763e0, result=result@entry=0x7f758c4860d0, scope=0x7f758c5c9428, i=0, version=0x7f758c5bb570, flags=5, skip=0x0, type_class=1, undef_map=0x7f758c5bda00) at dl-lookup.c:338
#1  0x00007f758c3ab1ef in _dl_lookup_symbol_x (undef_name=0x7f758bd78870 "__clock_gettime", undef_map=0x7f758c5bda00, ref=ref@entry=0x7f758c486168, symbol_scope=0x7f758c5bdd58, version=0x7f758c5bb570, type_class=type_class@entry=1, flags=5, skip_map=<optimized out>) at dl-lookup.c:813
#2  0x00007f758c3afec3 in _dl_fixup (l=<optimized out>, reloc_arg=<optimized out>) at ../elf/dl-runtime.c:112
#3  0x00007f758c3b77ca in _dl_runtime_resolve_xsavec () at ../sysdeps/x86_64/dl-trampoline.h:125
#4  0x00007f758bd82e8a in __pthread_cond_wait_common (abstime=0x7f758c486cc0, mutex=0x564fd3ed74d0, cond=0x564fd3ed74f8) at pthread_cond_wait.c:517
#5  __pthread_cond_timedwait (cond=0x564fd3ed74f8, mutex=0x564fd3ed74d0, abstime=0x7f758c486cc0) at pthread_cond_wait.c:667
#6  0x0000564fd31d578e in _D4core4sync5event5Event4waitMFNbNiSQBi4time8DurationZb ()
#7  0x0000564fd31d1c85 in _D2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi0ZQBcMFNbZv ()
#8  0x0000564fd31d1a08 in _D2gc4impl12conservativeQw3Gcx14scanBackgroundMFNbZv ()
#9  0x0000564fd31b4d76 in _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkDFNbZvZ20thread_lowlevelEntryUNbPvZQd ()
#10 0x00007f758bd7c6db in start_thread (arg=0x7f758c489700) at pthread_create.c:463
#11 0x00007f758b4ef88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Test runnable/sieve.d failed.  The logged output:
/root/build/bin/ldmd2 -conf= -m64 -Irunnable -cov -O  -od../../../../build/dmd-testsuite/runnable -of../../../../build/dmd-testsuite/runnable/sieve_0  runnable/sieve.d 
../../../../build/dmd-testsuite/runnable/sieve_0 ../../../../build/dmd-testsuite/runnable
Segmentation fault (core dumped)

@jondegenhardt
Copy link
Contributor

jondegenhardt commented Jan 10, 2020

fyi, dub issue 1812, seg faults in travis-ci builds. May be related. Has been worked around by turning parallel GC off in dub in the dmd-2.090.0 / dub-1.19.0 release. Presumably still an issue though.

@rainers
Copy link
Contributor

rainers commented Jan 10, 2020

Thanks, @jondegenhardt it looks very much related. A stack overflow could explain the strange failures.

@kinke
Copy link
Member Author

kinke commented Jan 14, 2020

Fixed upstream by above PR; now in LDC master.

@kinke kinke closed this as completed Jan 14, 2020
clrpackages pushed a commit to clearlinux-pkgs/ldc that referenced this issue Apr 21, 2020
Fangrui Song (7):
      CMake: Fix LLVM_INTRINSIC_TD_PATH and LDC_INSTALL_PREFIX expansion (#3223)
      Fix -Wunused-variable (#3224)
      irstate.h: fix -Wdeprecated-copy
      Use function attribute "frame-pointer" instead of "no-frame-pointer-elim"/"no-frame-pointer-elim-non-leaf"
      Add assembly tests for "frame-pointer"
      dibuilder: fix createGlobalVariableExpression call for LLVM 10 (#3266)
      Fix StringRef conversion for LLVM 11 (777180a32b61070a10dd330b4f038bf24e916af1) (#3305)

Gianfranco Costamagna (1):
      Update FindLLVM.cmake to cope with new llvm-config names

Guillaume Piolat (1):
      Disambiguate that -link-defaultlib-shared can take a parameter (#3169)

Hiroki Noda (2):
      Fix #3250: use `originalLType->isAggregateType()` in assertion (#3251)
      Remove _d_execBss{Beg,End}Addr, used for copy-relocation check (#3247)

Ivan Butygin (4):
      Travis lit tests use wrong jit lib (from host compiler) (#3152)
      Make LDC custom passes available to jit, add API for jit compiler options (#2758)
      jit compiler context (#3154)
      jit bind: fix bool handling (#3174)

Jacob Carlborg (5):
      Add predefined version identifiers for Apple platforms
      Fix wrong size and emulated `real` for Apple ARM
      Fix undefined symbol `__Dmodule_ref` for Apple ARM
      Fix warning about critical section size for Apple ARM
      Fix missing symbol `__va_list` on Apple ARM

Johan Engelen (14):
      Align with Clang what -fsanitize=fuzzer implies
      Fix fuzzing: inline-8bit-counters should also imply edge tracing
      Fix CMake configuring with LLVM 10 (current trunk)
      LLVM 10 fix: prevent linking in LLVM's TargetOptionsCommandFlags.o
      LLVM 10 fix: add llvm::make_unique and LLMaybeAlign "aliases". (an explicit cast from integer to llvm::MaybeAlign is needed now to setAlignment)
      Sort includes and fix SanitizerCoverage pass call
      lld >= 10 must also be linked with LLVMSymbolize.
      Add LLVM bin dir to search path for Lit tests (for FileCheck and not)
      Update druntime with LLVM 10 support.
      LLVM bin dir is already part of the path, doesn't need extra adding anymore for sanitizer tests.
      Fix asan_fiber_main tests. Sometimes debug line info was missing in ASan output report due to test execution order bug.
      Link with LLVMSymbolize _after_ linking with the LLD libraries.
      Add explicit casts to llvm::MaybeAlign for setAlignment to use the new LLVM trunk API (silences deprecation messages of old API)
      [Travis] Enable runtime sanitizer testing for Linux LLVM 9 and macOS LLVM 8 CI testers. (#3199)

Martin Kinkelin (187):
      Upgrade front-end & libs to v2.088.0-beta.1
      druntime: Port core.atomic additions to LDC
      Adapt lit-test to druntime changes
      Adapt dcompute lit-test to new front-end lowering
      druntime: Adapt expected profiling test output for LDC
      dmd-testsuite: Adapt a few tests for LDC
      Improve emission of vector literals (#3139)
      Fix front-end patch version
      dmd-testsuite: Adapt runnable/testpic.d to unsupported -fPIE
      druntime: Slightly optimize CAS implementation of atomicOp
      Phobos: Merge upstream stable for Win32 unittest fix
      dmd-testsuite: Disable a new dshell test
      Merge v2.088.0
      Upgrade bundled dub to v1.17.0+ (with cross-compilation support) (#3157)
      Make all DtoGEP helpers use implicit `inbounds`
      Don't emit init symbol for zero-initialized structs  (#3131)
      druntime: Add {load,store}Unaligned and prefetch to core.simd (#3160)
      Merge upstream stable (32de317145) (#3161)
      Azure & Shippable: Upgrade LDC-LLVM to v9.0.0
      Add support for LLVM 9.0.0
      Adapt jit-rt to LLVM 9
      Adapt lit-tests to LLVM 9
      Adapt PGO lit-tests to LLVM 9 on Windows
      Windows: Adapt to LLVM 9 apparently supporting naked DMD-style asm with LTO
      Adapt fsanitize_fuzzer lit test
      Travis: Add Linux LLVM 9.0.0 job
      Adapt sanitizers/link_fuzzer test to LLVM 9
      CMake: Enable manual D_LINKER_ARGS input (for cross-compilation) (#3163)
      druntime: Fix regression for POSIX systems without backtrace[_symbols]
      Merge upstream stable (61020a6d1d)
      CMake: Fix linker cmdline order for Phobos testrunners
      druntime: Disable new forkgc test on Windows
      CMake: Remove apparently obsolete MSVC workaround when linking testrunners
      druntime: Fix exception chaining for latest MSVC runtime v14.23
      CMake: Use add_executable() for LDC_LINK_MANUALLY
      CMake: Fix position of LLVMSPIRVLib in linker cmdline
      CMake: Don't build gccbuiltins utility when cross-compiling
      Azure CI: Add Android cross-compilation job (incl. prebuilt release package)
      Don't link ldc-build-runtime and ldc-prune-cache against LLVM libs
      Keep lvalue-ness when casting AA to another AA (#3179)
      Merge v2.088.1 (#3190)
      CMake: Fix regression for make (#3191)
      Update CHANGELOG.md
      Upgrade front-end & libs to v2.089.0-beta.1
      Front-end: Re-expose a few functions to C++ interface
      Fix front-end C++ headers
      Azure CI: Bump host LDC version to 1.18 + bash nanofix
      druntime: Make core.sys.windows.odbcinst compilable without deprecations
      CMake: Compile default libs with `-de -dip1000`
      druntime: Fix core.atomic.atomicStore() regression
      druntime: Make type repainting in core.atomic.atomicLoad() cheaper
      New DIP1021 implies DIP1000
      dmd-testsuite: Fixup _Dmain signature in minimal object.d
      druntime: Don't instrument C main function
      dmd-testsuite: Fixup C main signature in minimal object.d
      dmd-testsuite: Slighlty adapt dshell/test6952.d and runnable/testpdb.d
      Make ClassReferenceExp → IR global association more robust
      Resync LDMD2 help output
      Restore compilability with ltsmaster
      druntime: Fix version(SupportSanitizers) regression
      Phobos: Disable std.math.signbit() tests with negated NaNs on AArch64
      Shippable CI: Adapt to core.thread refactoring
      CMake: Fix hacky way of determining LLVM libs for jit-rt
      CircleCI: Bump LIBCLANG_COMMON_VERSION for latest ubuntu:rolling
      Make gccbuiltins_*.di files available to non-installed compiler
      Travis: Bump LLVM version for macOS jobs (#3200)
      dmd-testsuite: Make compilable/json2.d less brittle wrt. -I switches
      Azure: Upgrade to new pipeline artifacts syntax (#3203)
      CircleCI: Bump the macOS image as well as host LDC & LLVM versions
      Azure CI: Extend Android ldc2.conf by required default switches (#3206)
      druntime: Adapt test shared/finalize to recent macOS not unloading .dylibs with TLS
      Azure CI: Bump macOS image to v10.14
      Posix x86_64: Pass non-POD arguments indirectly by value, not just for extern(C++)
      Try to in-place-construct temporary structs and static arrays
      Posix x86: Pass non-POD arguments indirectly by value, not just for extern(C++)
      POSIX: Default to cc for linking, not gcc (or clang for FreeBSD 10+)
      CLI: Unhide -gcc, list under linking options, and revise description
      Hide command-line options leaking from LLVM 9
      Make sure a replaced temporary's lvalue is an alloca
      Merge v2.089.0-rc.1 (#3210)
      Fix equality/identity comparisons of vectors with length >= 32 (#3209)
      Shippable: Switch linker from gold to bfd
      dmd-testsuite: Disable/adapt a few tests for non-x86 architectures
      Shippable: Don't default to bfd linker in package's ldc2.conf
      Merge v2.089.0
      Upgrade bundled dub to v1.18.0
      CircleCI: Work around ldc-developers/ldc#3127
      Fix issue #3221 (@assumeUsed on global union) (#3222)
      druntime: Add llvm_sideeffect intrinsic
      Azure CI Windows: Build LDC itself with ThinLTO
      Azure CI Windows: Switch to FullLTO
      Azure CI Windows: Use ThinLTO for 32-bit job
      Reduce code duplication in DtoLowerMagicIntrinsic() wrt. atomic intrinsics
      Make llvm_atomic_cmp_xchg signature match LLVM's
      Extend llvm_atomic_cmp_xchg by isWeak and separate failure ordering
      Fix issue #3228 (#3230)
      Merge upstream stable (47874e5b37)
      Minimally revise -gcc cmdline help
      Fix regression #3234 (#3235)
      druntime: Add @Cold function UDA to ldc.attributes
      Fix DMD issue 20401 (#3233)
      Windows: Upgrade bundled MinGW-based libs to v7.0.0 RC1 (#3241)
      Merge upstream stable (da6fc42436) (#3242)
      Merge upstream stable (a5d1cae776)
      druntime: Cherry-pick dlang/druntime#2558 (populate _tlsRanges in every thread)
      Fix wrong output file collision errors for .di files (#3258)
      Upgrade LLVM to v9.0.1 and add Android/AArch64 CI job/package
      Azure CI Android: Cross-compile i686/x86_64 libs too and include in armv7a/aarch64 packages
      Azure CI: Deploy text file with listing of SHA256 hashes
      Merge upstream stable (cf3e6398ea) (#3261)
      Update CHANGELOG.md
      Refactoring: Modernize some legacy asmstmt code (#3225)
      Upgrade frontend & libs to v2.090.0-beta.1
      Adapt to frontend refactorings
      Merge v2.090.0
      dmd-testsuite: Update $(YEAR) ddoc test to 2020
      Revise recent adaptations to frontend refactorings
      Adapt tests/baremetal/wasm2.d to Phobos changes
      dmd-testsuite: Adapt compilable/cppmangle.d some more
      Restore compilability with ltsmaster host compiler
      druntime: Fix regression for GNU backtraces
      Declare ModuleInfo.importedModules pointers as weak symbols, like DMD
      Fix issue #3272 (debuginfo for enum of function pointers)
      Fix debuginfo for enum of delegates
      Merge upstream stable
      Revert "CircleCI: Disable parallel GC marking for 64-bit unittest runners on Linux"
      Revert to strong ModuleInfo.importedModules for MSVC targets
      Support 2 leading dashes in manual CLI pre-parsing (#3275)
      Config file: Use a separate section for multilib targets (#3276)
      CMake: Sync D compiler flags for druntime/Phobos with upstream
      Bump bundled dub version to 1.19.0
      Merge upstream stable
      Revert "Adapt tests/baremetal/wasm2.d to Phobos changes"
      Embed linker directives in ELF and Mach-O object files (#3259)
      Azure CI: Build LDC itself with full LTO, on Linux and Mac too (#3236)
      Refactoring: Replace Expression::op check followed by static cast to Expression::is<ExpressionType> (#3141)
      Slightly revise ldc-build-runtime & make --dFlags extend the default D flags (#3278)
      Fix default cross-linker for MSVC targets on non-Windows hosts (#3282)
      CircleCI: Use gdmd as host compiler for ubuntu:rolling job
      Bypass the GC (without -lowmem) with gdmd host compilers too
      dmd-testsuite: Tweak d_do_test runner to skip some uninteresting permutations
      dmd-testsuite: Restrict non-debug dmd-testsuite to runnable tests only
      CI: Adapt Travis and Shippable to reduced non-debug dmd-testsuite
      dmd-testsuite: Prepare for switch from Makefile to run.d
      Azure CI: Fix regression with new Windows image
      Fix minor potential issues wrt. CLI parsing of -m32/-m64
      Enable core.math.yl2x[p1] CTFE support with GDC host compilers and on non-x86 hosts
      CI: Upgrade Mac images for Travis and CircleCI
      dmd-testsuite: Switch from Makefile to run.d
      dmd-testsuite: Remove -fPIC permute arg and disable runnable/test17338.d
      dmd-testsuite: Tweak runnable test order in run.d
      dmd-testsuite: Don't test with -m<model> for C(++) compiler for non-x86 targets
      Shippable CI: Disable gdb tests in dmd-testsuite
      Azure CI: Use 7zip for .tar.xz archiving on Linux hosts
      Experiment with Cirrus CI
      Cirrus CI: Split up into multiple script blocks
      Cirrus CI: Add macOS
      Cirrus CI: Experiment with FreeBSD
      Cirrus CI: Add Ubuntu rolling shared-libs-only job
      Cirrus CI: Sync yaml with current Circle CI script
      Cirrus CI: Try unifying pip + lit installation
      Cirrus CI: Add shared-libs-only macOS job
      DMD-style asm: Support data directives (integral ones)
      Remove Semaphore CI
      DMD-style asm: Support floating-point data directives too
      Merge upstream stable (890f7eb2e9) (#3296)
      Slightly revise iOS additions
      Merge v2.090.1-beta.1
      Azure CI: Prepare for upcoming breaking change
      Try to improve dmd-testsuite stability by prebuilding run.d tool
      Enable other compilers to build dmd-testsuite's run.d tool tweaked for LDC
      Build dmd-testsuite's run.d tool with built LDC compiler
      Build dmd-testsuite's run.d tool lazily
      Don't allocate front-end Strings on C++ heap
      Properly disable GC without -lowmem
      Phobos: Cherry-pick soft-float improvements (#3303)
      Windows: Bump bundled MinGW-based libs to v7.0.0 final (#3311)
      Add predefined versions WASI and CRuntime_WASI for triples like wasm32-unknown-wasi
      WebAssembly: Emit all TLS globals as regular __gshared globals
      Add little WASI test
      Merge v2.090.1 (#3317)
      Update changelog for v1.20
      Update README.md
      Finalize support for LLVM 10 (#3323)
      Merge upstream stable (e274c8cbcc) (#3326)
      Revert to strong importedModules ModuleInfo refs (#3347)
      Prepare to release v1.20.1

Nicholas Lindsay Wilson (4):
      fix SpecialCaseList
      Fix CGFT
      Fix future versions of LLVM9
      Fix ctfe semantic analysis for dcompute

Nicholas Wilson (1):
      Fix issue #3079 : Some (but not all) targets in this export set were already defined (#3151)

Roberto Rosmaninho (1):
      Adapt to current LLVM 10 (#3257)

Stefanos Baziotis (3):
      Add inbounds where possible
      Add inbounds to static arrays and dynamic arrays
      Disable dead code when an if/else if condition is constant (#3134)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants