Skip to content

Compiler crash when casting from *mut c_void to *mut [u8] #22955

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
snf opened this issue Mar 2, 2015 · 3 comments · Fixed by #25038
Closed

Compiler crash when casting from *mut c_void to *mut [u8] #22955

snf opened this issue Mar 2, 2015 · 3 comments · Fixed by #25038
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@snf
Copy link
Contributor

snf commented Mar 2, 2015

extern crate libc;

fn main() {
    unsafe {
        let data = libc::malloc(100);
        let data_vec = data as *mut [u8];
    }
}
$ rustc --version
rustc 1.0.0-nightly (890293655 2015-02-28) (built 2015-03-01)
$ RUST_BACKTRACE=1 rustc 1.rs 
1.rs:1:1: 1:19 warning: use of unstable library feature 'libc'
1.rs:1 extern crate libc;
       ^~~~~~~~~~~~~~~~~~
1.rs:1:1: 1:19 help: add #![feature(libc)] to the crate attributes to silence this warning
1.rs:1 extern crate libc;
       ^~~~~~~~~~~~~~~~~~
1.rs:5:20: 5:32 warning: use of unstable library feature 'libc'
1.rs:5         let data = libc::malloc(100);
                          ^~~~~~~~~~~~
1.rs:5:20: 5:32 help: add #![feature(libc)] to the crate attributes to silence this warning
1.rs:5         let data = libc::malloc(100);
                          ^~~~~~~~~~~~
1.rs:6:13: 6:21 warning: unused variable: `data_vec`, #[warn(unused_variables)] on by default
1.rs:6         let data_vec = data as *mut [u8];
                   ^~~~~~~~
error: internal compiler error: translating unsupported cast: *mut libc::types::common::c95::c_void (cast_pointer) -> *mut [u8] (cast_other)
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'Box<Any>', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libsyntax/diagnostic.rs:189

stack backtrace:
   1:         0x61ef7c4f - sys::backtrace::write::hb08af03691eab78a5kA
   2:         0x61f20782 - panicking::on_panic::h37164609ca1c02afBnJ
   3:         0x61e6063a - rt::unwind::begin_unwind_inner::h24d5e7492198457b43I
   4:         0x5f189a8d - rt::unwind::begin_unwind::h9113908695753286194
   5:         0x5f18a2c5 - diagnostic::Handler::bug::h35ee8d5e5a4a01aeCHD
   6:         0x5fcaa9fb - session::Session::bug::hf545afa75e911993uwp
   7:         0x615e1650 - trans::expr::trans_imm_cast::h267a0afdb72de17aLPj
   8:         0x615cc199 - trans::expr::trans_unadjusted::h195794326d4a3453m4h
   9:         0x615835bf - trans::expr::trans_into::h4bccf2ad56ca2eb8mnh
  10:         0x6168307e - trans::_match::mk_binding_alloca::h11720668362277363266
  11:         0x6158281d - trans::base::init_local::h445e388f28d5f2ddMps
  12:         0x61583fe2 - trans::controlflow::trans_block::hac110643148141f4T4d
  13:         0x615cd7ae - trans::expr::trans_rvalue_dps_unadjusted::h98f8f68155d4ea21Rzi
  14:         0x6158359e - trans::expr::trans_into::h4bccf2ad56ca2eb8mnh
  15:         0x61584307 - trans::controlflow::trans_block::hac110643148141f4T4d
  16:         0x6164f7ef - trans::base::trans_closure::hf74692cb2d4d8ab8wct
  17:         0x61570538 - trans::base::trans_fn::hd3b302f8da4ef8d2pnt
  18:         0x6156c107 - trans::base::trans_item::h43df28c38e89c2c1hLt
  19:         0x616562fc - trans::base::trans_crate::h6e541e412696da41RGu
  20:         0x62581fd2 - driver::phase_4_translate_to_llvm::h39966ab909496f1crNa
  21:         0x6255d5c8 - driver::compile_input::hee81c045ab46c74fIba
  22:         0x62627e6e - run_compiler::h875c1e123fe4ae2cF5b
  23:         0x62625a1c - thunk::F.Invoke<A, R>::invoke::h12424714292252424185
  24:         0x62624770 - rt::unwind::try::try_fn::h4021821266450575721
  25:         0x61f8bfe8 - rust_try_inner
  26:         0x61f8bfd5 - rust_try
  27:         0x62624e5c - thunk::F.Invoke<A, R>::invoke::h8199562432922027576
  28:         0x61f0c2d5 - sys::thread::thread_start::h1b1bb1e7ac08d3a6yRE
  29:         0x5bc420a3 - start_thread
  30:         0x61adfccc - __clone
  31:         0xffffffff - <unknown>
@snf
Copy link
Contributor Author

snf commented Mar 2, 2015

$ rustc --version --verbose
rustc 1.0.0-nightly (890293655 2015-02-28) (built 2015-03-01)
binary: rustc
commit-hash: 890293655251c372ea99694c0c9f0795e2663286
commit-date: 2015-02-28
build-date: 2015-03-01
host: x86_64-unknown-linux-gnu
release: 1.0.0-nightly

@jdm
Copy link
Contributor

jdm commented Mar 2, 2015

Very similar to #22554, #21397, #19424.

@jdm jdm added the I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ label Mar 2, 2015
@snf
Copy link
Contributor Author

snf commented May 1, 2015

An updated backtrace:

$ RUST_BACKTRACE=1 LD_LIBRARY_PATH=$HOME/prefix/lib/ $HOME/prefix/bin/rustc 1.rs

1.rs:7:13: 7:21 warning: unused variable: `data_vec`, #[warn(unused_variables)] on by default
1.rs:7         let data_vec = data as *mut [u8];
                   ^~~~~~~~
error: internal compiler error: translating unsupported cast: *mut libc::types::common::c95::c_void (cast_pointer) -> *mut [u8] (cast_other)
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'Box<Any>', /home/asdf/dev/rust/src/libsyntax/diagnostic.rs:230

stack backtrace:
   1:     0x7f73c3005417 - sys::backtrace::write::hfb8b5b4dfa655b67qYr
                        at src/libstd/sys/unix/backtrace.rs:158
   2:     0x7f73c3030364 - panicking::on_panic::hf27ec90cc572c53alow
                        at src/libstd/panicking.rs:47
   3:     0x7f73c2f68e51 - rt::unwind::begin_unwind_inner::h3a3f805bb467efa2v3v
                        at src/libstd/rt/unwind.rs:569
   4:     0x7f73bea35b87 - rt::unwind::begin_unwind::h4664568208419770541
                        at src/libstd/rt/unwind.rs:522
   5:     0x7f73bea36941 - diagnostic::Handler::bug::hf6c874b0f2e6f03fOKB
                        at /home/asdf/dev/rust/<std macros>:3
   6:     0x7f73bfb20bf6 - session::Session::bug::h7ed65b4fa6bc9b00lzq
                        at src/librustc/session/mod.rs:193
   7:     0x7f73c161541b - trans::expr::trans_imm_cast::h1fa93edfd9165f96vpC
                        at src/librustc_trans/trans/expr.rs:2053
   8:     0x7f73c160f717 - trans::expr::trans_datum_unadjusted::h2a79b1ba683448a0IGA
                        at src/librustc_trans/trans/expr.rs:607
   9:     0x7f73c160750d - trans::expr::trans_unadjusted::ha952dc0116ec79cfcCA
                        at src/librustc_trans/trans/expr.rs:496
  10:     0x7f73c158b03a - trans::expr::trans_into::hcdb747bbcae3909808z
                        at src/librustc_trans/trans/expr.rs:188
  11:     0x7f73c1709ad0 - trans::_match::store_local::closure.53415
                        at src/librustc_trans/trans/_match.rs:1553
  12:     0x7f73c1709930 - trans::_match::mk_binding_alloca::h17107593058856989663
                        at src/librustc_trans/trans/_match.rs:1639
  13:     0x7f73c1391d3f - trans::_match::store_local::hc5e4ea77bbef8a463hI
                        at src/librustc_trans/trans/_match.rs:1551
  14:     0x7f73c13918fe - trans::base::init_local::h4f033efca6ba182d3Yg
                        at src/librustc_trans/trans/base.rs:854
  15:     0x7f73c1589df3 - trans::controlflow::trans_stmt::hdc919aefa7c8d6e2I1u
                        at src/librustc_trans/trans/controlflow.rs:64
  16:     0x7f73c13c456a - trans::controlflow::trans_block::h83c3cf9971c5ae67n6u
                        at src/librustc_trans/trans/controlflow.rs:113
  17:     0x7f73c13c12e1 - trans::base::trans_closure::h0c12b821f3101919IFh
                        at src/librustc_trans/trans/base.rs:1575
  18:     0x7f73c13c5271 - trans::base::trans_fn::h616bc9a7e6602788qQh
                        at src/librustc_trans/trans/base.rs:1626
  19:     0x7f73c13d3032 - trans::base::trans_item::h9c92c602e06681f1Cei
                        at src/librustc_trans/trans/base.rs:1974
  20:     0x7f73c13dedb4 - trans::base::trans_mod::h90f3d10fe0d34a1bdli
                        at src/librustc_trans/trans/base.rs:2072
  21:     0x7f73c13fc1ca - trans::base::trans_crate::h5b74408b5e06dd9ap3i
                        at src/librustc_trans/trans/base.rs:2678
  22:     0x7f73c387cd2b - driver::phase_4_translate_to_llvm::closure.23715
                        at src/librustc_driver/driver.rs:726
  23:     0x7f73c387c5ea - util::common::time::h17075660751370174737
                        at src/librustc/util/common.rs:39
  24:     0x7f73c36e31ed - driver::phase_4_translate_to_llvm::hfc84bb0501adeb47nOa
                        at src/librustc_driver/driver.rs:725
  25:     0x7f73c366114a - driver::compile_input::heca1e822607288f0Qba
                        at src/librustc_driver/driver.rs:141
  26:     0x7f73c38f74dc - run_compiler::ha5179f722f30471365b
                        at src/librustc_driver/lib.rs:156
  27:     0x7f73c38f3cac - run::closure.26490
                        at src/librustc_driver/lib.rs:99
  28:     0x7f73c38f2dd8 - monitor::closure.26462
                        at src/librustc_driver/lib.rs:813
  29:     0x7f73c38f2ca1 - boxed::F.FnBox<A>::call_box::h430058624187413269
                        at src/liballoc/boxed.rs:369
  30:     0x7f73c38f2857 - boxed::Box<FnBox<A, Output $u3d$$u20$R$GT$$u2b$$u20$Send$u20$$u2b$$u20$$u27$a$GT$.FnOnce$LT$A$GT$::call_once::h17097062596038723674
                        at src/liballoc/boxed.rs:385
  31:     0x7f73c38f1f13 - thread::Builder::spawn_inner::closure.26437
                        at src/libstd/thread/mod.rs:346
  32:     0x7f73c38f1e9e - rt::unwind::try::try_fn::__rust_abi::h9889257790502695346
                        at src/libstd/rt/unwind.rs:139
  33:     0x7f73c38f1e39 - rt::unwind::try::try_fn::h9889257790502695346
  34:     0x7f73c3164fd8 - rust_try_inner
  35:     0x7f73c3164fc5 - rust_try
  36:     0x7f73c38f132a - rt::unwind::try::h11333728198225189581
                        at src/libstd/rt/unwind.rs:125
  37:     0x7f73c38f10f0 - thread::Builder::spawn_inner::closure.26369
                        at src/libstd/thread/mod.rs:346
  38:     0x7f73c38f2acd - boxed::F.FnBox<A>::call_box::h6100598235081829283
                        at src/liballoc/boxed.rs:369
  39:     0x7f73c2ffca87 - boxed::Box<FnBox<A, Output $u3d$$u20$R$GT$$u2b$$u20$$u27$a$GT$.FnOnce$LT$A$GT$::call_once::h5868424356375581454
                        at src/liballoc/boxed.rs:377
  40:     0x7f73c2ffc987 - sys_common::thread::start_thread::h3330a160aae3ecc2o0q
                        at src/libstd/sys/common/thread.rs:30
  41:     0x7f73c302be94 - sys::thread::Thread::new::thread_start::__rust_abi
                        at src/libstd/sys/unix/thread.rs:77
  42:     0x7f73c302be74 - sys::thread::Thread::new::thread_start::hc1d63bdcdee02d59R9u
  43:     0x7f73bb6bf0a4 - start_thread
  44:     0x7f73c2bcb84c - clone
  45:                0x0 - <unknown>
$ RUST_BACKTRACE=1 LD_LIBRARY_PATH=$HOME/prefix/lib/ $HOME/prefix/bin/rustc --version
rustc 1.1.0-dev (551a74ddd 2015-04-29) (built 2015-04-29)

bluss pushed a commit to bluss/rust that referenced this issue May 1, 2015
Fixes an ICE on casting *const [T] to *const T and similar cases.

Fixes rust-lang#21397
Fixes rust-lang#22955
bluss pushed a commit to bluss/rust that referenced this issue May 1, 2015
Fixes an ICE on casting *const T to *const [T] and similar cases.

Fixes rust-lang#21397
Fixes rust-lang#22955
bluss pushed a commit to bluss/rust that referenced this issue May 1, 2015
Fixes ICEs where non-fat pointers and scalars are cast to fat pointers,

Fixes rust-lang#21397
Fixes rust-lang#22955

Fix
bluss pushed a commit to bluss/rust that referenced this issue May 1, 2015
Fixes ICEs where non-fat pointers and scalars are cast to fat pointers,

Fixes rust-lang#21397
Fixes rust-lang#22955
Fixes rust-lang#23237
Fixes rust-lang#24100
bors added a commit that referenced this issue May 2, 2015
typeck: Make sure casts from other types to fat pointers are illegal

Fixes ICEs where non-fat pointers and scalars are cast to fat pointers,

Fixes #21397
Fixes #22955
Fixes #23237
Fixes #24100
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants