<p dir="auto"><a href="https://github.com/SimonSapin/rust-casefold/tree/7fffc29797eb8bffe8f8bf4633212cfc63f27e56">rust-casefold</a> used to pass its tests every night on Travis-CI, until a few nightlies ago. In rustc 1.0.0-nightly (<a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/rust-lang/rust/commit/522d09dfecbeca1595f25ac58c6d0178bbd21d7d/hovercard" href="https://github.com/rust-lang/rust/commit/522d09dfecbeca1595f25ac58c6d0178bbd21d7d"><tt>522d09d</tt></a> 2015-02-19) (built 2015-02-21), it now causes an ICE:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="% RUST_BACKTRACE=1 cargo build --verbose
       Fresh regex v0.1.15
   Compiling caseless v0.0.1 (file:///home/simon/projects/rust-casefold)
     Running `rustc src/lib.rs --crate-name caseless --crate-type lib -g -C metadata=8dd51172a0ed213f -C extra-filename=-8dd51172a0ed213f --out-dir /home/simon/projects/rust-casefold/target --emit=dep-info,link -L dependency=/home/simon/projects/rust-casefold/target -L dependency=/home/simon/projects/rust-casefold/target/deps`
error: internal compiler error: unexpected panic
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 'Trying to convert unsized value to lval', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/librustc_trans/trans/datum.rs:495

stack backtrace:
   1:     0x7f837e8b3210 - sys::backtrace::write::h252031bd050bf19aKlC
   2:     0x7f837e8dbac0 - panicking::on_panic::h8a07e978260e2c7btXL
   3:     0x7f837e81c720 - rt::unwind::begin_unwind_inner::h322bcb3f35268c19RBL
   4:     0x7f837d4c8590 - rt::unwind::begin_unwind::h8757258989833155500
   5:     0x7f837d5411e0 - trans::datum::Datum&lt;'tcx, Expr&gt;::to_lvalue_datum::h4c859596f8252b6ehYf
   6:     0x7f837d5737c0 - trans::expr::trans_index::h700966d3e1a7a6016Ei
   7:     0x7f837d560dd0 - trans::expr::trans_unadjusted::h964cf47356d964c2sqi
   8:     0x7f837d518360 - trans::expr::trans::ha0e2a08ab1f695a2HMh
   9:     0x7f837d578be0 - trans::expr::trans_field::h10880054022304515065
  10:     0x7f837d560dd0 - trans::expr::trans_unadjusted::h964cf47356d964c2sqi
  11:     0x7f837d518360 - trans::expr::trans::ha0e2a08ab1f695a2HMh
  12:     0x7f837d516cc0 - trans::expr::trans_into::hbe2ad59d17caa991pGh
  13:     0x7f837d595e60 - trans::expr::trans_adt::h5375342382b003c3zvj
  14:     0x7f837d551600 - trans::base::trans_named_tuple_constructor::h67d0c2e9e4926af7vwu
  15:     0x7f837d558040 - trans::callee::trans_call_inner::h14909791323518108589
  16:     0x7f837d561990 - trans::expr::trans_rvalue_dps_unadjusted::h2f62e3fa23f391ad9Wi
  17:     0x7f837d516cc0 - trans::expr::trans_into::hbe2ad59d17caa991pGh
  18:     0x7f837d603260 - trans::_match::trans_match_inner::h755825b289633425aMx
  19:     0x7f837d561990 - trans::expr::trans_rvalue_dps_unadjusted::h2f62e3fa23f391ad9Wi
  20:     0x7f837d516cc0 - trans::expr::trans_into::hbe2ad59d17caa991pGh
  21:     0x7f837d517830 - trans::controlflow::trans_block::h717e6f4441ba9a815ee
  22:     0x7f837d5e4d70 - trans::base::trans_closure::h966338b3741dc0e7phu
  23:     0x7f837d503b30 - trans::base::trans_fn::hd5e20febd5f53650Gsu
  24:     0x7f837d4fed50 - trans::base::trans_item::h5bf53079c2f2baddzRu
  25:     0x7f837d5ec2e0 - trans::base::trans_crate::h22d6b6c0d890fedf1Ov
  26:     0x7f837ef3a290 - driver::phase_4_translate_to_llvm::h9c18e73369736a67qPa
  27:     0x7f837ef14070 - driver::compile_input::h0c8d8120f6194473Gba
  28:     0x7f837efe32b0 - run_compiler::heccd2f43b844857cZbc
  29:     0x7f837efe1bb0 - thunk::F.Invoke&lt;A, R&gt;::invoke::h14556331494175157254
  30:     0x7f837efe0aa0 - rt::unwind::try::try_fn::h8181016918202193540
  31:     0x7f837e948880 - rust_try_inner
  32:     0x7f837e948870 - rust_try
  33:     0x7f837efe0da0 - thunk::F.Invoke&lt;A, R&gt;::invoke::h12418455792421810631
  34:     0x7f837e8c7b60 - sys::thread::thread_start::h3defdaea150d8cd693G
  35:     0x7f83787c92b0 - start_thread
  36:     0x7f837e4a5249 - __clone
  37:                0x0 - &lt;unknown&gt;

Could not compile `caseless`.

Caused by:
  Process didn't exit successfully: `rustc src/lib.rs --crate-name caseless --crate-type lib -g -C metadata=8dd51172a0ed213f -C extra-filename=-8dd51172a0ed213f --out-dir /home/simon/projects/rust-casefold/target --emit=dep-info,link -L dependency=/home/simon/projects/rust-casefold/target -L dependency=/home/simon/projects/rust-casefold/target/deps` (status=101)"><pre class="notranslate"><code class="notranslate">% RUST_BACKTRACE=1 cargo build --verbose
       Fresh regex v0.1.15
   Compiling caseless v0.0.1 (file:///home/simon/projects/rust-casefold)
     Running `rustc src/lib.rs --crate-name caseless --crate-type lib -g -C metadata=8dd51172a0ed213f -C extra-filename=-8dd51172a0ed213f --out-dir /home/simon/projects/rust-casefold/target --emit=dep-info,link -L dependency=/home/simon/projects/rust-casefold/target -L dependency=/home/simon/projects/rust-casefold/target/deps`
error: internal compiler error: unexpected panic
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 'Trying to convert unsized value to lval', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/librustc_trans/trans/datum.rs:495

stack backtrace:
   1:     0x7f837e8b3210 - sys::backtrace::write::h252031bd050bf19aKlC
   2:     0x7f837e8dbac0 - panicking::on_panic::h8a07e978260e2c7btXL
   3:     0x7f837e81c720 - rt::unwind::begin_unwind_inner::h322bcb3f35268c19RBL
   4:     0x7f837d4c8590 - rt::unwind::begin_unwind::h8757258989833155500
   5:     0x7f837d5411e0 - trans::datum::Datum&lt;'tcx, Expr&gt;::to_lvalue_datum::h4c859596f8252b6ehYf
   6:     0x7f837d5737c0 - trans::expr::trans_index::h700966d3e1a7a6016Ei
   7:     0x7f837d560dd0 - trans::expr::trans_unadjusted::h964cf47356d964c2sqi
   8:     0x7f837d518360 - trans::expr::trans::ha0e2a08ab1f695a2HMh
   9:     0x7f837d578be0 - trans::expr::trans_field::h10880054022304515065
  10:     0x7f837d560dd0 - trans::expr::trans_unadjusted::h964cf47356d964c2sqi
  11:     0x7f837d518360 - trans::expr::trans::ha0e2a08ab1f695a2HMh
  12:     0x7f837d516cc0 - trans::expr::trans_into::hbe2ad59d17caa991pGh
  13:     0x7f837d595e60 - trans::expr::trans_adt::h5375342382b003c3zvj
  14:     0x7f837d551600 - trans::base::trans_named_tuple_constructor::h67d0c2e9e4926af7vwu
  15:     0x7f837d558040 - trans::callee::trans_call_inner::h14909791323518108589
  16:     0x7f837d561990 - trans::expr::trans_rvalue_dps_unadjusted::h2f62e3fa23f391ad9Wi
  17:     0x7f837d516cc0 - trans::expr::trans_into::hbe2ad59d17caa991pGh
  18:     0x7f837d603260 - trans::_match::trans_match_inner::h755825b289633425aMx
  19:     0x7f837d561990 - trans::expr::trans_rvalue_dps_unadjusted::h2f62e3fa23f391ad9Wi
  20:     0x7f837d516cc0 - trans::expr::trans_into::hbe2ad59d17caa991pGh
  21:     0x7f837d517830 - trans::controlflow::trans_block::h717e6f4441ba9a815ee
  22:     0x7f837d5e4d70 - trans::base::trans_closure::h966338b3741dc0e7phu
  23:     0x7f837d503b30 - trans::base::trans_fn::hd5e20febd5f53650Gsu
  24:     0x7f837d4fed50 - trans::base::trans_item::h5bf53079c2f2baddzRu
  25:     0x7f837d5ec2e0 - trans::base::trans_crate::h22d6b6c0d890fedf1Ov
  26:     0x7f837ef3a290 - driver::phase_4_translate_to_llvm::h9c18e73369736a67qPa
  27:     0x7f837ef14070 - driver::compile_input::h0c8d8120f6194473Gba
  28:     0x7f837efe32b0 - run_compiler::heccd2f43b844857cZbc
  29:     0x7f837efe1bb0 - thunk::F.Invoke&lt;A, R&gt;::invoke::h14556331494175157254
  30:     0x7f837efe0aa0 - rt::unwind::try::try_fn::h8181016918202193540
  31:     0x7f837e948880 - rust_try_inner
  32:     0x7f837e948870 - rust_try
  33:     0x7f837efe0da0 - thunk::F.Invoke&lt;A, R&gt;::invoke::h12418455792421810631
  34:     0x7f837e8c7b60 - sys::thread::thread_start::h3defdaea150d8cd693G
  35:     0x7f83787c92b0 - start_thread
  36:     0x7f837e4a5249 - __clone
  37:                0x0 - &lt;unknown&gt;

Could not compile `caseless`.

Caused by:
  Process didn't exit successfully: `rustc src/lib.rs --crate-name caseless --crate-type lib -g -C metadata=8dd51172a0ed213f -C extra-filename=-8dd51172a0ed213f --out-dir /home/simon/projects/rust-casefold/target --emit=dep-info,link -L dependency=/home/simon/projects/rust-casefold/target -L dependency=/home/simon/projects/rust-casefold/target/deps` (status=101)
</code></pre></div>
<p dir="auto">I got this compiling a fairly large app:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. 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
thread 'rustc' panicked at 'Trying to convert unsized value to lval', /Users/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-mac/build/src/librustc_trans/trans/datum.rs:402

stack backtrace:
   1:        0x10c85ecd7 - sys::backtrace::write::h4ee5c5ad264b65f5mbu
   2:        0x10c884e9c - failure::on_fail::h55e5ff39107f11fcHbB
   3:        0x10c7e6618 - rt::unwind::begin_unwind_inner::habba3c5d37f59591DTA
   4:        0x10904eca5 - rt::unwind::begin_unwind::h5615917778268573803
   5:        0x1090d753e - trans::datum::Datum&lt;'tcx, Expr&gt;::to_lvalue_datum::h9595aad7c2992d4cZSf
   6:        0x1090feaac - trans::expr::trans_index::h33588fb9dd7ce121yzi
   7:        0x1090e75a3 - trans::expr::trans_unadjusted::h4bfe4622405612c0Vki
   8:        0x10909f7d4 - trans::expr::trans::h87900629b98dec94YCh
   9:        0x109101448 - trans::expr::trans_addr_of::he4d93cb9897bf566uHj
  10:        0x1090e779e - trans::expr::trans_unadjusted::h4bfe4622405612c0Vki
  11:        0x10909f7d4 - trans::expr::trans::h87900629b98dec94YCh
  12:        0x10909e521 - trans::expr::trans_into::h8d099f5179d39277uzh
  13:        0x10911d773 - trans::expr::trans_adt::h04652ea6bac31317Drj
  14:        0x1090b0cdf - trans::base::trans_named_tuple_constructor::h27bf054814ac4386Dcu
  15:        0x1090e25a6 - trans::callee::trans_call_inner::h12337891083913942824
  16:        0x1090e9b77 - trans::expr::trans_rvalue_dps_unadjusted::h76d104b0c393ded0ITi
  17:        0x10909e762 - trans::expr::trans_into::h8d099f5179d39277uzh
  18:        0x10909f339 - trans::controlflow::trans_block::ha4c3bc4d960bd55aT3d
  19:        0x1090e8c91 - trans::expr::trans_rvalue_dps_unadjusted::h76d104b0c393ded0ITi
  20:        0x10909e762 - trans::expr::trans_into::h8d099f5179d39277uzh
  21:        0x10909f339 - trans::controlflow::trans_block::ha4c3bc4d960bd55aT3d
  22:        0x10916c644 - trans::base::trans_closure::hc2f7f2fc0f6c7df0WXt
  23:        0x10908b1c9 - trans::base::trans_fn::he8bb083f0eb63cd3Q8t
  24:        0x109086f0b - trans::base::trans_item::h6e886ccbd5f66d227vu
  25:        0x10916de29 - trans::base::trans_mod::hacffe7d798632c0cIBu
  26:        0x10908664e - trans::base::trans_item::h6e886ccbd5f66d227vu
  27:        0x109172a8c - trans::base::trans_crate::h03f93f510f95d199hrv
  28:        0x108f29f6e - driver::phase_4_translate_to_llvm::hf01e1f3e6069eac9mOa
  29:        0x108f05f3c - driver::compile_input::h8e0204b8bb9ea44bBba
  30:        0x108fced3e - run_compiler::h322f9334a9a1d7e6l9b
  31:        0x108fcbd7f - thunk::F.Invoke&lt;A, R&gt;::invoke::h14356237310415989951
  32:        0x108fcaa10 - rt::unwind::try::try_fn::h798029436104877783
  33:        0x10c8fb329 - rust_try_inner
  34:        0x10c8fb316 - rust_try
  35:        0x108fcb0d4 - thunk::F.Invoke&lt;A, R&gt;::invoke::h15628186897385384602
  36:        0x10c86f553 - sys::thread::thread_start::h3f48e8c893476626A3w
  37:     0x7fff854c5899 - _pthread_body
  38:     0x7fff854c572a - _pthread_struct_init"><pre class="notranslate"><code class="notranslate">error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. 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
thread 'rustc' panicked at 'Trying to convert unsized value to lval', /Users/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-mac/build/src/librustc_trans/trans/datum.rs:402

stack backtrace:
   1:        0x10c85ecd7 - sys::backtrace::write::h4ee5c5ad264b65f5mbu
   2:        0x10c884e9c - failure::on_fail::h55e5ff39107f11fcHbB
   3:        0x10c7e6618 - rt::unwind::begin_unwind_inner::habba3c5d37f59591DTA
   4:        0x10904eca5 - rt::unwind::begin_unwind::h5615917778268573803
   5:        0x1090d753e - trans::datum::Datum&lt;'tcx, Expr&gt;::to_lvalue_datum::h9595aad7c2992d4cZSf
   6:        0x1090feaac - trans::expr::trans_index::h33588fb9dd7ce121yzi
   7:        0x1090e75a3 - trans::expr::trans_unadjusted::h4bfe4622405612c0Vki
   8:        0x10909f7d4 - trans::expr::trans::h87900629b98dec94YCh
   9:        0x109101448 - trans::expr::trans_addr_of::he4d93cb9897bf566uHj
  10:        0x1090e779e - trans::expr::trans_unadjusted::h4bfe4622405612c0Vki
  11:        0x10909f7d4 - trans::expr::trans::h87900629b98dec94YCh
  12:        0x10909e521 - trans::expr::trans_into::h8d099f5179d39277uzh
  13:        0x10911d773 - trans::expr::trans_adt::h04652ea6bac31317Drj
  14:        0x1090b0cdf - trans::base::trans_named_tuple_constructor::h27bf054814ac4386Dcu
  15:        0x1090e25a6 - trans::callee::trans_call_inner::h12337891083913942824
  16:        0x1090e9b77 - trans::expr::trans_rvalue_dps_unadjusted::h76d104b0c393ded0ITi
  17:        0x10909e762 - trans::expr::trans_into::h8d099f5179d39277uzh
  18:        0x10909f339 - trans::controlflow::trans_block::ha4c3bc4d960bd55aT3d
  19:        0x1090e8c91 - trans::expr::trans_rvalue_dps_unadjusted::h76d104b0c393ded0ITi
  20:        0x10909e762 - trans::expr::trans_into::h8d099f5179d39277uzh
  21:        0x10909f339 - trans::controlflow::trans_block::ha4c3bc4d960bd55aT3d
  22:        0x10916c644 - trans::base::trans_closure::hc2f7f2fc0f6c7df0WXt
  23:        0x10908b1c9 - trans::base::trans_fn::he8bb083f0eb63cd3Q8t
  24:        0x109086f0b - trans::base::trans_item::h6e886ccbd5f66d227vu
  25:        0x10916de29 - trans::base::trans_mod::hacffe7d798632c0cIBu
  26:        0x10908664e - trans::base::trans_item::h6e886ccbd5f66d227vu
  27:        0x109172a8c - trans::base::trans_crate::h03f93f510f95d199hrv
  28:        0x108f29f6e - driver::phase_4_translate_to_llvm::hf01e1f3e6069eac9mOa
  29:        0x108f05f3c - driver::compile_input::h8e0204b8bb9ea44bBba
  30:        0x108fced3e - run_compiler::h322f9334a9a1d7e6l9b
  31:        0x108fcbd7f - thunk::F.Invoke&lt;A, R&gt;::invoke::h14356237310415989951
  32:        0x108fcaa10 - rt::unwind::try::try_fn::h798029436104877783
  33:        0x10c8fb329 - rust_try_inner
  34:        0x10c8fb316 - rust_try
  35:        0x108fcb0d4 - thunk::F.Invoke&lt;A, R&gt;::invoke::h15628186897385384602
  36:        0x10c86f553 - sys::thread::thread_start::h3f48e8c893476626A3w
  37:     0x7fff854c5899 - _pthread_body
  38:     0x7fff854c572a - _pthread_struct_init
</code></pre></div>
<p dir="auto">The problem appears to be in this function:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="pub fn chunk_containing(&amp;self, abs_x: u32, abs_y: u32) -&gt; Option&lt;&amp;Chunk&gt; {
    // x_idx and y_idx are indices int the chunks array.
    let x_idx: usize = abs_x.div_floor(&amp;self.chunk_x_size) as usize;
    let y_idx: usize = abs_y.div_floor(&amp;self.chunk_y_size) as usize;

    if ((x_idx as u32) &lt; self.x_chunks &amp;&amp; (y_idx as u32) &lt; self.y_chunks) {
        Some(&amp;self.chunks[y_idx][x_idx])
    } else {
        None
    }
}"><pre class="notranslate"><code class="notranslate">pub fn chunk_containing(&amp;self, abs_x: u32, abs_y: u32) -&gt; Option&lt;&amp;Chunk&gt; {
    // x_idx and y_idx are indices int the chunks array.
    let x_idx: usize = abs_x.div_floor(&amp;self.chunk_x_size) as usize;
    let y_idx: usize = abs_y.div_floor(&amp;self.chunk_y_size) as usize;

    if ((x_idx as u32) &lt; self.x_chunks &amp;&amp; (y_idx as u32) &lt; self.y_chunks) {
        Some(&amp;self.chunks[y_idx][x_idx])
    } else {
        None
    }
}
</code></pre></div>
<p dir="auto">And specifically, the problem appears to be this line:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Some(&amp;self.chunks[y_idx][x_idx])"><pre class="notranslate"><code class="notranslate">Some(&amp;self.chunks[y_idx][x_idx])
</code></pre></div>
<p dir="auto">I reached that conclusion because replacing the above line with <code class="notranslate">None</code> clears the error. The type of <code class="notranslate">self.chunks</code> is <code class="notranslate">[[Chunk]]</code>. Changing its type to <code class="notranslate">Vec&lt;Vec&lt;Chunk&gt;&gt;</code> also clears the error.</p>
<p dir="auto">OSX 10.9.5<br>
rustc 1.0.0-nightly (<a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/rust-lang/rust/commit/1d00c545ede609b9d43fdf9f252c15da5a66dac7/hovercard" href="https://github.com/rust-lang/rust/commit/1d00c545ede609b9d43fdf9f252c15da5a66dac7"><tt>1d00c54</tt></a> 2015-01-30 19:56:34 +0000)<br>
binary: rustc<br>
commit-hash: <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/rust-lang/rust/commit/1d00c545ede609b9d43fdf9f252c15da5a66dac7/hovercard" href="https://github.com/rust-lang/rust/commit/1d00c545ede609b9d43fdf9f252c15da5a66dac7"><tt>1d00c54</tt></a><br>
commit-date: 2015-01-30 19:56:34 +0000<br>
host: x86_64-apple-darwin<br>
release: 1.0.0-nightly</p>