Skip to content

serde_codegen fails to compile on recent nightly with -Z orbit #34119

Closed
@alexbool

Description

@alexbool
Contributor

When I compile serde_codegen 0.7.8 with -Z orbit on Windows 32-bit, I get this error:

Assertion failed: isa<X>(Val) && "cast<Ty>() argument of incompatible type!", file C:\bot\slave\nightly-dist-rustc-win-msvc-32\build\src\llvm\include\llvm/Support/Casting.h, line 223
Build failed, waiting for other jobs to finish...
error: Could not compile `serde_codegen`.

Meta:

Alexander@VAIO-FZ13 MINGW64 ~
$ rustc -vV
rustc 1.11.0-nightly (1c975eafa 2016-06-05)
binary: rustc
commit-hash: 1c975eafa934e291e4f94b7252faae767de17313
commit-date: 2016-06-05
host: i686-pc-windows-msvc
release: 1.11.0-nightly

The build succeeds at least on OS X.

Activity

retep998

retep998 commented on Jun 6, 2016

@retep998
Member

The biggest codegen difference between -msvc and other targets is the SEH exception stuff, which may be causing this, possibly.

added
A-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.html
on Jun 6, 2016
eddyb

eddyb commented on Jun 7, 2016

@eddyb
Member

Hang on, that includes the changes which broke syntex_syntax and which I fixed in #34128.

@alexbool What version did you try on OSX?

alexbool

alexbool commented on Jun 7, 2016

@alexbool
ContributorAuthor

@eddyb version on OS X is:

alexbool@alexbool-osx ~/D/I/serde-codegen-failure> rustc -vV
rustc 1.11.0-nightly (1c975eafa 2016-06-05)
binary: rustc
commit-hash: 1c975eafa934e291e4f94b7252faae767de17313
commit-date: 2016-06-05
host: x86_64-apple-darwin
release: 1.11.0-nightly
eddyb

eddyb commented on Jun 7, 2016

@eddyb
Member

@alexbool Hmm, that's the same version, it shouldn't be able to compile syntex_syntax with RUSTFLAGS=-Zorbit.
Unless version 0.7 is old enough that it doesn't sport struct Name(u32); (that definition used to be type Name = u32; which would explain why it works).

@retep998 started a windows build of #34128, so we might find out soon, one way or another.

alexbool

alexbool commented on Jun 7, 2016

@alexbool
ContributorAuthor

@eddyb I am trying to make a minimal example now, seems that it isn't so easy

eddyb

eddyb commented on Jun 7, 2016

@eddyb
Member

@alexbool A backtrace or the last hundred or so lines from RUST_LOG=rustc_trans::mir could reveal the problem but I doubt either is possible on the MSVC nightly.

alexbool

alexbool commented on Jun 7, 2016

@alexbool
ContributorAuthor

@eddyb UPD only happens on release builds. Minimal example on the way

alexbool

alexbool commented on Jun 7, 2016

@alexbool
ContributorAuthor

Cargo.toml

[package]
name = "serde-codegen-failure"
version = "0.1.0"
authors = ["Alexander Bulaev <alexbool@yandex-team.ru>"]

[dependencies]
serde = "*"
serde_macros = "*"

src/lib.rs

#![feature(custom_derive, plugin)]
#![plugin(serde_macros)]

extern crate serde;

~/.cargo/config

[build]
rustflags = ["-Ctarget-cpu=native", "-Zorbit"]

(removing -Ctarget-cpu=native doesn't help)

Alexander@VAIO-FZ13 MINGW64 ~/serde-codegen-failure (master)
$ cargo build --verbose --release
   Compiling aster v0.17.0
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\aster-0.17.0\\src\\lib.rs --crate-name aster --crate-type lib -C opt-level=3 -C metadata=8cc5f970a844ae51 -C extra-filename=-8cc5f970a844ae51 --out-dir C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --cap-lints allow -Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit`
   Compiling quasi v0.11.0
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\quasi-0.11.0\\src\\lib.rs --crate-name quasi --crate-type lib -C opt-level=3 -C metadata=f0f90e4a9a9f69ab -C extra-filename=-f0f90e4a9a9f69ab --out-dir C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --cap-lints allow -Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit`
   Compiling serde v0.7.8
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde-0.7.8\\src\\lib.rs --crate-name serde --crate-type lib -C opt-level=3 --cfg feature=\"std\" --cfg feature=\"default\" -C metadata=90f0afafc2b6e513 -C extra-filename=-90f0afafc2b6e513 --out-dir C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --cap-lints allow -Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit`
   Compiling serde_codegen v0.7.8
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\build.rs --crate-name build_script_build --crate-type bin -C opt-level=3 --cfg feature=\"quasi_macros\" --cfg feature=\"nightly\" --out-dir C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\build\\serde_codegen-9f41a709c17aa9aa --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --cap-lints allow -Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit`
     Running `C:\Users\Alexander\serde-codegen-failure\target\release\build\serde_codegen-9f41a709c17aa9aa\build-script-build`
   Compiling quasi_codegen v0.11.0
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\quasi_codegen-0.11.0\\src\\lib.rs --crate-name quasi_codegen --crate-type lib -C opt-level=3 -C metadata=d15a779fc360468f -C extra-filename=-d15a779fc360468f --out-dir C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --extern aster=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps\\libaster-8cc5f970a844ae51.rlib --cap-lints allow -Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit`
   Compiling quasi_macros v0.11.0
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\quasi_macros-0.11.0\\src\\lib.rs --crate-name quasi_macros --crate-type dylib -C prefer-dynamic -C opt-level=3 -C metadata=30f11f7edf6a7bdc -C extra-filename=-30f11f7edf6a7bdc --out-dir C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --extern quasi_codegen=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps\\libquasi_codegen-d15a779fc360468f.rlib --cap-lints allow -Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit`
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\src\\lib.rs --crate-name serde_codegen --crate-type lib -C opt-level=3 --cfg feature=\"quasi_macros\" --cfg feature=\"nightly\" -C metadata=17040f1a2091a93f -C extra-filename=-17040f1a2091a93f --out-dir C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps --extern quasi=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps\\libquasi-f0f90e4a9a9f69ab.rlib --extern quasi_macros=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps\\quasi_macros-30f11f7edf6a7bdc.dll --extern aster=C:\\Users\\Alexander\\serde-codegen-failure\\target\\release\\deps\\libaster-8cc5f970a844ae51.rlib --cap-lints allow -Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit`
Assertion failed: isa<X>(Val) && "cast<Ty>() argument of incompatible type!", file C:\bot\slave\nightly-dist-rustc-win-msvc-32\build\src\llvm\include\llvm/Support/Casting.h, line 223
error: Could not compile `serde_codegen`.

Caused by:
  Process didn't exit successfully: `rustc C:\Users\Alexander\.cargo\registry\src\github.com-1ecc6299db9ec823\serde_codegen-0.7.8\src\lib.rs --crate-name serde_codegen --crate-type lib -C opt-level=3 --cfg feature="quasi_macros" --cfg feature="nightly" -C metadata=17040f1a2091a93f -C extra-filename=-17040f1a2091a93f --out-dir C:\Users\Alexander\serde-codegen-failure\target\release\deps --emit=dep-info,link -L dependency=C:\Users\Alexander\serde-codegen-failure\target\release\deps -L dependency=C:\Users\Alexander\serde-codegen-failure\target\release\deps --extern quasi=C:\Users\Alexander\serde-codegen-failure\target\release\deps\libquasi-f0f90e4a9a9f69ab.rlib --extern quasi_macros=C:\Users\Alexander\serde-codegen-failure\target\release\deps\quasi_macros-30f11f7edf6a7bdc.dll --extern aster=C:\Users\Alexander\serde-codegen-failure\target\release\deps\libaster-8cc5f970a844ae51.rlib --cap-lints allow -Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit` (exit code: 3221226505)

alexbool

alexbool commented on Jun 7, 2016

@alexbool
ContributorAuthor

Also build options (-Ctarget-cpu=native -Zorbit -Ctarget-cpu=native -Zorbit) are somehow passed twice, seems like there's also a cargo bug

eddyb

eddyb commented on Jun 7, 2016

@eddyb
Member

@alexbool Isn't it easier to just run RUSTFLAGS=-Zorbit cargo build in serde_codegen's source dir?

alexbool

alexbool commented on Jun 7, 2016

@alexbool
ContributorAuthor

@eddyb Yep, something like this works:

Alexander@VAIO-FZ13 MINGW64 ~/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_codegen-0.7.8
$ cargo build --release --verbose --no-default-features --features "nightly"
   Compiling aster v0.17.0
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\aster-0.17.0\\src\\lib.rs --crate-name aster --crate-type lib -C opt-level=3 -C metadata=8cc5f970a844ae51 -C extra-filename=-8cc5f970a844ae51 --out-dir C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --cap-lints allow -Ctarget-cpu=native -Zorbit`
   Compiling serde_codegen v0.7.8 (file:///C:/Users/Alexander/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_codegen-0.7.8)
     Running `rustc build.rs --crate-name build_script_build --crate-type bin -C opt-level=3 --cfg feature=\"nightly\" --cfg feature=\"quasi_macros\" --out-dir C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\build\\serde_codegen-da094a7fbaf20dd5 --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps -Ctarget-cpu=native -Zorbit`
   Compiling quasi v0.11.0
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\quasi-0.11.0\\src\\lib.rs --crate-name quasi --crate-type lib -C opt-level=3 -C metadata=f0f90e4a9a9f69ab -C extra-filename=-f0f90e4a9a9f69ab --out-dir C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --cap-lints allow -Ctarget-cpu=native -Zorbit`
     Running `C:\Users\Alexander\.cargo\registry\src\github.com-1ecc6299db9ec823\serde_codegen-0.7.8\target\release\build\serde_codegen-da094a7fbaf20dd5\build-script-build`
   Compiling quasi_codegen v0.11.0
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\quasi_codegen-0.11.0\\src\\lib.rs --crate-name quasi_codegen --crate-type lib -C opt-level=3 -C metadata=d15a779fc360468f -C extra-filename=-d15a779fc360468f --out-dir C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --extern aster=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps\\libaster-8cc5f970a844ae51.rlib --cap-lints allow -Ctarget-cpu=native -Zorbit`
   Compiling quasi_macros v0.11.0
     Running `rustc C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\quasi_macros-0.11.0\\src\\lib.rs --crate-name quasi_macros --crate-type dylib -C prefer-dynamic -C opt-level=3 -C metadata=30f11f7edf6a7bdc -C extra-filename=-30f11f7edf6a7bdc --out-dir C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --extern quasi_codegen=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps\\libquasi_codegen-d15a779fc360468f.rlib --cap-lints allow -Ctarget-cpu=native -Zorbit`
     Running `rustc src\\lib.rs --crate-name serde_codegen --crate-type lib -C opt-level=3 --cfg feature=\"nightly\" --cfg feature=\"quasi_macros\" --out-dir C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release --emit=dep-info,link -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release -L dependency=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps --extern quasi_macros=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps\\quasi_macros-30f11f7edf6a7bdc.dll --extern aster=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps\\libaster-8cc5f970a844ae51.rlib --extern quasi=C:\\Users\\Alexander\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\serde_codegen-0.7.8\\target\\release\\deps\\libquasi-f0f90e4a9a9f69ab.rlib -Ctarget-cpu=native -Zorbit`
Assertion failed: isa<X>(Val) && "cast<Ty>() argument of incompatible type!", file C:\bot\slave\nightly-dist-rustc-win-msvc-32\build\src\llvm\include\llvm/Support/Casting.h, line 223
error: Could not compile `serde_codegen`.

Caused by:
  Process didn't exit successfully: `rustc src\lib.rs --crate-name serde_codegen --crate-type lib -C opt-level=3 --cfg feature="nightly" --cfg feature="quasi_macros" --out-dir C:\Users\Alexander\.cargo\registry\src\github.com-1ecc6299db9ec823\serde_codegen-0.7.8\target\release --emit=dep-info,link -L dependency=C:\Users\Alexander\.cargo\registry\src\github.com-1ecc6299db9ec823\serde_codegen-0.7.8\target\release -L dependency=C:\Users\Alexander\.cargo\registry\src\github.com-1ecc6299db9ec823\serde_codegen-0.7.8\target\release\deps --extern quasi_macros=C:\Users\Alexander\.cargo\registry\src\github.com-1ecc6299db9ec823\serde_codegen-0.7.8\target\release\deps\quasi_macros-30f11f7edf6a7bdc.dll --extern aster=C:\Users\Alexander\.cargo\registry\src\github.com-1ecc6299db9ec823\serde_codegen-0.7.8\target\release\deps\libaster-8cc5f970a844ae51.rlib --extern quasi=C:\Users\Alexander\.cargo\registry\src\github.com-1ecc6299db9ec823\serde_codegen-0.7.8\target\release\deps\libquasi-f0f90e4a9a9f69ab.rlib -Ctarget-cpu=native -Zorbit` (exit code: 3221226505)
eddyb

eddyb commented on Jun 11, 2016

@eddyb
Member

@alexbool Does this still happen on the latest nightly?

alexbool

alexbool commented on Jun 11, 2016

@alexbool
ContributorAuthor

@eddyb latest nightly broke aster, so nope. I will recheck when it's fixed

alexbool

alexbool commented on Jun 12, 2016

@alexbool
ContributorAuthor

Still reproduces on latest nightly and serde-codegen 0.7.10

22 remaining items

alexcrichton

alexcrichton commented on Jun 15, 2016

@alexcrichton
Member

Ok, @brson and I will work on #34055, and once that's landed we can try to land an LLVM update, and hopefully that'll just magically fix this!

alexcrichton

alexcrichton commented on Jun 27, 2016

@alexcrichton
Member

I've added this to the "Launch MIR into Orbit" milestone, but feel free to correct me if that was in error!

eddyb

eddyb commented on Jun 27, 2016

@eddyb
Member

@alexbool Sounds good. What's the status of the LLVM update?

alexcrichton

alexcrichton commented on Jun 27, 2016

@alexcrichton
Member

I'm not personally actively working on it, but @brson has posted about it here and here. We may want a little bit of extra coordinate to support both emscripten and AVR, but may just want to coordinate in this thread

nikomatsakis

nikomatsakis commented on Jun 27, 2016

@nikomatsakis
Contributor

@alexcrichton seems like it qualifies for milestone to me.

nikomatsakis

nikomatsakis commented on Jul 27, 2016

@nikomatsakis
Contributor

Do we believe that this is platform specific? The original comment mentions that it fails on Windows 32-bit, but not Mac -- what about linux? Other versions of Windows?

alexbool

alexbool commented on Jul 28, 2016

@alexbool
ContributorAuthor

I cannot repriduce this on Linux. Did not try Windows 64 bit

eddyb

eddyb commented on Aug 1, 2016

@eddyb
Member

@alexbool Next nightly (~20h from now) should be fixed. Will close when we have confirmation.

alexbool

alexbool commented on Aug 1, 2016

@alexbool
ContributorAuthor

OK, I'll try

eddyb

eddyb commented on Aug 1, 2016

@eddyb
Member

@alexbool FWIW both @alexcrichton and me and have tried and can't reproduce on beta or nightly.
I also can't reproduce on a local build that includes the LLVM upgrade, so this is most likely fixed now.

alexbool

alexbool commented on Aug 2, 2016

@alexbool
ContributorAuthor

@eddyb I can confirm that with the latest nightly it doesn't reproduce

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-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.html

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @steveklabnik@alexcrichton@eddyb@nikomatsakis@retep998

        Issue actions

          serde_codegen fails to compile on recent nightly with -Z orbit · Issue #34119 · rust-lang/rust