GithubHelp home page GithubHelp logo

Comments (6)

philipc avatar philipc commented on September 27, 2024 1

For a smaller test case, compile the following using g++ -g -Os -std=gnu++11 -fno-exceptions

#include <iostream>
struct Foo { Foo() { std::cout << "Foo\n"; } };
typedef struct { Foo foo; } Bar;
int main() { new Bar(); }

The constructor for Bar is missing a name in the DWARF. Sometimes the compiler gives it a name, but not with those specific compilation options. Seems like a compiler bug? We should still handle it by ignoring that subroutine, instead of raising an error.

from addr2line.

fitzgen avatar fitzgen commented on September 27, 2024

We're in the process of moving to goblin for object file needs -- will need STR + test case to see if this panic still reproduces once we've moved this crate over as well.

Thanks @mstange !

from addr2line.

mstange avatar mstange commented on September 27, 2024

I've experimentally updated the object dependency in addr2line from 0.1.0 to 0.3.0, and now it's no longer panicking, but the mapping returns an error:

   Compiling addr2line v0.3.0 (file:///home/mstange/code/addr2line)
   Compiling addr2line-libxul v0.1.0 (file:///home/mstange/code/addr2line-libxul)
    Finished dev [unoptimized + debuginfo] target(s) in 5.66 secs
     Running `target/debug/addr2line-libxul`
thread 'main' panicked at 'Mapping libxul.so failed: Error(Msg("failed to analyze debug information"), State { next_error: Some(Error(Msg("encountered invalid compilation unit"), State { next_error: Some(Error(InvalidDebugSymbols(SubroutineMissingName(483643027, 3111142)), State { next_error: None, backtrace: Some(stack backtrace:
   0:     0x5628b7fb0b94 - backtrace::backtrace::libunwind::trace
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/libunwind.rs:53
                         - backtrace::backtrace::trace<closure>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/mod.rs:42
   1:     0x5628b7fb0f5f - backtrace::capture::{{impl}}::new
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/capture.rs:64
   2:     0x5628b7fa5b9c - error_chain::make_backtrace
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/error-chain-0.7.2/src/lib.rs:411
   3:     0x5628b7fa5c5f - error_chain::{{impl}}::default
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/error-chain-0.7.2/src/lib.rs:462
   4:     0x5628b7f1336c - addr2line::errors::{{impl}}::from_kind
                        at /home/mstange/code/addr2line-libxul/<error_chain_processed macros>:48
   5:     0x5628b7f13659 - addr2line::errors::{{impl}}::from
                        at /home/mstange/code/addr2line-libxul/<error_chain_processed macros>:8
   6:     0x5628b7f0aa38 - addr2line::{{impl}}::parse<gimli::endianity::LittleEndian>
                        at /home/mstange/code/addr2line/src/lib.rs:732
   7:     0x5628b7effc95 - addr2line::{{impl}}::new<gimli::endianity::LittleEndian>
                        at /home/mstange/code/addr2line/src/lib.rs:287
   8:     0x5628b7efeeab - addr2line::{{impl}}::symbolicate
                        at /home/mstange/code/addr2line/src/lib.rs:250
   9:     0x5628b7efe8ed - addr2line::{{impl}}::new_inner::{{closure}}::{{closure}}
                        at /home/mstange/code/addr2line/src/lib.rs:229
  10:     0x5628b7ebfa9b - owning_ref::{{impl}}::try_new<alloc::boxed::Box<object::elf::Elf>,alloc::boxed::Box<addr2line::EndianDebugInfo>,closure,addr2line::errors::Error>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/owning_ref-0.2.4/src/lib.rs:475
  11:     0x5628b7efebd0 - addr2line::{{impl}}::new_inner::{{closure}}
                        at /home/mstange/code/addr2line/src/lib.rs:227
  12:     0x5628b7ebf7bb - owning_ref::{{impl}}::try_new<alloc::boxed::Box<memmap::Mmap>,alloc::boxed::Box<addr2line::MmapDerived>,closure,addr2line::errors::Error>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/owning_ref-0.2.4/src/lib.rs:475
  13:     0x5628b7efe4e5 - addr2line::{{impl}}::new_inner
                        at /home/mstange/code/addr2line/src/lib.rs:223
  14:     0x5628b7e5f941 - addr2line::{{impl}}::build<&str>
                        at /home/mstange/code/addr2line/src/lib.rs:173
  15:     0x5628b7e5fa17 - addr2line_libxul::main
                        at src/main.rs:4
  16:     0x5628b7fd63dc - panic_unwind::__rust_maybe_catch_panic
                        at /checkout/src/libpanic_unwind/lib.rs:98
  17:     0x5628b7fcfbf4 - std::panicking::try<(),closure>
                        at /checkout/src/libstd/panicking.rs:458
                         - std::panic::catch_unwind<closure,()>
                        at /checkout/src/libstd/panic.rs:361
                         - std::rt::lang_start
                        at /checkout/src/libstd/rt.rs:59
  18:     0x5628b7e5fbd2 - main
  19:     0x7ff6e19ba3f0 - __libc_start_main
  20:     0x5628b7e59409 - _start
  21:                0x0 - <unknown>) })), backtrace: Some(stack backtrace:
   0:     0x5628b7fb0b94 - backtrace::backtrace::libunwind::trace
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/libunwind.rs:53
                         - backtrace::backtrace::trace<closure>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/mod.rs:42
   1:     0x5628b7fb0f5f - backtrace::capture::{{impl}}::new
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/capture.rs:64
   2:     0x5628b7fa5b9c - error_chain::make_backtrace
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/error-chain-0.7.2/src/lib.rs:411
   3:     0x5628b7fa5c5f - error_chain::{{impl}}::default
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/error-chain-0.7.2/src/lib.rs:462
   4:     0x5628b7f1336c - addr2line::errors::{{impl}}::from_kind
                        at /home/mstange/code/addr2line-libxul/<error_chain_processed macros>:48
   5:     0x5628b7f13659 - addr2line::errors::{{impl}}::from
                        at /home/mstange/code/addr2line-libxul/<error_chain_processed macros>:8
   6:     0x5628b7f0aa38 - addr2line::{{impl}}::parse<gimli::endianity::LittleEndian>
                        at /home/mstange/code/addr2line/src/lib.rs:732
   7:     0x5628b7effc95 - addr2line::{{impl}}::new<gimli::endianity::LittleEndian>
                        at /home/mstange/code/addr2line/src/lib.rs:287
   8:     0x5628b7efeeab - addr2line::{{impl}}::symbolicate
                        at /home/mstange/code/addr2line/src/lib.rs:250
   9:     0x5628b7efe8ed - addr2line::{{impl}}::new_inner::{{closure}}::{{closure}}
                        at /home/mstange/code/addr2line/src/lib.rs:229
  10:     0x5628b7ebfa9b - owning_ref::{{impl}}::try_new<alloc::boxed::Box<object::elf::Elf>,alloc::boxed::Box<addr2line::EndianDebugInfo>,closure,addr2line::errors::Error>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/owning_ref-0.2.4/src/lib.rs:475
  11:     0x5628b7efebd0 - addr2line::{{impl}}::new_inner::{{closure}}
                        at /home/mstange/code/addr2line/src/lib.rs:227
  12:     0x5628b7ebf7bb - owning_ref::{{impl}}::try_new<alloc::boxed::Box<memmap::Mmap>,alloc::boxed::Box<addr2line::MmapDerived>,closure,addr2line::errors::Error>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/owning_ref-0.2.4/src/lib.rs:475
  13:     0x5628b7efe4e5 - addr2line::{{impl}}::new_inner
                        at /home/mstange/code/addr2line/src/lib.rs:223
  14:     0x5628b7e5f941 - addr2line::{{impl}}::build<&str>
                        at /home/mstange/code/addr2line/src/lib.rs:173
  15:     0x5628b7e5fa17 - addr2line_libxul::main
                        at src/main.rs:4
  16:     0x5628b7fd63dc - panic_unwind::__rust_maybe_catch_panic
                        at /checkout/src/libpanic_unwind/lib.rs:98
  17:     0x5628b7fcfbf4 - std::panicking::try<(),closure>
                        at /checkout/src/libstd/panicking.rs:458
                         - std::panic::catch_unwind<closure,()>
                        at /checkout/src/libstd/panic.rs:361
                         - std::rt::lang_start
                        at /checkout/src/libstd/rt.rs:59
  18:     0x5628b7e5fbd2 - main
  19:     0x7ff6e19ba3f0 - __libc_start_main
  20:     0x5628b7e59409 - _start
  21:                0x0 - <unknown>) })), backtrace: Some(stack backtrace:
   0:     0x5628b7fb0b94 - backtrace::backtrace::libunwind::trace
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/libunwind.rs:53
                         - backtrace::backtrace::trace<closure>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/backtrace/mod.rs:42
   1:     0x5628b7fb0f5f - backtrace::capture::{{impl}}::new
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.2/src/capture.rs:64
   2:     0x5628b7fa5b9c - error_chain::make_backtrace
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/error-chain-0.7.2/src/lib.rs:411
   3:     0x5628b7fa5c5f - error_chain::{{impl}}::default
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/error-chain-0.7.2/src/lib.rs:462
   4:     0x5628b7f1336c - addr2line::errors::{{impl}}::from_kind
                        at /home/mstange/code/addr2line-libxul/<error_chain_processed macros>:48
   5:     0x5628b7f13659 - addr2line::errors::{{impl}}::from
                        at /home/mstange/code/addr2line-libxul/<error_chain_processed macros>:8
   6:     0x5628b7f0aa38 - addr2line::{{impl}}::parse<gimli::endianity::LittleEndian>
                        at /home/mstange/code/addr2line/src/lib.rs:732
   7:     0x5628b7effc95 - addr2line::{{impl}}::new<gimli::endianity::LittleEndian>
                        at /home/mstange/code/addr2line/src/lib.rs:287
   8:     0x5628b7efeeab - addr2line::{{impl}}::symbolicate
                        at /home/mstange/code/addr2line/src/lib.rs:250
   9:     0x5628b7efe8ed - addr2line::{{impl}}::new_inner::{{closure}}::{{closure}}
                        at /home/mstange/code/addr2line/src/lib.rs:229
  10:     0x5628b7ebfa9b - owning_ref::{{impl}}::try_new<alloc::boxed::Box<object::elf::Elf>,alloc::boxed::Box<addr2line::EndianDebugInfo>,closure,addr2line::errors::Error>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/owning_ref-0.2.4/src/lib.rs:475
  11:     0x5628b7efebd0 - addr2line::{{impl}}::new_inner::{{closure}}
                        at /home/mstange/code/addr2line/src/lib.rs:227
  12:     0x5628b7ebf7bb - owning_ref::{{impl}}::try_new<alloc::boxed::Box<memmap::Mmap>,alloc::boxed::Box<addr2line::MmapDerived>,closure,addr2line::errors::Error>
                        at /home/mstange/.cargo/registry/src/github.com-1ecc6299db9ec823/owning_ref-0.2.4/src/lib.rs:475
  13:     0x5628b7efe4e5 - addr2line::{{impl}}::new_inner
                        at /home/mstange/code/addr2line/src/lib.rs:223
  14:     0x5628b7e5f941 - addr2line::{{impl}}::build<&str>
                        at /home/mstange/code/addr2line/src/lib.rs:173
  15:     0x5628b7e5fa17 - addr2line_libxul::main
                        at src/main.rs:4
  16:     0x5628b7fd63dc - panic_unwind::__rust_maybe_catch_panic
                        at /checkout/src/libpanic_unwind/lib.rs:98
  17:     0x5628b7fcfbf4 - std::panicking::try<(),closure>
                        at /checkout/src/libstd/panicking.rs:458
                         - std::panic::catch_unwind<closure,()>
                        at /checkout/src/libstd/panic.rs:361
                         - std::rt::lang_start
                        at /checkout/src/libstd/rt.rs:59
  18:     0x5628b7e5fbd2 - main
  19:     0x7ff6e19ba3f0 - __libc_start_main
  20:     0x5628b7e59409 - _start
  21:                0x0 - <unknown>) })', /checkout/src/libcore/result.rs:860:4
stack backtrace:
   0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
             at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::_print
             at /checkout/src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at /checkout/src/libstd/sys_common/backtrace.rs:60
             at /checkout/src/libstd/panicking.rs:380
   3: std::panicking::default_hook
             at /checkout/src/libstd/panicking.rs:396
   4: std::panicking::rust_panic_with_hook
             at /checkout/src/libstd/panicking.rs:611
   5: std::panicking::begin_panic_new
             at /checkout/src/libstd/panicking.rs:553
   6: std::panicking::begin_panic_fmt
             at /checkout/src/libstd/panicking.rs:521
   7: rust_begin_unwind
             at /checkout/src/libstd/panicking.rs:497
   8: core::panicking::panic_fmt
             at /checkout/src/libcore/panicking.rs:92
   9: core::result::unwrap_failed
             at /checkout/src/libcore/macros.rs:31
  10: <core::result::Result<T, E>>::expect
             at /checkout/src/libcore/result.rs:762
  11: addr2line_libxul::main
             at src/main.rs:4
  12: __rust_maybe_catch_panic
             at /checkout/src/libpanic_unwind/lib.rs:98
  13: std::rt::lang_start
             at /checkout/src/libstd/panicking.rs:458
             at /checkout/src/libstd/panic.rs:361
             at /checkout/src/libstd/rt.rs:59
  14: main
  15: __libc_start_main
  16: _start

And that's because resolve_name falls through all the cases and reaches the Ok(None) at the end for what seems like all programs.

from addr2line.

mstange avatar mstange commented on September 27, 2024

Oh, this new error only starts appearing if I add .with_functions(). With my original code (using the default options), mapping succeeds but locate returns Ok(None).

from addr2line.

fitzgen avatar fitzgen commented on September 27, 2024

Seems like a compiler bug?

Care to file a bug with gcc?

We should still handle it by ignoring that subroutine, instead of raising an error.

👍

from addr2line.

philipc avatar philipc commented on September 27, 2024

Care to file a bug with gcc?

I gave up on that, they don't make it easy to file bugs, and this one seems minor.

from addr2line.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.