rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
97.29k stars 12.58k forks source link

rusti segfault details: dlopen difficulties, signal handler crashing. Where is dl-object.c ? #9567

Closed glycerine closed 10 years ago

glycerine commented 11 years ago

rustc 0.8 (afbc242 2013-09-27 01:36:15 -0700)

When I define and run a simple function at rusti, it segfaults:

jaten@i7:/usr/cn/rust/debug-build/install/bin$ ./rusti
WARNING: The Rust REPL is experimental and may be
unstable. If you encounter problems, please use the
compiler instead. Type :help for help.
rusti> fn five() -> int { 5 }
rusti> five()
Segmentation fault (core dumped)
jaten@i7:/usr/cn/rust/debug-build/install/bin$

This was with a debug build, so we can see the files and line numbers below. Strangely, I'm not finding any dl-object.c code to look at line 77.

I'd like to get rusti back on its feet. Can anyone advise on where to look for this source code.

jaten@i7:/usr/cn/rust/debug-build/install/bin$ gdb rusti core
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /usr/cn/rust/debug-build/install/bin/rusti...(no debugging symbols found)...done.
[New LWP 8747]
[New LWP 8754]
[New LWP 8753]
[New LWP 8749]
[New LWP 8750]
[New LWP 8752]
[New LWP 8748]
[New LWP 8751]
[New LWP 8746]

warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fffdf7c5000
Cannot find new threads: generic error
Core was generated by `./rusti'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007fc9e6f45844 in SignalHandler (Sig=11)
    at ../../../../src/llvm/lib/Support/Unix/Signals.inc:186
186     CallBacksToRun[i].first(CallBacksToRun[i].second);
(gdb) bt
#0  0x00007fc9e6f45844 in SignalHandler (Sig=11)
    at ../../../../src/llvm/lib/Support/Unix/Signals.inc:186
#1  <signal handler called>
#2  0x00007fc9e8b1cede in calloc () from /usr/cn/rust/debug-build/install/bin/../lib/librustrt.so
#3  0x00007fc9ec35e57e in _dl_new_object (
    realname=0x7fc9daa0ca20 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so", 
    libname=0x7fc9e42474a0 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so", type=2, loader=0x0, mode=-1879047935, nsid=0) at dl-object.c:77
#4  0x00007fc9ec359806 in _dl_map_object_from_fd (
    name=0x7fc9e42474a0 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so", fd=38, fbp=0x7fc9e4246720, 
    realname=0x7fc9daa0ca20 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so", loader=0x0, l_type=2, mode=-1879047935, stack_endp=0x7fc9e4246a80, 
    nsid=0) at dl-load.c:1051
#5  0x00007fc9ec35b69a in _dl_map_object (loader=0x0, 
    name=0x7fc9e42474a0 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so", type=2, trace_mode=0, mode=-1879047935, nsid=<optimized out>)
    at dl-load.c:2568
#6  0x00007fc9ec36684b in dl_open_worker (a=0x7fc9e4246cb0) at dl-open.c:225
#7  0x00007fc9ec362176 in _dl_catch_error (objname=0x7fc9e4246cf8, errstring=0x7fc9e4246d00, 
    mallocedp=0x7fc9e4246d0f, operate=0x7fc9ec366700 <dl_open_worker>, args=0x7fc9e4246cb0)
    at dl-error.c:178
#8  0x00007fc9ec36631a in _dl_open (
    file=0x7fc9e42474a0 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so", mode=-2147483391, caller_dlopen=0x7fc9e6f2a98b, nsid=-2, argc=1, 
    argv=<optimized out>, env=0x7fffdf632598) at dl-open.c:639
#9  0x00007fc9e8514f26 in dlopen_doit (a=0x7fc9e4246ed0) at dlopen.c:67
#10 0x00007fc9ec362176 in _dl_catch_error (objname=0x7fc9df4941f0, errstring=0x7fc9df4941f8, 
    mallocedp=0x7fc9df4941e8, operate=0x7fc9e8514ec0 <dlopen_doit>, args=0x7fc9e4246ed0)
    at dl-error.c:178
#11 0x00007fc9e851552f in _dlerror_run (operate=0x7fc9e8514ec0 <dlopen_doit>, args=0x7fc9e4246ed0)
    at dlerror.c:164
#12 0x00007fc9e8514fc1 in __dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:88
#13 0x00007fc9e6f2a98b in llvm::sys::DynamicLibrary::getPermanentLibrary (
    filename=0x7fc9e42474a0 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so", errMsg=0x7fc9e4247000)
    at ../../../../src/llvm/lib/Support/DynamicLibrary.cpp:77
#14 0x00007fc9e5ebf085 in RustMCJITMemoryManager::loadCrate (this=0x7fc9e405da00, 
    file=0x7fc9e42474a0 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so", err=0x7fc9e4247000) at src/rustllvm/RustWrapper.cpp:130
#15 0x00007fc9e5ebf8d7 in LLVMRustLoadCrate (mem=0x7fc9e405da00, 
    crate=0x7fc9e42474a0 "/usr/cn/rust/debug-build/install/lib/rustc/x86_64-unknown-linux-gnu/lib/libstd-6c65cf4b443341b1-0.8.so") at src/rustllvm/RustWrapper.cpp:267
#16 0x00007fc9ea10d3c9 in back::link::jit::exec::anon::expr_fn::ah ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#17 0x00007fc9e946033f in c_str::with_c_str::anon::expr_fn::ahai ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#18 0x00007fc9e926f42f in vec::MutableVector$__extensions__::as_mut_buf::hd677c12d16be42416laS::v0.8
    () from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#19 0x00007fc9e94600d1 in c_str::with_c_str::hd03c7fe5916f8657ah::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#20 0x00007fc9e945fece in c_str::ToCStr$__extensions__::with_c_str::h8e2daefba6fcf7a754ag::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#21 0x00007fc9e945fe43 in c_str::ToCStr$__extensions__::with_c_str::h8e2daefba6fcf7a7mCaf::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#22 0x00007fc9ea10c63f in back::link::jit::exec::hb9ade5b45581040aH::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#23 0x00007fc9ea10f946 in back::link::write::run_passes::h559b16dadcd2b5aa9::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#24 0x00007fc9ea204aed in driver::driver::phase_5_run_llvm_passes::anon::expr_fn::a3 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#25 0x00007fc9e9b393b9 in util::common::time::hc4d0513e54dc658eam::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#26 0x00007fc9ea20493c in driver::driver::phase_5_run_llvm_passes::h3cbff77e0e5d9b4ac::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librustc-d3cb8c2ccd84a7a7-0.8.so
#27 0x00007fc9e8e9ee72 in run::h89cbc617ea48a5aah::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librusti-53e0ef2ae196aaff-0.8.so
#28 0x00007fc9e8ee516e in run_line::anon::expr_fn::aP ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librusti-53e0ef2ae196aaff-0.8.so
#29 0x00007fc9e8edfa66 in task::TaskBuilder::try::anon::expr_fn::_8Nazab ()
   from /usr/cn/rust/debug-build/install/bin/../lib/librusti-53e0ef2ae196aaff-0.8.so
#30 0x00007fc9eb9cc95c in task::spawn::spawn_raw::anon::expr_fn::aw ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#31 0x00007fc9eba70174 in rt::task::__extensions__::build_start_wrapper::anon::anon::expr_fn::an ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#32 0x00007fc9eb96c33c in unstable::finally::Finally$__extensions__::finally::h199ab8d6eb2269801oav::v0.8 () from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#33 0x00007fc9eba6da35 in rt::task::__extensions__::run::anon::expr_fn::aF ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#34 0x00007fc9eba70649 in rt::task::Unwinder::try::try_fn::__rust_abi::jE ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#35 0x00007fc9eba705a7 in rt::task::Unwinder::try::try_fn::hc68c725e5d5aa99fjEaG::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#36 0x00007fc9e8ae664f in rust_try (
    f=0x7fc9eba70550 <rt::task::Unwinder::try::try_fn::hc68c725e5d5aa99fjEaG::v0.8>, 
    fptr=0x7fc9eba6d9e0, env=0x7fc9e424a348) at src/rt/rust_builtin.cpp:499
#37 0x00007fc9eba6d902 in rt::task::Unwinder::try::h199ab8d6eb226980jEaE::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#38 0x00007fc9eba6d796 in rt::task::Task::run::h199ab8d6eb226980hnaD::v0.8 ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#39 0x00007fc9eba6fdc7 in rt::task::__extensions__::build_start_wrapper::anon::expr_fn::ae ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#40 0x00007fc9ebb02f35 in rt::context::Context::new::task_start_wrapper::__rust_abi::fF ()
   from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#41 0x00007fc9ebb02ee7 in rt::context::Context::new::task_start_wrapper::h1b9fdc38dc3bcfa4fFaM::v0.8
    () from /usr/cn/rust/debug-build/install/bin/../lib/libstd-6c65cf4b443341b1-0.8.so
#42 0x0000000000000000 in ?? ()
(gdb)
glycerine commented 11 years ago

sys/elf/dl-object.c in the glibc sources is the location, naturally enough. But I seriously doubt the problem is in libc.