Skip to content

Segfault in reflection on enum variants #4037

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
cdleary opened this issue Nov 25, 2012 · 1 comment
Closed

Segfault in reflection on enum variants #4037

cdleary opened this issue Nov 25, 2012 · 1 comment
Labels
A-runtime Area: std's runtime and "pre-main" init for handling backtraces, unwinds, stack overflows I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.
Milestone

Comments

@cdleary
Copy link

cdleary commented Nov 25, 2012

Version: rustc 0.5 (68c73dc 2012-11-18 15:00:43 -0800)

enum recursive_type {
    recursive_value(~recursive_type, ~recursive_type),
    leaf
}

fn main() {
    let r = recursive_value(~leaf, ~leaf);
    repr::write_repr2(io::stdout(), &r);
    io::println("");
}

Backtrace:

(gdb) r
Starting program: /home/cdleary/tmp/crasher 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff7ff7700 (LWP 575)]
[New Thread 0x7ffff7ff2700 (LWP 576)]
~~
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7ff2700 (LWP 576)]
0x00007ffff7aa3b3d in repr::__extensions__::meth_11970::visit_uniq::_73a2decbe7873a81::_05 ()
   from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
(gdb) bt
#0  0x00007ffff7aa3b3d in repr::__extensions__::meth_11970::visit_uniq::_73a2decbe7873a81::_05 ()
   from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
#1  0x00007ffff7aa3a4d in reflect::__extensions__::visit_uniq_11962::_73a2decbe7873a81::_05 ()
   from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
#2  0x0000000000403817 in glue_visit_1774 ()
#3  0x00007ffff7aa580b in repr::__extensions__::meth_12084::visit_enum_variant_field::_73a2decbe7873a81::_05 ()
   from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
#4  0x00007ffff7aa5697 in reflect::__extensions__::visit_enum_variant_field_12082::_73a2decbe7873a81::_05 ()
   from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
#5  0x00007ffff7ab50a0 in __morestack () from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
#6  0x0000000000403604 in glue_visit_1770 ()
#7  0x00007ffff7aa3c5f in repr::__extensions__::meth_11970::visit_uniq::_73a2decbe7873a81::_05 ()
   from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
#8  0x00007ffff7aa3a4d in reflect::__extensions__::visit_uniq_11962::_73a2decbe7873a81::_05 ()
   from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
#9  0x0000000000403817 in glue_visit_1774 ()
#10 0x00007ffff7aa580b in repr::__extensions__::meth_12084::visit_enum_variant_field::_73a2decbe7873a81::_05 ()
   from /home/cdleary/tmp/../opt/rust-master/lib/rustc/x86_64-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so
#11 0x0000000000407e2d in reflect::__extensions__::visit_enum_variant_field_2138::_1634aa8effcb368::_00 ()
#12 0x0000000000403604 in glue_visit_1770 ()
#13 0x000000000040410b in intrinsic::rusti::visit_tydesc_1822::_b1c47c813447841::_00 ()
#14 0x0000000000403bc5 in repr::write_repr2_1785::_31ee5679ee539e47::_00 ()
#15 0x0000000000408a48 in __morestack ()
#16 0x0000000000403093 in main::_9ef9bf229154ee9::_00 ()
#17 0x000000000040313e in _rust_main ()
#18 0x00007ffff77c0044 in task_start_wrapper (a=0x610ff0) at /home/cdleary/src/rust/src/rt/rust_task.cpp:150
#19 0x0000000000000000 in ?? ()
(gdb) x/10i $pc
=> 0x7ffff7aa3b3d <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+205>:   mov    (%rax),%r13
   0x7ffff7aa3b40 <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+208>:   lea    -0x70(%rbp),%r12
   0x7ffff7aa3b44 <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+212>:   mov    0x8(%rbx),%rax
   0x7ffff7aa3b48 <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+216>:   mov    0x10(%rbx),%rcx
   0x7ffff7aa3b4c <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+220>:   mov    %rcx,-0x68(%rbp)
   0x7ffff7aa3b50 <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+224>:   mov    %rax,-0x70(%rbp)
   0x7ffff7aa3b54 <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+228>:   xor    %edi,%edi
   0x7ffff7aa3b56 <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+230>:   xor    %esi,%esi
   0x7ffff7aa3b58 <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+232>:   xor    %edx,%edx
   0x7ffff7aa3b5a <_ZN4repr14__extensions__10meth_1197010visit_uniq17_73a2decbe7873a813_05E+234>:   mov    %r12,%rcx
(gdb) p $rax
$1 = 32

Not too familiar with how these raw types will codegen, but I'll attempt some printf debugging in repr.rs to see if anything obvious to fix pops out.

@graydon
Copy link
Contributor

graydon commented Mar 20, 2013

fixed on trunk

@graydon graydon closed this as completed Mar 20, 2013
flip1995 pushed a commit to flip1995/rust that referenced this issue Aug 28, 2020
Add async test case for FP in `wrong_self_convention` lint

Closes: rust-lang#4037

changelog: none

r? @ebroto
RalfJung added a commit to RalfJung/rust that referenced this issue Dec 8, 2024
Refactor AnonSocket::read/write for blocking socketpair
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-runtime Area: std's runtime and "pre-main" init for handling backtraces, unwinds, stack overflows I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.
Projects
None yet
Development

No branches or pull requests

2 participants