Make sure to record deps from cached task in new solver on first run by compiler-errors · Pull Request #133828 · rust-lang/rust (original) (raw)

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 andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation20 Commits2 Checks6 Files changed

Conversation

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters

[ Show hidden characters]({{ revealButtonHref }})

compiler-errors

We weren't actually performing a read of the dep node in with_cached_task in the new solver, which meant that all queries that computed a goal for the first time were just not recording the query dependencies that we call in that query.

In the incremental test, the typeck query for fn poll isn't being marked red even tho it's invalidated due to its writeback results changing. This happens b/c we normalize Self::Error into Error, which should call type_of which is a red query (since ty::Adt contains an AdtDef, and that AdtDef's stable hash changes since it's field changed). However, since we weren't tracking deps in that normalize query, the typeck result was remaining green, and we were trying to decode a def id that no longer exists (the field that got removed).

r? lcnr

@rustbot rustbot added A-query-system

Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html)

S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

T-compiler

Relevant to the compiler team, which will review and decide on the PR/issue.

labels

Dec 3, 2024

@compiler-errors

@rust-timer

This comment has been minimized.

bors added a commit to rust-lang-ci/rust that referenced this pull request

Dec 3, 2024

@bors

Make sure to record deps from cached task in new solver on first run

We weren't actually performing a read of the dep node in with_cached_task in the new solver, which meant that all queries that computed a goal for the first time were just not recording the query dependencies that we call in that query.

In the incremental test, the typeck query for fn poll isn't being marked red even tho it's invalidated due to its writeback results changing. This happens b/c we normalize Self::Error into Error, which should call type_of which is a red query (since ty::Adt contains an AdtDef, and that AdtDef's stable hash changes since it's ). However, since we weren't tracking deps in that normalize query, the typeck result was remaining green, and we were trying to decode a def id that no longer exists (the field that got removed).

r? lcnr

@bors

@bors

☀️ Try build successful - checks-actions
Build commit: 780efa9 (780efa9bf45636cd3f1a01b166ad197131a7aac7)

@rust-timer

Finished benchmarking commit (780efa9): comparison URL.

Overall result: no relevant changes - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

Results (primary -1.7%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌ (primary) - - 0
Regressions ❌ (secondary) - - 0
Improvements ✅ (primary) -1.7% [-1.7%, -1.7%] 1
Improvements ✅ (secondary) - - 0
All ❌✅ (primary) -1.7% [-1.7%, -1.7%] 1

Cycles

Results (secondary 1.6%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌ (primary) - - 0
Regressions ❌ (secondary) 1.6% [1.6%, 1.6%] 1
Improvements ✅ (primary) - - 0
Improvements ✅ (secondary) - - 0
All ❌✅ (primary) - - 0

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 766.885s -> 767.854s (0.13%)
Artifact size: 330.85 MiB -> 330.88 MiB (0.01%)

lcnr

lcnr

Contributor

@lcnr lcnr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nits, then r=me

@lcnr lcnr mentioned this pull request

Dec 4, 2024

@compiler-errors

@compiler-errors

@compiler-errors

@bors

📌 Commit 988f28d has been approved by lcnr

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

and removed S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

labels

Dec 4, 2024

bors added a commit to rust-lang-ci/rust that referenced this pull request

Dec 4, 2024

@bors

Make sure to record deps from cached task in new solver on first run

We weren't actually performing a read of the dep node in with_cached_task in the new solver, which meant that all queries that computed a goal for the first time were just not recording the query dependencies that we call in that query.

In the incremental test, the typeck query for fn poll isn't being marked red even tho it's invalidated due to its writeback results changing. This happens b/c we normalize Self::Error into Error, which should call type_of which is a red query (since ty::Adt contains an AdtDef, and that AdtDef's stable hash changes since it's ). However, since we weren't tracking deps in that normalize query, the typeck result was remaining green, and we were trying to decode a def id that no longer exists (the field that got removed).

r? lcnr

@bors

@rust-log-analyzer

The job i686-mingw failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)

   Compiling rustc_driver v0.0.0 (C:\a\rust\rust\compiler\rustc_driver)
[RUSTC-TIMING] rustc_driver test:false 27.276
error: linking with `i686-w64-mingw32-gcc` failed: exit code: 1
  |
  = note: "i686-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--dynamicbase" "-Wl,--disable-auto-image-base" "-Wl,--large-address-aware" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\rsbegin.o" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\symbols.o" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1-rustc\\i686-pc-windows-gnu\\release\\deps\\rustc_main-96d0305fb1a0ac21.rustc_main.5df816f042a4877-cgu.0.rcgu.o" "-Wl,-Bdynamic" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1-rustc\\i686-pc-windows-gnu\\release\\deps\\rustc_driver-9266893fdc6ace7c.dll" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\std-85e8e1afc0a1e2c0.dll" "-Wl,-Bstatic" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\libcompiler_builtins-d77c9d76f065957b.rlib" "-Wl,-Bdynamic" "-lpsapi" "-lshell32" "-lole32" "-luuid" "-ladvapi32" "-lws2_32" "-lntdll" "-lkernel32" "-ladvapi32" "-lole32" "-loleaut32" "-ladvapi32" "-lcfgmgr32" "-lgdi32" "-lkernel32" "-lmsimg32" "-lopengl32" "-luser32" "-lwinspool" "-lbcrypt" "-ladvapi32" "-lkernel32" "-lkernel32" "-ladvapi32" "-lntdll" "-luserenv" "-lws2_32" "-ldbghelp" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\advapi32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-errorhandling-l1-1-3.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-file-fromapp-l1-1-0.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-handle-l1-1-0.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-ioring-l1-1-0.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-memory-l1-1-3.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-memory-l1-1-4.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-memory-l1-1-5.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-memory-l1-1-6.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-memory-l1-1-7.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-memory-l1-1-8.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-synch-l1-2-0.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-sysinfo-l1-2-0.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-sysinfo-l1-2-3.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-sysinfo-l1-2-4.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-sysinfo-l1-2-6.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-util-l1-1-1.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-winrt-error-l1-1-0.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-winrt-l1-1-0.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-core-wow64-l1-1-1.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\api-ms-win-security-base-l1-2-2.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\avrt.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\bcp47mrm.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\bcryptprimitives.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\clfsw32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\dbghelp.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\elscore.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\gdi32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\icu.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\imagehlp.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\kernel32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\ktmw32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\netapi32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\normaliz.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\ntdll.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\ntdllk.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\ole32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\oleacc.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\oleaut32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\propsys.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\psapi.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\rtworkq.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\txfw32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\user32.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\usp10.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\version.dll_imports_indirect.lib" "C:\\a\\_temp\\msys64\\tmp\\rustcl8WCIE\\wofutil.dll_imports_indirect.lib" "-lgcc_s" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-lmingwex" "-luser32" "-lkernel32" "-Wl,--nxcompat" "-L" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1-rustc\\i686-pc-windows-gnu\\release\\build\\stacker-d3f5f2020a9db92d\\out" "-L" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1-rustc\\i686-pc-windows-gnu\\release\\build\\psm-209b3c2f591fdc56\\out" "-L" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1-rustc\\i686-pc-windows-gnu\\release\\build\\blake3-a0d1954ccec93ff8\\out" "-L" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1-rustc\\i686-pc-windows-gnu\\release\\build\\rustc_llvm-9c1d12dc9076cada\\out" "-L" "C:/a/rust/rust/build/i686-pc-windows-gnu/llvm/lib" "-L" "C:/a/rust/rust/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.1.0" "-o" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1-rustc\\i686-pc-windows-gnu\\release\\deps\\rustc_main-96d0305fb1a0ac21.exe" "-Wl,--gc-sections" "-no-pie" "-Wl,-O1" "-nodefaultlibs" "C:\\a\\rust\\rust\\build\\i686-pc-windows-gnu\\stage1\\lib\\rustlib\\i686-pc-windows-gnu\\lib\\rsend.o"
  = note: C:/a/rust/rust/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot open output file C:\a\rust\rust\build\i686-pc-windows-gnu\stage1-rustc\i686-pc-windows-gnu\release\deps\rustc_main-96d0305fb1a0ac21.exe: Invalid argument␍
          collect2.exe: error: ld returned 1 exit status

[RUSTC-TIMING] rustc_main test:false 3.743
error: could not compile `rustc-main` (bin "rustc-main") due to 1 previous error
Build completed unsuccessfully in 0:33:10

@bors

@bors bors added S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

and removed S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

labels

Dec 4, 2024

@compiler-errors

@bors

@bors

@rust-timer

Finished benchmarking commit (5a0a5e6): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

Results (secondary 2.1%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌ (primary) - - 0
Regressions ❌ (secondary) 2.1% [2.1%, 2.1%] 1
Improvements ✅ (primary) - - 0
Improvements ✅ (secondary) - - 0
All ❌✅ (primary) - - 0

Cycles

Results (primary -1.4%, secondary -2.6%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌ (primary) - - 0
Regressions ❌ (secondary) - - 0
Improvements ✅ (primary) -1.4% [-1.5%, -1.4%] 2
Improvements ✅ (secondary) -2.6% [-2.6%, -2.6%] 1
All ❌✅ (primary) -1.4% [-1.5%, -1.4%] 2

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 769.678s -> 768.023s (-0.22%)
Artifact size: 330.86 MiB -> 330.84 MiB (-0.01%)

@compiler-errors

@rustbot label: +beta-nominated +stable-nominated

not totally sure if this is stable worthy, but definitely let's beta backport this since this was found to be somewhat easy to trigger on stable :)

@compiler-errors

nvm it's on 1.85 already

@rustbot label: -beta-nominated

@lqd lqd mentioned this pull request

Jan 15, 2025

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request

Jan 15, 2025

@matthiaskrgr

add incremental test for issue 135514

r? @compiler-errors as requested in rust-lang#135514 (comment)

This adds parts of @steffahn's repro as an incremental test for rust-lang#135514. I had initially added the actual exploitation of the issue into the safe transmute, but removed it because it's not exactly needed for such a test. I can add it back if you'd like.

I've verified that the test fails with rust-lang#133828 reverted.

rust-timer added a commit to rust-lang-ci/rust that referenced this pull request

Jan 16, 2025

@rust-timer

Rollup merge of rust-lang#135522 - lqd:issue-135514, r=compiler-errors

add incremental test for issue 135514

r? @compiler-errors as requested in rust-lang#135514 (comment)

This adds parts of @steffahn's repro as an incremental test for rust-lang#135514. I had initially added the actual exploitation of the issue into the safe transmute, but removed it because it's not exactly needed for such a test. I can add it back if you'd like.

I've verified that the test fails with rust-lang#133828 reverted.

@steffahn

Let me leave an explicit link here, for anyone that gets here from the backport nomination; it’s this following issue that the backport would be supposed to fix on 1.84:

And as a TL;DR, my personal main concern is that this could be a confusing user-experience bug how on 1.84 (which is also a regression, i.e. this didn’t happen on 1.83): incremental compilation can – potentially for a long time during development – mask an overlapping-impl error in your code.

I have no good way to judge how likely something like this is or isn’t possible to hit in “normal” user code could, but the fix would appear sufficiently safe & minimal (and tested for 6 weeks on nightly) something that could be accepted as “include in a potential backport to stable if there’s going to be a 1.84.1 release for a different reason”. I also wouldn’t be surprised if most users that would encounter the issue accidentally would have no way of actually identifying this as a compiler bug and report it (no incr-comp related ICEs; probably most people would just be confused and think they changed something themselves when the error finally shows up).

@apiraino

Stable backport accepted as per compiler team on Zulip. A backport PR will be authored by the release team at the end of the current development cycle. Backport labels handled by them.

As Steffan hints, this could be a pretty confusing error, but triggering this error is rare (incr. comp. is not usualyy enabled on release builds) so in favor of a dot release if planned, but probably not just for this one.

@rustbot label +stable-accepted

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 27, 2025

@bors

[stable] Prepare Rust 1.84.1 point release

cc @rust-lang/release r? ghost

wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request

Feb 2, 2025

@he32

Pkgsrc changes:

Upstream changes:

Version 1.84.1 (2025-01-30)

Version 1.84.0 (2025-01-09)

Language

Compiler

Libraries

Stabilized APIs

These APIs are now stable in const contexts

Cargo

Rustdoc

Compatibility Notes

tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request

Feb 4, 2025

@tmeijn

This MR contains the following updates:

Package Update Change
rust patch 1.84.0 -> 1.84.1

MR created with the help of el-capitano/tools/renovate-bot.

Proposed changes to behavior should be submitted there as MRs.


Release Notes

rust-lang/rust (rust)

v1.84.1

Compare Source

==========================


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this MR and you won't be reminded about this update again.



This MR has been generated by Renovate Bot.

bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request

Mar 11, 2025

@bmwiedemann