Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 855719 - dev-lang/rust-1.62.0 miri compilation errors
Summary: dev-lang/rust-1.62.0 miri compilation errors
Status: RESOLVED NEEDINFO
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: Normal normal (vote)
Assignee: Georgy Yakovlev
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-07-02 10:05 UTC by xdev52
Modified: 2022-07-03 18:44 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description xdev52 2022-07-02 10:05:15 UTC
Fresh rustc-workspace-hack v1.0.0 (/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/src/tools/rustc-workspace-hack)
   Compiling miri v0.1.0 (/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/src/tools/miri)
     Running `CARGO=/usr/lib/rust/1.61.0/bin/cargo CARGO_CRATE_NAME=miri CARGO_MANIFEST_DIR=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/src/tools/miri CARGO_PKG_AUTHORS='Miri Team' CARGO_PKG_DESCRIPTION='An experimental interpreter for Rust MIR (core driver).' CARGO_PKG_HOMEPAGE='' CARGO_PKG_LICENSE='MIT OR Apache-2.0' CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=miri CARGO_PKG_REPOSITORY='https://github.com/rust-lang/miri' CARGO_PKG_VERSION=0.1.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=1 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE='' CARGO_PRIMARY_PACKAGE=1 LD_LIBRARY_PATH='/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps:/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2/lib' /var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/bootstrap/debug/rustc --crate-name miri --edition=2021 src/tools/miri/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C debuginfo=0 -C metadata=2d432f2d93c647c4 -C extra-filename=-2d432f2d93c647c4 --out-dir /var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps --target x86_64-unknown-linux-gnu -C linker=clang -L dependency=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps -L dependency=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps --extern env_logger=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libenv_logger-689a4957416de9b1.rmeta --extern getrandom=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libgetrandom-eb0fe60ea38bceea.rmeta --extern libc=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/liblibc-99db0f2aeb275555.rmeta --extern log=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/liblog-beefe794ad37925a.rmeta --extern measureme=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libmeasureme-a52c0b87dd27739b.rmeta --extern rand=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/librand-2471504c54270c8e.rmeta --extern rustc_workspace_hack=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/librustc_workspace_hack-96d3b7babce19c41.rmeta --extern shell_escape=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libshell_escape-3d569178e147fc47.rmeta --extern smallvec=/var/tmp/portage/dev-lang/rust-1.62.0/work/rustc-1.62.0-src/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/libsmallvec-80d2cf23fb9d5720.rmeta -C target-cpu=native -Lnative=/usr/lib/llvm/14/lib64 -Csymbol-mangling-version=v0 -Zunstable-options '--check-cfg=names()' '--check-cfg=values()' '--check-cfg=values(bootstrap)' '--check-cfg=values(parallel_compiler)' '--check-cfg=values(release)' '--check-cfg=values(no_btreemap_remove_entry)' '--check-cfg=values(crossbeam_loom)' '--check-cfg=values(span_locations)' -Zmacro-backtrace -Zunstable-options -Csplit-debuginfo=off -Ztls-model=initial-exec -Z binary-dep-depinfo`

error[E0407]: method `ptr_from_addr` is not a member of trait `Machine`
   --> src/tools/miri/src/machine.rs:602:5
    |
602 | /     fn ptr_from_addr(
603 | |         ecx: &MiriEvalContext<'mir, 'tcx>,
604 | |         addr: u64,
605 | |     ) -> Pointer<Option<Self::PointerTag>> {
606 | |         intptrcast::GlobalStateInner::ptr_from_addr(addr, ecx)
607 | |     }
    | |_____^ not a member of trait `Machine`

error[E0053]: method `get_alloc_id` has an incompatible type for trait
   --> src/tools/miri/src/machine.rs:161:30
    |
161 |     fn get_alloc_id(self) -> AllocId {
    |                              ^^^^^^^
    |                              |
    |                              expected enum `Option`, found struct `rustc_const_eval::interpret::AllocId`
    |                              help: change the output type to match the trait: `Option<rustc_const_eval::interpret::AllocId>`
    |
    = note: expected fn pointer `fn(machine::Tag) -> Option<rustc_const_eval::interpret::AllocId>`
               found fn pointer `fn(machine::Tag) -> rustc_const_eval::interpret::AllocId`

error[E0053]: method `ptr_get_alloc` has an incompatible type for trait
   --> src/tools/miri/src/machine.rs:614:10
    |
614 |     ) -> (AllocId, Size, Self::TagExtra) {
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |          |
    |          expected enum `Option`, found tuple
    |          help: change the output type to match the trait: `Option<(rustc_const_eval::interpret::AllocId, rustc_target::abi::Size, stacked_borrows::SbTag)>`
    |
    = note: expected fn pointer `fn(&rustc_const_eval::interpret::InterpCx<'mir, 'tcx, machine::Evaluator<'mir, 'tcx>>, rustc_const_eval::interpret::Pointer<_>) -> Option<(rustc_const_eval::interpret::AllocId, rustc_target::abi::Size, stacked_borrows::SbTag)>`
               found fn pointer `fn(&rustc_const_eval::interpret::InterpCx<'mir, 'tcx, machine::Evaluator<'mir, 'tcx>>, rustc_const_eval::interpret::Pointer<_>) -> (rustc_const_eval::interpret::AllocId, rustc_target::abi::Size, stacked_borrows::SbTag)`

error[E0046]: not all trait items implemented, missing: `ptr_from_addr_cast`, `ptr_from_addr_transmute`, `expose_ptr`
   --> src/tools/miri/src/machine.rs:434:1
    |
434 | impl<'mir, 'tcx> Machine<'mir, 'tcx> for Evaluator<'mir, 'tcx> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `ptr_from_addr_cast`, `ptr_from_addr_transmute`, `expose_ptr` in implementation
    |
    = help: implement the missing item: `fn ptr_from_addr_cast(_: &rustc_const_eval::interpret::InterpCx<'mir, 'tcx, Self>, _: u64) -> rustc_const_eval::interpret::Pointer<Option<<Self as rustc_const_eval::interpret::Machine<'mir, 'tcx>>::PointerTag>> { todo!() }`
    = help: implement the missing item: `fn ptr_from_addr_transmute(_: &rustc_const_eval::interpret::InterpCx<'mir, 'tcx, Self>, _: u64) -> rustc_const_eval::interpret::Pointer<Option<<Self as rustc_const_eval::interpret::Machine<'mir, 'tcx>>::PointerTag>> { todo!() }`
    = help: implement the missing item: `fn expose_ptr(_: &mut rustc_const_eval::interpret::InterpCx<'mir, 'tcx, Self>, _: rustc_const_eval::interpret::Pointer<<Self as rustc_const_eval::interpret::Machine<'mir, 'tcx>>::PointerTag>) -> Result<(), rustc_const_eval::interpret::InterpErrorInfo<'tcx>> { todo!() }`

error[E0061]: this function takes 2 arguments but 1 argument was supplied
    --> src/tools/miri/src/machine.rs:546:29
     |
546  |         let attrs = ecx.tcx.get_attrs(def_id);
     |                             ^^^^^^^^^ ------ supplied 1 argument
     |                             |
     |                             expected 2 arguments
     |
note: associated function defined here

error[E0308]: mismatched types
    --> src/tools/miri/src/machine.rs:547:73
     |
547  |         let link_name = match ecx.tcx.sess.first_attr_value_str_by_name(attrs, sym::link_name) {
     |                                                                         ^^^^^ expected `&[Attribute]`, found opaque type
     |
     = note: expected reference `&[Attribute]`
              found opaque type `rustc_middle::ty::Attributes<'_>`

error[E0061]: this function takes 2 arguments but 1 argument was supplied
    --> src/tools/miri/src/shims/foreign_items.rs:238:30
     |
238  |         let attrs = this.tcx.get_attrs(def_id);
     |                              ^^^^^^^^^ ------ supplied 1 argument
     |                              |
     |                              expected 2 arguments
     |
note: associated function defined here

error[E0308]: mismatched types
    --> src/tools/miri/src/shims/foreign_items.rs:242:43
     |
242  |             .first_attr_value_str_by_name(attrs, sym::link_name)
     |                                           ^^^^^ expected `&[Attribute]`, found opaque type
     |
     = note: expected reference `&[Attribute]`
              found opaque type `rustc_middle::ty::Attributes<'_>`

error[E0599]: no method named `subst` found for struct `rustc_middle::ty::Ty` in the current scope
   --> src/tools/miri/src/shims/posix/sync.rs:844:21
    |
844 |     let ty = def_ty.subst(*tcx, &[param.into()]);
    |                     ^^^^^ method not found in `rustc_middle::ty::Ty<'_>`


Reproducible: Always

Steps to Reproduce:
set miri flag on
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-07-02 10:07:32 UTC
Please include the full build.log and emerge --info.
Comment 2 Georgy Yakovlev archtester gentoo-dev 2022-07-03 18:33:43 UTC
miri is known to be broken, I'll just mask it.
Comment 3 Larry the Git Cow gentoo-dev 2022-07-03 18:41:38 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=46d2141f26986965ad75c5e345a6f7f811a23e5c

commit 46d2141f26986965ad75c5e345a6f7f811a23e5c
Author:     Georgy Yakovlev <gyakovlev@gentoo.org>
AuthorDate: 2022-07-03 18:39:52 +0000
Commit:     Georgy Yakovlev <gyakovlev@gentoo.org>
CommitDate: 2022-07-03 18:41:32 +0000

    profiles/base: mask rust[miri]
    
    Bug: https://bugs.gentoo.org/855719
    Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>

 profiles/base/package.use.mask        | 6 ++++++
 profiles/base/package.use.stable.mask | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)
Comment 4 Georgy Yakovlev archtester gentoo-dev 2022-07-03 18:44:24 UTC
I've adjusted above mask to be >= 1.62.0

I'm not testing miri and upstream made it clear that it will be broken often on release builds.

when miri stabilizes we'll unmask again.