Skip to content
  • Alex Crichton's avatar
    rustbuild: Don't enable debuginfo in rustc · 099e7cb1
    Alex Crichton authored
    In #37280 we enabled line number debugging information in release artifacts,
    primarily to close out #36452 where debugging information was critical for MSVC
    builds of Rust to be useful in production. This commit, however, apparently had
    some unfortunate side effects.
    
    Namely it was noticed in #37477 that if `RUST_BACKTRACE=1` was set then any
    compiler error would take a very long time for the compiler to exit. The cause
    of the problem here was somewhat deep:
    
    * For all compiler errors, the compiler will `panic!` with a known value. This
      tears down the main compiler thread and allows cleaning up all the various
      resources. By default, however, this panic output is suppressed for "normal"
      compiler errors.
    * When `RUST_BACKTRACE=1` was set this caused every compiler error to generate a
      backtrace.
    * The libbacktrace library hits a pathological case where it spends a very long
      time in its custom allocation function, `backtrace_alloc`, because the
      compiler has so much debugging information. More information about this can be
      found in #29293 with a summary at the end of #37477.
    
    To solve this problem this commit simply removes debuginfo from the compiler but
    not from the standard library. This should allow us to keep #36452 closed while
    also closing #37477. I've measured the difference to be orders of magnitude
    faster than it was before, so we should see a much quicker time-to-exit after a
    compile error when `RUST_BACKTRACE=1` is set.
    
    Closes #37477
    Closes #37571
    099e7cb1