Skip to content

rust 1.44.0 fails to build in miri v0.1.0 on NetBSD/i386 8.0 #73117

Closed
@he32

Description

@he32

I have already successfully built rust 1.44.0 on NetBSD/amd64 8.0.
Next I'm tackling NetBSD/i386 8.0, but that is not going as expected, the build
errors out after hours of apparent successful building with

   Compiling miri v0.1.0 (/usr/pkgsrc/lang/rust/work/rustc-1.44.0-src/src/tools/miri)
error[E0478]: lifetime bound not satisfied
   --> src/tools/miri/src/diagnostics.rs:182:18
    |
182 | impl<'mir, 'tcx> EvalContextExt<'mir, 'tcx> for crate::MiriEvalContext<'mir, 'tcx> {}
    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: lifetime parameter instantiated with the lifetime `'tcx` as defined on the impl at 182:12
   --> src/tools/miri/src/diagnostics.rs:182:12
    |
182 | impl<'mir, 'tcx> EvalContextExt<'mir, 'tcx> for crate::MiriEvalContext<'mir, 'tcx> {}
    |            ^^^^
note: but lifetime parameter must outlive the lifetime `'mir` as defined on the impl at 182:6
   --> src/tools/miri/src/diagnostics.rs:182:6
    |
182 | impl<'mir, 'tcx> EvalContextExt<'mir, 'tcx> for crate::MiriEvalContext<'mir, 'tcx> {}
    |      ^^^^

and several more instances of a similar error, and

error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'tcx` due to conflicting requirements
   --> src/tools/miri/src/helpers.rs:267:35
    |
267 |         impl<'ecx, 'mir, 'tcx, F> ValueVisitor<'mir, 'tcx, Evaluator<'tcx>>
    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: first, the lifetime cannot outlive the lifetime `'tcx` as defined on the impl at 267:26...
   --> src/tools/miri/src/helpers.rs:267:26
    |
267 |         impl<'ecx, 'mir, 'tcx, F> ValueVisitor<'mir, 'tcx, Evaluator<'tcx>>
    |                          ^^^^
note: ...so that the types are compatible
   --> src/tools/miri/src/helpers.rs:267:35
    |
267 |         impl<'ecx, 'mir, 'tcx, F> ValueVisitor<'mir, 'tcx, Evaluator<'tcx>>
    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: expected  `rustc_mir::interpret::ValueVisitor<'mir, 'tcx, machine::Evaluator<'tcx>>`
               found  `rustc_mir::interpret::ValueVisitor<'_, '_, machine::Evaluator<'_>>`
note: but, the lifetime must be valid for the lifetime `'mir` as defined on the impl at 267:20...
   --> src/tools/miri/src/helpers.rs:267:20
    |
267 |         impl<'ecx, 'mir, 'tcx, F> ValueVisitor<'mir, 'tcx, Evaluator<'tcx>>
    |                    ^^^^
note: ...so that the types are compatible
   --> src/tools/miri/src/helpers.rs:272:22
    |
272 |             type V = MPlaceTy<'tcx, Tag>;
    |                      ^^^^^^^^^^^^^^^^^^^
    = note: expected  `rustc_mir::interpret::visitor::Value<'mir, 'tcx, machine::Evaluator<'tcx>>`
               found  `rustc_mir::interpret::visitor::Value<'_, '_, machine::Evaluator<'tcx>>`

I'm confused. Why would the amd64 build succeed and the i386 build fail when
building the same sources, with what appears to be a rust language issue??

I expected the build on NetBSD/i386 8.0 to succeed.

Instead, this happened: (see above).

The bootstrap compiler is rust 1.43.1.

Meta

rustc --version --verbose:

rustc 1.43.1
binary: rustc
commit-hash: unknown
commit-date: unknown
host: i686-unknown-netbsd
release: 1.43.1
LLVM version: 9.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-miriArea: The miri toolC-bugCategory: This is a bug.O-netbsdOperating system: NetBSDO-x86_32Target: x86 processors, 32 bit (like i686-*) (IA-32)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions