Skip to content

"thread 'rustc' has overflowed its stack" #75798

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

Already on GitHub? Sign in to your account

Closed
samuela opened this issue Aug 22, 2020 · 8 comments
Closed

"thread 'rustc' has overflowed its stack" #75798

samuela opened this issue Aug 22, 2020 · 8 comments
Labels
C-bug Category: This is a bug. E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@samuela
Copy link

samuela commented Aug 22, 2020

Code

See https://github.com/cuddlefish-io/cuddlefish/tree/6214d031f1070af381a9cd65981e3555286e44f0/api. Run cargo check in that directory.

Meta

rustc --version --verbose:

❯ rustc --version --verbose
rustc 1.45.2 (d3fb005a3 2020-07-31)
binary: rustc
commit-hash: d3fb005a39e62501b8b0b356166e515ae24e2e54
commit-date: 2020-07-31
host: x86_64-apple-darwin
release: 1.45.2
LLVM version: 10.0

Error output

cuddlefish/api on  main [⇡!+?] is 📦 v0.0.0 via ⬢ v14.7.0 via 🦀 v1.45.2 on ☁️  us-west-2 
❯ cargo check
    Checking api v0.0.0 (/Users/skainswo/dev/cuddlefish/api)

thread 'rustc' has overflowed its stack
fatal runtime error: stack overflow
error: could not compile `api`.

Caused by:
  process didn't exit successfully: `rustc --crate-name api --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,metadata -Cembed-bitcode=no -C debuginfo=2 -C metadata=b7f541daad1c8e56 -C extra-filename=-b7f541daad1c8e56 --out-dir /Users/skainswo/dev/cuddlefish/api/target/debug/deps -C incremental=/Users/skainswo/dev/cuddlefish/api/target/debug/incremental -L dependency=/Users/skainswo/dev/cuddlefish/api/target/debug/deps --extern env_logger=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libenv_logger-a1331e3917cbd6d4.rmeta --extern failure=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libfailure-f52ad5f8e7b5be6d.rmeta --extern futures=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libfutures-9975a0d10bb7f5bb.rmeta --extern git2=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libgit2-374ff7307c1247b9.rmeta --extern graphql_client=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libgraphql_client-8b033e7ee9b5a77b.rmeta --extern hyper=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libhyper-168f2afc4e83fd08.rmeta --extern juniper=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libjuniper-22b603df7a506eb3.rmeta --extern juniper_hyper=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libjuniper_hyper-0945169f5c23606f.rmeta --extern log=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/liblog-a1fb919cce22f994.rmeta --extern reqwest=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libreqwest-fd81505b8c62ff75.rmeta --extern serde=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libserde-1c408f71e762d0c7.rmeta --extern tokio=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libtokio-1c56ebf84f1b9765.rmeta -L native=/Users/skainswo/dev/cuddlefish/api/target/debug/build/backtrace-sys-040cc08988eb19fa/out -L native=/Users/skainswo/dev/cuddlefish/api/target/debug/build/libgit2-sys-236cb2290e3eaed3/out/build -L native=/Users/skainswo/dev/cuddlefish/api/target/debug/build/libssh2-sys-325c4d7acaf11ade/out/build -L 'native=/usr/local/opt/[email protected]/lib'` (signal: 6, SIGABRT: process abort signal)
Backtrace

❯ RUST_BACKTRACE=1 cargo check
    Checking api v0.0.0 (/Users/skainswo/dev/cuddlefish/api)

thread 'rustc' has overflowed its stack
fatal runtime error: stack overflow
error: could not compile `api`.

Caused by:
  process didn't exit successfully: `rustc --crate-name api --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,metadata -Cembed-bitcode=no -C debuginfo=2 -C metadata=b7f541daad1c8e56 -C extra-filename=-b7f541daad1c8e56 --out-dir /Users/skainswo/dev/cuddlefish/api/target/debug/deps -C incremental=/Users/skainswo/dev/cuddlefish/api/target/debug/incremental -L dependency=/Users/skainswo/dev/cuddlefish/api/target/debug/deps --extern env_logger=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libenv_logger-a1331e3917cbd6d4.rmeta --extern failure=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libfailure-f52ad5f8e7b5be6d.rmeta --extern futures=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libfutures-9975a0d10bb7f5bb.rmeta --extern git2=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libgit2-374ff7307c1247b9.rmeta --extern graphql_client=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libgraphql_client-8b033e7ee9b5a77b.rmeta --extern hyper=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libhyper-168f2afc4e83fd08.rmeta --extern juniper=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libjuniper-22b603df7a506eb3.rmeta --extern juniper_hyper=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libjuniper_hyper-0945169f5c23606f.rmeta --extern log=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/liblog-a1fb919cce22f994.rmeta --extern reqwest=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libreqwest-fd81505b8c62ff75.rmeta --extern serde=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libserde-1c408f71e762d0c7.rmeta --extern tokio=/Users/skainswo/dev/cuddlefish/api/target/debug/deps/libtokio-1c56ebf84f1b9765.rmeta -L native=/Users/skainswo/dev/cuddlefish/api/target/debug/build/backtrace-sys-040cc08988eb19fa/out -L native=/Users/skainswo/dev/cuddlefish/api/target/debug/build/libgit2-sys-236cb2290e3eaed3/out/build -L native=/Users/skainswo/dev/cuddlefish/api/target/debug/build/libssh2-sys-325c4d7acaf11ade/out/build -L 'native=/usr/local/opt/[email protected]/lib'` (signal: 6, SIGABRT: process abort signal)

@samuela samuela added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Aug 22, 2020
@samuela
Copy link
Author

samuela commented Aug 22, 2020

@samuela
Copy link
Author

samuela commented Aug 22, 2020

For some more context, this GraphQL query is known to be good. After a little poking around this seems to be caused by the type of the argument.

@tesuji
Copy link
Contributor

tesuji commented Aug 22, 2020

Can you check the code in nightly Rust?

@jonas-schievink jonas-schievink added the E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example label Aug 22, 2020
@Julian-Wollersberger
Copy link
Contributor

I could reproduce this in todays nightly, the nightly from 2020-07-26, stable 1.45.2 and a very old nightly from 2020-01-14.
This stack overflow seems to exist for a long time.

@Aaron1011
Copy link
Member

Backtrace:

#0  0x00007fb729bb7355 in raise () from /usr/lib/libc.so.6
#1  0x00007fb729ba0853 in abort () from /usr/lib/libc.so.6
#2  0x00007fb729e7d8b7 in std::sys::unix::abort_internal () at library/std/src/sys/unix/mod.rs:167
#3  0x00007fb729e6a7d5 in std::sys_common::util::abort () at library/std/src/sys_common/util.rs:19
#4  0x00007fb729e7cba5 in std::sys::unix::stack_overflow::imp::signal_handler () at library/std/src/sys/unix/stack_overflow.rs:106
#5  <signal handler called>
#6  0x00007fb71daa1674 in core::cmp::min_by (v1=<error reading variable: Cannot access memory at address 0x7fb723f7ffc8>, v2=<error reading variable: Cannot access memory at address 0x7fb723f7ffd0>, compare=0x0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:942
#7  0x00007fb71daa1624 in core::cmp::Ord::min (self=3, other=23) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:617
#8  0x00007fb71daa1654 in core::cmp::min (v1=3, v2=23) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:922
#9  0x00007fb71d868a5f in <u8 as core::slice::SliceOrd>::compare (left=..., right=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/mod.rs:6690
#10 0x00007fb71d86da6d in core::slice::<impl core::cmp::Ord for [T]>::cmp (self=..., other=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/mod.rs:6512
#11 0x00007fb71d52f9a8 in core::str::traits::<impl core::cmp::Ord for str>::cmp (self=..., other=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/str/mod.rs:1736
#12 0x00007fb71d4b1019 in alloc::collections::btree::search::search_linear (node=0x7fb723f80420, key=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/collections/btree/search.rs:76
#13 0x00007fb71d4a9bb8 in alloc::collections::btree::search::search_node (node=..., key=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/collections/btree/search.rs:51
#14 0x00007fb71d4aec4b in alloc::collections::btree::search::search_tree (node=..., key=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/collections/btree/search.rs:26
#15 0x00007fb71d574e09 in alloc::collections::btree::map::BTreeMap<K,V>::get (self=0x7fb72476a7e8, key=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/collections/btree/map.rs:569
#16 0x00007fb71d4c8f9c in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71a48dea0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:45
#17 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71a48dea0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#18 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f80858, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#19 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f80858, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#20 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbe318, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
#21 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1ea0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:54
#22 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71f3a1ea0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#23 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f80a68, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#24 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f80a68, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#25 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbf1c0, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
#26 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1bd0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:54
#27 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71f3a1bd0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#28 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f80c78, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#29 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f80c78, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#30 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbf1c0, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
#31 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1bd0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:54
#32 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71f3a1bd0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#33 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f80e88, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#34 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f80e88, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#35 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbf1c0, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
--Type <RET> for more, q to quit, c to continue without paging--
#36 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1bd0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:54
#37 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71f3a1bd0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#38 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f81098, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#39 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f81098, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#40 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbf1c0, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
#41 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1bd0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:54
#42 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71f3a1bd0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#43 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f812a8, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#44 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f812a8, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#45 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbf1c0, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
#46 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1bd0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:54
#47 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71f3a1bd0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#48 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f814b8, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#49 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f814b8, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#50 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbf1c0, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
#51 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1bd0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:54
#52 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71f3a1bd0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#53 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f816c8, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#54 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f816c8, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#55 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbf1c0, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
#56 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1bd0)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:54
#57 0x00007fb71d498410 in core::iter::traits::iterator::Iterator::any::check::{{closure}} (x=0x7fb71f3a1bd0)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2144
#58 0x00007fb71d4d08dd in core::iter::traits::iterator::Iterator::try_fold (self=0x7fb723f818d8, init=(), f=...)
    at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1869
#59 0x00007fb71d4d05f3 in core::iter::traits::iterator::Iterator::any (self=0x7fb723f818d8, f=...) at /home/aaron/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2148
#60 0x00007fb71d4c8ee0 in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection (self=0x7fb716dbf1c0, context=0x7fb724768360, type_name=...)
    at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/graphql_client_codegen-0.9.0/src/inputs.rs:38
#61 0x00007fb71d4c901a in graphql_client_codegen::inputs::GqlInput::contains_type_without_indirection::{{closure}} (field=0x7fb71f3a1bd0)

This looks like infinite recursion in the proc-macro graphql_client_codegen

@Julian-Wollersberger
Copy link
Contributor

Yes, it's infinite recursion in a proc-macro.

Minimal reproducer

File stackoverflow_proc_macro/src/lib.rs:

extern crate proc_macro;

use proc_macro::TokenStream;
use std::str::FromStr;

#[proc_macro_derive(GraphQLQuery)]
pub fn hello_macro_derive(_input: TokenStream) -> TokenStream {
    TokenStream::from_str(&recursive_call(42).to_string()).unwrap()
}

fn recursive_call(n: i32) -> i32 {
    return recursive_call(n + 1);
}

File stackoverflow_proc_macro/Cargo.toml:

# [package] ...
[lib]
proc-macro = true

File api/src/main.rs:

use stackoverflow_proc_macro::*;

trait GraphQLQuery { }

#[derive(GraphQLQuery)]
struct InsertBlamelines;

pub fn main() {}

File api/Cargo.toml:

# [package] ...
[dependencies]
stackoverflow_proc_macro = { path = "../stackoverflow_proc_macro" }

This results in the same error message:

    Compiling stackoverflow_proc_macro v0.1.0 (/home/julian/Dokumente/Rust/ICEs/cuddlefish/stackoverflow_proc_macro)
    Checking api v0.0.0 (/home/julian/Dokumente/Rust/ICEs/cuddlefish/api)

thread 'rustc' has overflowed its stack
fatal runtime error: stack overflow
error: could not compile `api`.

Caused by:
  process didn't exit successfully: `rustc <very long command> ` (signal: 6, SIGABRT: process abort signal)

This is just a missleading error message: It doesn't happen in rustc directly.

@samuela
Copy link
Author

samuela commented Aug 22, 2020

So it seems like this is the kind of thing that should be reported as a proc-macro error then. The current error message is a bit misleading since this isn't directly rustc's fault.

@nagisa
Copy link
Member

nagisa commented Aug 23, 2020

Yeah, I’m going to call this a

Duplicate of #56058

It has been a long-time desire/want to isolate proc-macros from the rest of rustc better, but its… not trivial.

@nagisa nagisa closed this as completed Aug 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

6 participants