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

ICE fictitious type O in sizing_type_of() #17060

Closed
compyman opened this issue Sep 7, 2014 · 5 comments
Closed

ICE fictitious type O in sizing_type_of() #17060

compyman opened this issue Sep 7, 2014 · 5 comments
Labels
A-closures Area: closures (`|args| { .. }`) I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@compyman
Copy link

compyman commented Sep 7, 2014

on Linux x86 with rustc 0.12.0-pre (38eb0e5 2014-09-06 21:46:25 +0000)
trying to compile this code
recieved this output :

    error: internal compiler error: fictitious type O in sizing_type_of()
    task 'rustc' failed at 'Box<Any>', /home/nate/builds/rust/src/libsyntax/ast_util.rs:776

with trace

    stack backtrace:
     1:     0x7f902d7bce30 - rt::backtrace::imp::write::h8dfe23bbe5b6cb3bH8q
     2:     0x7f902d7bffd0 - failure::on_fail::h69988cd5c6982b70pur
     3:     0x7f902df9bd60 - unwind::begin_unwind_inner::h8aba294fe218a26962d
     4:     0x7f902c6560a0 - unwind::begin_unwind::h9440727821508612647
     5:     0x7f902c656810 - diagnostic::Handler::bug::h9f00b694d9375c0fohF
     6:     0x7f902e38e190 - driver::session::Session::bug::hac6c1004371248fcJqE
     7:     0x7f902e76c5b0 - middle::trans::type_of::sizing_type_of::h415cb7c1dae89ecaisa
     8:     0x7f902e8a3440 - middle::trans::adt::mk_struct::haf9a1713ac7855d1Vzv
     9:     0x7f902e7642c0 - middle::trans::adt::represent_type::h0ca33f7bc23af081q4u
    10:     0x7f902e76c5b0 - middle::trans::type_of::sizing_type_of::h415cb7c1dae89ecaisa
    11:     0x7f902e8a3440 - middle::trans::adt::mk_struct::haf9a1713ac7855d1Vzv
    12:     0x7f902e7642c0 - middle::trans::adt::represent_type::h0ca33f7bc23af081q4u
    13:     0x7f902e76c5b0 - middle::trans::type_of::sizing_type_of::h415cb7c1dae89ecaisa
    14:     0x7f902e77d640 - middle::trans::common::type_is_immediate::hd9df70b62b117494PC6
    15:     0x7f902e7dfb40 - middle::trans::type_of::type_of_rust_fn::hc1e5fcf4fc152b8cToa
    16:     0x7f902e7f3e70 - middle::trans::base::decl_rust_fn::hfe3b8b580a4229fbrOd
    17:     0x7f902e78d9b0 - middle::trans::closure::get_or_create_declaration_if_unboxed_closure::h03876f0f6e5837eeDik
    18:     0x7f902e7b21b0 - middle::trans::closure::trans_unboxed_closure::ha810c46b539835e23nk
    19:     0x7f902e79c310 - middle::trans::expr::trans_rvalue_dps_unadjusted::hdca93594616d2f57aH4
    20:     0x7f902e7584c0 - middle::trans::expr::trans_into::h266bfba8bffd73cayk3
    21:     0x7f902e7a7480 - middle::trans::expr::trans_uniq_expr::h7e16b6e8731a308axt5
    22:     0x7f902e7a7fb0 - middle::trans::expr::trans_unary::ha876cf428beba7efsp5
    23:     0x7f902e79b3b0 - middle::trans::expr::trans_unadjusted::hf27ef48d75242c39I73
    24:     0x7f902e759b00 - middle::trans::expr::trans::h6a0ddf2bac5c1913uo3
    25:     0x7f902e7584c0 - middle::trans::expr::trans_into::h266bfba8bffd73cayk3
    26:     0x7f902e7b0490 - middle::trans::expr::trans_adt::hc2ddefbcf663e510Ug5
    27:     0x7f902e7b4000 - middle::trans::expr::trans_struct::closure.121558
    28:     0x7f902e79c310 - middle::trans::expr::trans_rvalue_dps_unadjusted::hdca93594616d2f57aH4
    29:     0x7f902e7584c0 - middle::trans::expr::trans_into::h266bfba8bffd73cayk3
    30:     0x7f902e758940 - middle::trans::controlflow::trans_block::h61b8cbe6a670a70118Y
    31:     0x7f902e807030 - middle::trans::base::trans_closure::h2fcf5313d99799bbvSf
    32:     0x7f902e748680 - middle::trans::base::trans_fn::h430e6689ffbf4759i4f
    33:     0x7f902e748ce0 - middle::trans::monomorphize::monomorphic_fn::h8f2e032a4b7c7a78suY
    34:     0x7f902e784100 - middle::trans::callee::trans_fn_ref_with_vtables::h3b4ad9a4f9f1ee50b51
    35:     0x7f902e7819a0 - middle::trans::callee::trans_fn_ref::h4f5637d0acc49b83jR1
    36:     0x7f902e78e840 - middle::trans::callee::trans_call::closure.121253
    37:     0x7f902e7617b0 - middle::trans::callee::trans_call_inner::h0884abd0ece1113f0v2
    38:     0x7f902e78e5e0 - middle::trans::callee::trans_call::hf43c12486ccf63725p2
    39:     0x7f902e79c310 - middle::trans::expr::trans_rvalue_dps_unadjusted::hdca93594616d2f57aH4
    40:     0x7f902e7584c0 - middle::trans::expr::trans_into::h266bfba8bffd73cayk3
    41:     0x7f902e85cde0 - middle::trans::_match::mk_binding_alloca::h5198864728530824943
    42:     0x7f902e7fe1a0 - middle::trans::_match::store_local::h1895fa7ccb0f86bfruj
    43:     0x7f902e757b20 - middle::trans::base::init_local::h4d47e1dc9478c2a9WZe
    44:     0x7f902e757030 - middle::trans::controlflow::trans_stmt::h7e7f731061532d0cQ3Y
    45:     0x7f902e758940 - middle::trans::controlflow::trans_block::h61b8cbe6a670a70118Y
    46:     0x7f902e807030 - middle::trans::base::trans_closure::h2fcf5313d99799bbvSf
    47:     0x7f902e748680 - middle::trans::base::trans_fn::h430e6689ffbf4759i4f
    48:     0x7f902e743f70 - middle::trans::base::trans_item::h0de37d4922431aed7ng
    49:     0x7f902e813150 - middle::trans::base::trans_crate::ha40078ee900793aaGnh
    50:     0x7f902ec47d80 - driver::driver::phase_4_translate_to_llvm::h32975243f7ccfa8cHQD
    51:     0x7f902ec3f730 - driver::driver::compile_input::h2ebc4a2a4683abeaIsD
    52:     0x7f902ecd0fd0 - driver::run_compiler::h52e60497a677e19aZjH
    53:     0x7f902ecd0ec0 - driver::main_args::closure.147495
    54:     0x7f902e3bd3e0 - task::TaskBuilder<S>::try_future::closure.100103
    55:     0x7f902e3bd1e0 - task::TaskBuilder<S>::spawn_internal::closure.100074
    56:     0x7f902f776c40 - task::spawn_opts::closure.8408
    57:     0x7f902dffa180 - rust_try_inner
    58:     0x7f902dffa170 - rust_try
    59:     0x7f902df99430 - unwind::try::h1f3abd0962774e26gRd
    60:     0x7f902df99290 - task::Task::run::hf9e394d3f7a5234f92c
    61:     0x7f902f7769b0 - task::spawn_opts::closure.8348
    62:     0x7f902df9ae10 - thread::thread_start::hc7ecb3d08ae7ba93god
    63:     0x7f902d278060 - start_thread
    64:     0x7f902dc6a489 - __clone
    65:                0x0 - <unknown>
@nathantypanski
Copy link
Contributor

Much more minimal example:

#![feature(unboxed_closures)]

fn main(){
    struct Foo<'a, T> {
        fun:  Box<Fn<((), ), ((), T)> + 'a>
    }

    fn bar<'a, T> (h: Foo<'a, T>) -> Foo<'a, T>{
        Foo {
            fun: box |&: _: ()| {
                h.fun.call(((), ))
            }
        }
    }

    bar(Foo {
            fun: box |&: _: ()| {
                ((), ())
            }
        }
    );
}
scratch$ RUST_BACKTRACE=1 rustc 17060.rs 
error: internal compiler error: fictitious type T in sizing_type_of()
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'Box<Any>', /home/nathan/m/prj/rust/rust/src/libsyntax/ast_util.rs:776

stack backtrace:
   1:     0x7fa99d669e10 - rt::backtrace::imp::write::h51aa68d0663f3b61QLq
   2:     0x7fa99d66cf90 - failure::on_fail::h297efee10e7c3dcby7q
   3:     0x7fa9a1c0c290 - unwind::begin_unwind_inner::h41358ca950f0d61262d
   4:     0x7fa99e404190 - unwind::begin_unwind::h15398001123804529202
   5:     0x7fa99e404820 - diagnostic::Handler::bug::hdef46b4ea651e464ufF
   6:     0x7fa9a2214200 - driver::session::Session::bug::h02a5f48a9d9f9eb1uKC
   7:     0x7fa9a25450b0 - middle::trans::type_of::sizing_type_of::ha11747c57b42fdbfmk9
   8:     0x7fa9a262c640 - middle::trans::adt::mk_struct::h79b77082e9c2eac9tZt
   9:     0x7fa9a253e330 - middle::trans::adt::represent_type::hf72895e4426bae54Kxt
  10:     0x7fa9a25450b0 - middle::trans::type_of::sizing_type_of::ha11747c57b42fdbfmk9
  11:     0x7fa9a2553ef0 - middle::trans::common::type_is_immediate::h3c54d101f2bd0772tU5
  12:     0x7fa9a25a8cd0 - middle::trans::type_of::type_of_rust_fn::h12a37148d1de81c8Xg9
  13:     0x7fa9a25b9260 - middle::trans::base::decl_rust_fn::h12564314a66abf06oGc
  14:     0x7fa9a255f530 - middle::trans::closure::get_or_create_declaration_if_unboxed_closure::hd043bd5c8f2aeb2640i
  15:     0x7fa9a257e770 - middle::trans::closure::trans_unboxed_closure::h8a471658ddbc27c9v6i
  16:     0x7fa9a256b4a0 - middle::trans::expr::trans_rvalue_dps_unadjusted::hbdb735d1cb49bf56PY3
  17:     0x7fa9a2533e70 - middle::trans::expr::trans_into::h123a8cb28868f2addC2
  18:     0x7fa9a2574f00 - middle::trans::expr::trans_uniq_expr::h30b88a9c8d284f8fcL4
  19:     0x7fa9a2575830 - middle::trans::expr::trans_unary::h6c1ede6e229c70fa7G4
  20:     0x7fa9a256a850 - middle::trans::expr::trans_unadjusted::h171ecf2b051fc47dnp3
  21:     0x7fa9a2534de0 - middle::trans::expr::trans::hb43b26a8c8c973dc9F2
  22:     0x7fa9a2533e70 - middle::trans::expr::trans_into::h123a8cb28868f2addC2
  23:     0x7fa9a257ccc0 - middle::trans::expr::trans_adt::hb19dfc5187fcff3azy4
  24:     0x7fa9a257ffc0 - middle::trans::expr::trans_struct::closure.115770
  25:     0x7fa9a256b4a0 - middle::trans::expr::trans_rvalue_dps_unadjusted::hbdb735d1cb49bf56PY3
  26:     0x7fa9a2533e70 - middle::trans::expr::trans_into::h123a8cb28868f2addC2
  27:     0x7fa9a2534130 - middle::trans::controlflow::trans_block::h3153dd2213ad6bf4esY
  28:     0x7fa9a25cbda0 - middle::trans::base::trans_closure::hfafe5698ece5431ccIe
  29:     0x7fa9a252a740 - middle::trans::base::trans_fn::h323ef7584c829916ZTe
  30:     0x7fa9a252ac60 - middle::trans::monomorphize::monomorphic_fn::h318dd6b9156fceeabPX
  31:     0x7fa9a2557fc0 - middle::trans::callee::trans_fn_ref_with_vtables::h60202876a6fead6aQm1
  32:     0x7fa9a2556dd0 - middle::trans::callee::trans_fn_ref::h69bad953cd0bdaa7Y80
  33:     0x7fa9a2560080 - middle::trans::callee::trans_call::closure.115515
  34:     0x7fa9a253b740 - middle::trans::callee::trans_call_inner::hcef07a1a5f7c3620FN1
  35:     0x7fa9a255fe20 - middle::trans::callee::trans_call::h464b09bb44d97480KH1
  36:     0x7fa9a256b4a0 - middle::trans::expr::trans_rvalue_dps_unadjusted::hbdb735d1cb49bf56PY3
  37:     0x7fa9a256a850 - middle::trans::expr::trans_unadjusted::h171ecf2b051fc47dnp3
  38:     0x7fa9a2534de0 - middle::trans::expr::trans::hb43b26a8c8c973dc9F2
  39:     0x7fa9a2533770 - middle::trans::controlflow::trans_stmt_semi::h26cd24ef900b92a3krY
  40:     0x7fa9a2532fa0 - middle::trans::controlflow::trans_stmt::h94dc99c0f5a518693mY
  41:     0x7fa9a2534130 - middle::trans::controlflow::trans_block::h3153dd2213ad6bf4esY
  42:     0x7fa9a25cbda0 - middle::trans::base::trans_closure::hfafe5698ece5431ccIe
  43:     0x7fa9a252a740 - middle::trans::base::trans_fn::h323ef7584c829916ZTe
  44:     0x7fa9a2526950 - middle::trans::base::trans_item::h67be48931734de89Zbf
  45:     0x7fa9a25d5420 - middle::trans::base::trans_crate::h06bc312b46497235q6f
  46:     0x7fa9a2979960 - driver::driver::phase_4_translate_to_llvm::hc08ae48b078f56e24aC
  47:     0x7fa9a2971960 - driver::driver::compile_input::h08ecbcbe3a7bcaeacNB
  48:     0x7fa9a2a047f0 - driver::run_compiler::hfe0d6a906000c83cCCF
  49:     0x7fa9a2a04710 - driver::main_args::closure.136314
  50:     0x7fa9a2a16e60 - task::TaskBuilder<S>::try_future::closure.137484
  51:     0x7fa9a2a16c60 - task::TaskBuilder<S>::spawn_internal::closure.137461
  52:     0x7fa9a1f2b850 - task::spawn_opts::closure.8394
  53:     0x7fa9a1c33f50 - rust_try_inner
  54:     0x7fa9a1c33f40 - rust_try
  55:     0x7fa9a1c09a10 - unwind::try::h99dc0bfd91bbea66gRd
  56:     0x7fa9a1c09870 - task::Task::run::hcec539e97a50e30692c
  57:     0x7fa9a1f2b5c0 - task::spawn_opts::closure.8340
  58:     0x7fa9a1c0b330 - thread::thread_start::h1519d237f0e56dbfgod
  59:     0x7fa99ca09060 - start_thread
  60:     0x7fa9a18dd489 - __clone
  61:                0x0 - <unknown>

scratch$ rustc -v
rustc 0.12.0-pre (c95aa9950 2014-09-04 03:01:03 +0000)

@huonw huonw added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ A-closures Area: closures (`|args| { .. }`) labels Sep 7, 2014
@huonw
Copy link
Member

huonw commented Sep 7, 2014

cc #16672, #16791

@aturon aturon mentioned this issue Oct 16, 2014
47 tasks
@bkoropoff
Copy link
Contributor

Even smaller:

fn main(){
    fn bar<'a, T:'a> (t: T) -> Box<FnOnce<(),T> + 'a> {
        box move |:| t
    }
    bar(());
}

It looks like the ty_unboxed_closure variant has no way to represent monomorphization of free variables. It likely needs a Substs field added with appropriate plumbing. I'll look into how much work this is tomorrow.

@bkoropoff
Copy link
Contributor

This looks to be the same as #16791

@alexcrichton
Copy link
Member

Thanks @bkoropoff! Closing as a dupe.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-closures Area: closures (`|args| { .. }`) I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

5 participants