Skip to content
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

Infinite recursion when using a Tree type containing a List Tree #7108

Open
ageron opened this issue Sep 20, 2024 · 0 comments
Open

Infinite recursion when using a Tree type containing a List Tree #7108

ageron opened this issue Sep 20, 2024 · 0 comments

Comments

@ageron
Copy link
Contributor

ageron commented Sep 20, 2024

Working on some code with a recursive Tree type, the compiler crashes with the following error message (see below for the full stacktrace):

thread 'main' panicked at crates/compiler/load_internal/src/file.rs:685:26:
way too many specialization passes!

Following a discussion with @bhansconnect on Zulip, he reproduced the issue with this much simpler code:

app [main] { pf: platform "https://github.com/roc-lang/basic-cli/releases/download/0.15.0/SlwdbJ-3GR7uBWQo6zlmYWNYOxnvo8r6YABXD-45UOw.tar.br" }

import pf.Stdout

Tree : [Empty, Node { label : Str, children : Set Tree }]

main =
    x : Tree
    x = Node { label: "a", children: Set.fromList [] }

    Inspect.toStr x
        |> Stdout.line!

Stacktrace

RUST_BACKTRACE=1 ~/dev/software/roc/target/debug/roc run test-bug.roc
thread 'main' panicked at crates/compiler/load_internal/src/file.rs:685:26:
way too many specialization passes!
stack backtrace:
   0: rust_begin_unwind
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:647:5
   1: core::panicking::panic_fmt
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panicking.rs:72:14
   2: core::panicking::panic_display
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panicking.rs:196:5
   3: core::panicking::panic_str
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panicking.rs:171:5
   4: core::option::expect_failed
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/option.rs:1988:5
   5: expect<u8>
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/option.rs:894:21
   6: inc
             at /Users/ageron/dev/software/roc/crates/compiler/load_internal/src/file.rs:684:21
   7: update
             at /Users/ageron/dev/software/roc/crates/compiler/load_internal/src/file.rs:2967:21
   8: state_thread_step
             at /Users/ageron/dev/software/roc/crates/compiler/load_internal/src/file.rs:1707:37
   9: {closure#1}
             at /Users/ageron/dev/software/roc/crates/compiler/load_internal/src/file.rs:2054:23
  10: {closure#0}<roc_load_internal::file::load_multi_threaded::{closure_env#1}, core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>>
             at /Users/ageron/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crossbeam-utils-0.8.16/src/thread.rs:163:65
  11: call_once<core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>, crossbeam_utils::thread::scope::{closure_env#0}<roc_load_internal::file::load_multi_threaded::{closure_env#1}, core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>>>
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panic/unwind_safe.rs:272:9
  12: do_call<core::panic::unwind_safe::AssertUnwindSafe<crossbeam_utils::thread::scope::{closure_env#0}<roc_load_internal::file::load_multi_threaded::{closure_env#1}, core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>>>, core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>>
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:554:40
  13: ___rust_try
  14: try<core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>, core::panic::unwind_safe::AssertUnwindSafe<crossbeam_utils::thread::scope::{closure_env#0}<roc_load_internal::file::load_multi_threaded::{closure_env#1}, core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>>>>
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:518:19
  15: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<crossbeam_utils::thread::scope::{closure_env#0}<roc_load_internal::file::load_multi_threaded::{closure_env#1}, core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>>>, core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>>
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panic.rs:142:14
  16: scope<roc_load_internal::file::load_multi_threaded::{closure_env#1}, core::result::Result<roc_load_internal::file::LoadResult, roc_load_internal::file::LoadingProblem>>
             at /Users/ageron/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crossbeam-utils-0.8.16/src/thread.rs:163:18
  17: load_multi_threaded
             at /Users/ageron/dev/software/roc/crates/compiler/load_internal/src/file.rs:1987:29
  18: load
             at /Users/ageron/dev/software/roc/crates/compiler/load_internal/src/file.rs:1494:35
  19: load
             at /Users/ageron/dev/software/roc/crates/compiler/load/src/lib.rs:39:5
  20: load_and_monomorphize
             at /Users/ageron/dev/software/roc/crates/compiler/load/src/lib.rs:143:11
  21: build_file
             at /Users/ageron/dev/software/roc/crates/compiler/build/src/program.rs:726:18
  22: build
             at /Users/ageron/dev/software/roc/crates/cli/src/lib.rs:920:27
  23: main
             at /Users/ageron/dev/software/roc/crates/cli/src/main.rs:64:17
  24: call_once<fn() -> core::result::Result<(), std::io::error::Error>, ()>
             at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant