Skip to content

1.100 beta crater regression: "No space left on device" and massive slowdown during doctests #164145

Description

@theemathas

This regression was found in the 1.100 beta crater run.

The fixed_star_frame-1.29.1 consistently has its tests pass in crater on stable rust. However, it consistently fails in crater on beta rust.

It appears to me that we're doing something much less efficiently on beta than on stable, and using much more disk space.

I tried running the tests on the dev desktop (dev-desktop-eu-2.infra.rust-lang.org). cargo +stable test used 0m32.266s to complete. However, cargo +beta test used 1m11.525s to complete. That is, running tests on beta is over twice as slow.

Activity

  1. added
    C-bugCategory: This is a bug.
    E-needs-bisectionCall for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc
    E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example
    on Oct 11, 2026
  2. added
    needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging
    I-prioritizeIssue needs a team member to assess the impact. Will be replaced by P-{low,medium,high,critical}
    on Oct 11, 2026
  3. theemathas commented on Oct 11, 2026

    @theemathas
    ContributorAuthor
  4. theemathas commented on Oct 11, 2026

    @theemathas
    ContributorAuthor

    Bisected with cargo bisect-rustc --start=1.99.0 --end=beta --timeout 50 -- test:

    ********************************************************************************
    Regression in 5392d2f545c6836dc79f209bcc14ac7179dbc4f2
    ********************************************************************************
    
    Attempting to search unrolled perf builds
    Found commits ["0e21efee", "0aebea15", "770a9cd8", "449ef23a", "a95bb512", "5fd80363", "a49eccce", "5ba40ad4", "2983377a", "033e87fb", "3b668784", "16c23a49"]
    installing 0e21efee1ad09fb750d7925735bc0495cc10e971
    rust-std-nightly-x86_64-unknown-linux-gnu: 31.40 MB / 31.40 MB [=============================================================================] 100.00 % 11.56 MB/s testing...
    RESULT: 0e21efee1ad09fb750d7925735bc0495cc10e971, ===> Successfully compiled
    uninstalling 0e21efee1ad09fb750d7925735bc0495cc10e971
    
    installing 0aebea155e1762d121a36050809579171759e979
    rust-std-nightly-x86_64-unknown-linux-gnu: 31.38 MB / 31.38 MB [=============================================================================] 100.00 % 11.47 MB/s testing...
    RESULT: 0aebea155e1762d121a36050809579171759e979, ===> Compile error
    uninstalling 0aebea155e1762d121a36050809579171759e979
    
    Regression in https://github.com/rust-lang/rust/commit/0aebea155e1762d121a36050809579171759e979. Note that if it is a legacy rollup build, it might be available in https://github.com/rust-lang-ci/rust/commit/0aebea155e1762d121a36050809579171759e979.
    The PR introducing the regression in this rollup is #161868: libtest: never iterate over all tests in `--exact` mode
    

    Regressed in #161868. cc @RalfJung (author), @Mark-Simulacrum (reviewer)

  5. added
    A-libtestArea: `#[test]` / the `test` library
    T-libsRelevant to the library team, which will review and decide on the PR/issue.
    S-has-bisectionStatus: A bisection has been found for this issue
    A-doctestsArea: Documentation tests, run by rustdoc
    and removed
    E-needs-bisectionCall for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc
    on Oct 11, 2026
  6. RalfJung commented on Oct 11, 2026

    @RalfJung
    Member

    This is very strange. That PR added one more big allocation in doctests, but that should not make such a huge difference. And how could it possibly cause the file system to fill up...?

    You marked this as both "doctests" and "libtest". Since you apparently can reproduce this locally, can you figure out which of them it is? cargo test --tests only runs regular tests, cargo test --doc only runs doctests.

  7. RalfJung commented on Oct 11, 2026

    @RalfJung
    Member

    Also apparently this crate is basically identical to fixed. Did that one not regress?

  8. RalfJung commented on Oct 11, 2026

    @RalfJung
    Member

    And if you have the output from running the tests anywhere, that would be useful. How many tests are there?

  9. theemathas commented on Oct 11, 2026

    @theemathas
    ContributorAuthor

    I can reproduce the time usage slowdown with cargo +beta test --doc. (Note that I have not yet figured out how to measure the differences in disk usage at any point. The only evidence of disk usage increase was from the "No space left on device" errors on crater.)

    fixed-1.31.0 appeared to test fine on crater. Not sure if the version difference (1.29.1 vs 1.31.0) matters.

    The outputs for running the tests can be seen in the "crater run 1/2/3/4" links in the OP issue. If you want the outputs on 1.99, here they are: 1, 2, 3, 4. There are 3763 tests (in the last (and biggest) batch being ran, presumably the doctests batch.)

  10. theemathas commented on Oct 11, 2026

    @theemathas
    ContributorAuthor

    I can reproduce the time usage slowdown with fixed-1.29.0. I am unable to reproduce it on fixed-1.30.0 or fixed-1.31.0. (The fixed crate does not have a 1.29.1 version. The fixed_star_frame-1.29.1 crate is a lightly modified version of fixed-1.29.0.)

    So, some change between fixed-1.29.0 and fixed-1.30.0 got rid of the part that's slow.

  11. theemathas commented on Oct 11, 2026

    @theemathas
    ContributorAuthor

    I guess it's possible that the time usage regression and the disk usage regression are two unrelated things? That seems unlikely though.

  12. RalfJung commented on Oct 11, 2026

    @RalfJung
    Member

    So there are 3763 doctests. Not nothing, but also not a gigantic number.

  13. teor2345 commented on Oct 11, 2026

    @teor2345
    Member
     So, some change between `fixed-1.29.0` and `fixed-1.30.0` got rid of the part that's slow.
    

    There's only about 10 commits between those versions, so you could bisect the crate itself. The only significant changes seem to be formatting, a format bug fix, switching the internals of serde/arbitrary impls, and a "no mut statics" feature.

  14. RalfJung commented on Oct 11, 2026

    @RalfJung
    Member

    Did the edition change? rustdoc behaves very different on newer edition with "merged doctests".
    Or maybe my PR somehow broke merged doctests for that crate and we are falling back to individual tests and that's why it got so much slower.

    @rust-lang/rustdoc is there some way to get rustdoc to print which doctests were merged vs split?

  15. changed the title [-]1.100 beta crater regression: "No space left on device"[/-] [+]1.100 beta crater regression: "No space left on device" and massive slowdown during doctests[/+] on Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-doctestsArea: Documentation tests, run by rustdocA-libtestArea: `#[test]` / the `test` libraryC-bugCategory: This is a bug.E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable ExampleI-prioritizeIssue needs a team member to assess the impact. Will be replaced by P-{low,medium,high,critical}S-has-bisectionStatus: A bisection has been found for this issueT-libsRelevant to the library team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triagingregression-from-stable-to-betaPerformance or correctness regression from stable to beta.

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions