This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: backtrace semantics


> Hm. Interesting discussion. What do you think about python like
> strategy? That said,
> application always dump backtrace when any unexpected thing was happen and
> application user (not app creator) see it. At this time, current frame
> is most useful
> information.
>
> I'm not sure there is such application in real world. _I_ only uses
> backtrace() for debugging.
> I only says I'm not sure every people use it for only debugging.

Maybe this is more good example. When ruby interpreter is crashed,
C level backtrace information will be displayed for cut-n-paste their
bug tracking system. It is one of best practice of open source
quality improvement.

Strictly speacking, ruby itself don't need current frame because backtrace()
is only called from bug reporting function in their current source code. However
I'm not sure every open source uses same wrapper function.


example output.
----------------------------------------------
% ruby -e 'Process.kill "SIGSEGV", $$'            <- send SEGV to me

-e:1: [BUG] Segmentation fault
ruby 2.0.0dev (2013-01-15 trunk 38819) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0003 p:---- s:0009 e:000008 CFUNC  :kill
c:0002 p:0015 s:0004 e:000188 EVAL   -e:1 [FINISH]
c:0001 p:0000 s:0002 e:0022c8 TOP    [FINISH]

-e:1:in `<main>'
-e:1:in `kill'

-- C level backtrace information -------------------------------------------
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(+0x1a10ca)
[0x7fd3b032d0ca] ../vm_dump.c:643
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(+0x66e2c)
[0x7fd3b01f2e2c] libioP.h:969
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(rb_bug+0xb8)
[0x7fd3b01f3108] libioP.h:969
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(+0x1267f5)
[0x7fd3b02b27f5] ../sysdeps/x86_64/multiarch/strrchr.S:142
/lib64/libpthread.so.0() [0x380120f4a0]
/lib64/libc.so.6(kill+0x7) [0x3800a32b67]
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(rb_f_kill+0x67)
[0x7fd3b02b33d7] ../signal.c:424
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(+0x187a52)
[0x7fd3b0313a52] ../vm_insnhelper.c:1438
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(+0x19f3f3)
[0x7fd3b032b3f3] ../vm_insnhelper.c:1528
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(+0x18c267)
[0x7fd3b0318267] ../insns.def:1017
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(+0x193388)
[0x7fd3b031f388] ../vm.c:1163
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(rb_iseq_eval_main+0x1c8)
[0x7fd3b031fad8] ../vm.c:1411
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(+0x6b682)
[0x7fd3b01f7682] wstrops.c:283
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(ruby_exec_node+0x1d)
[0x7fd3b01f76ad] wstrops.c:290
/home/kosaki/local/ruby-tmp/lib/libruby.so.2.0(ruby_run_node+0x1e)
[0x7fd3b01f8f4e] iofwide.c:300
./ruby-tmp() [0x4008eb] ../main.c:36
/lib64/libc.so.6(__libc_start_main+0xfd) [0x3800a1ecdd]
./ruby-tmp() [0x4007d9]

-- Other runtime information -----------------------------------------------

* Loaded script: -e

* Loaded features:

    0 enumerator.so
    1 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/enc/encdb.so
    2 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/enc/trans/transdb.so
    3 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/rbconfig.rb
    4 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/compatibility.rb
    5 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/defaults.rb
    6 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/deprecate.rb
    7 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/errors.rb
    8 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/version.rb
    9 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/requirement.rb
   10 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/platform.rb
   11 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/specification.rb
   12 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/exceptions.rb
   13 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb
   14 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb
   15 /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/rubygems.rb

* Process memory map:

00400000-00401000 r-xp 00000000 fd:02 1324131
  /home/kosaki/ruby/git/build/ruby-tmp
00600000-00601000 rw-p 00000000 fd:02 1324131
  /home/kosaki/ruby/git/build/ruby-tmp
00d2b000-0106f000 rw-p 00000000 00:00 0                                  [heap]
3800200000-3800220000 r-xp 00000000 fd:00 1175094
  /lib64/ld-2.12.so
380041f000-3800420000 r--p 0001f000 fd:00 1175094
  /lib64/ld-2.12.so
3800420000-3800421000 rw-p 00020000 fd:00 1175094
  /lib64/ld-2.12.so
3800421000-3800422000 rw-p 00000000 00:00 0
3800a00000-3800b97000 r-xp 00000000 fd:00 1175116
  /lib64/libc-2.12.so
3800b97000-3800d97000 ---p 00197000 fd:00 1175116
  /lib64/libc-2.12.so
3800d97000-3800d9b000 r--p 00197000 fd:00 1175116
  /lib64/libc-2.12.so
3800d9b000-3800d9c000 rw-p 0019b000 fd:00 1175116
  /lib64/libc-2.12.so
3800d9c000-3800da1000 rw-p 00000000 00:00 0
3800e00000-3800e02000 r-xp 00000000 fd:00 1175135
  /lib64/libdl-2.12.so
3800e02000-3801002000 ---p 00002000 fd:00 1175135
  /lib64/libdl-2.12.so
3801002000-3801003000 r--p 00002000 fd:00 1175135
  /lib64/libdl-2.12.so
3801003000-3801004000 rw-p 00003000 fd:00 1175135
  /lib64/libdl-2.12.so
3801200000-3801217000 r-xp 00000000 fd:00 1175133
  /lib64/libpthread-2.12.so
3801217000-3801416000 ---p 00017000 fd:00 1175133
  /lib64/libpthread-2.12.so
3801416000-3801417000 r--p 00016000 fd:00 1175133
  /lib64/libpthread-2.12.so
3801417000-3801418000 rw-p 00017000 fd:00 1175133
  /lib64/libpthread-2.12.so
3801418000-380141c000 rw-p 00000000 00:00 0
3801600000-3801683000 r-xp 00000000 fd:00 1175402
  /lib64/libm-2.12.so
3801683000-3801882000 ---p 00083000 fd:00 1175402
  /lib64/libm-2.12.so
3801882000-3801883000 r--p 00082000 fd:00 1175402
  /lib64/libm-2.12.so
3801883000-3801884000 rw-p 00083000 fd:00 1175402
  /lib64/libm-2.12.so
3801a00000-3801a07000 r-xp 00000000 fd:00 1175273
  /lib64/librt-2.12.so
3801a07000-3801c06000 ---p 00007000 fd:00 1175273
  /lib64/librt-2.12.so
3801c06000-3801c07000 r--p 00006000 fd:00 1175273
  /lib64/librt-2.12.so
3801c07000-3801c08000 rw-p 00007000 fd:00 1175273
  /lib64/librt-2.12.so
380b600000-380b616000 r-xp 00000000 fd:00 1175440
  /lib64/libgcc_s-4.4.6-20110824.so.1
380b616000-380b815000 ---p 00016000 fd:00 1175440
  /lib64/libgcc_s-4.4.6-20110824.so.1
380b815000-380b816000 rw-p 00015000 fd:00 1175440
  /lib64/libgcc_s-4.4.6-20110824.so.1
380da00000-380da07000 r-xp 00000000 fd:00 1175449
  /lib64/libcrypt-2.12.so
380da07000-380dc07000 ---p 00007000 fd:00 1175449
  /lib64/libcrypt-2.12.so
380dc07000-380dc08000 r--p 00007000 fd:00 1175449
  /lib64/libcrypt-2.12.so
380dc08000-380dc09000 rw-p 00008000 fd:00 1175449
  /lib64/libcrypt-2.12.so
380dc09000-380dc37000 rw-p 00000000 00:00 0
380de00000-380de5d000 r-xp 00000000 fd:00 1175448
  /lib64/libfreebl3.so
380de5d000-380e05c000 ---p 0005d000 fd:00 1175448
  /lib64/libfreebl3.so
380e05c000-380e05d000 r--p 0005c000 fd:00 1175448
  /lib64/libfreebl3.so
380e05d000-380e05e000 rw-p 0005d000 fd:00 1175448
  /lib64/libfreebl3.so
380e05e000-380e062000 rw-p 00000000 00:00 0
7fd3a9dd5000-7fd3a9dd6000 rw-p 00000000 00:00 0
7fd3a9dd6000-7fd3a9ddd000 r--s 00000000 fd:00 1317950
  /usr/lib64/gconv/gconv-modules.cache
7fd3a9ddd000-7fd3a9ddf000 r-xp 00000000 fd:02 701872
  /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/enc/trans/transdb.so
7fd3a9ddf000-7fd3a9fdf000 ---p 00002000 fd:02 701872
  /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/enc/trans/transdb.so
7fd3a9fdf000-7fd3a9fe0000 rw-p 00002000 fd:02 701872
  /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/enc/trans/transdb.so
7fd3a9fe0000-7fd3a9fe2000 r-xp 00000000 fd:02 694162
  /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/enc/encdb.so
7fd3a9fe2000-7fd3aa1e1000 ---p 00002000 fd:02 694162
  /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/enc/encdb.so
7fd3aa1e1000-7fd3aa1e2000 rw-p 00001000 fd:02 694162
  /home/kosaki/local/ruby-tmp/lib/ruby/2.0.0/x86_64-linux/enc/encdb.so
7fd3aa1e2000-7fd3aa1e3000 ---p 00000000 00:00 0
7fd3aa1e3000-7fd3aa2e7000 rw-p 00000000 00:00 0
7fd3aa2e7000-7fd3b0177000 r--p 00000000 fd:00 1331081
  /usr/lib/locale/locale-archive
7fd3b0177000-7fd3b017d000 rw-p 00000000 00:00 0
7fd3b018c000-7fd3b03e3000 r-xp 00000000 fd:02 285641
  /home/kosaki/local/ruby-tmp/lib/libruby.so.2.0.0
7fd3b03e3000-7fd3b05e2000 ---p 00257000 fd:02 285641
  /home/kosaki/local/ruby-tmp/lib/libruby.so.2.0.0
7fd3b05e2000-7fd3b05ea000 rw-p 00256000 fd:02 285641
  /home/kosaki/local/ruby-tmp/lib/libruby.so.2.0.0
7fd3b05ea000-7fd3b060b000 rw-p 00000000 00:00 0
7fff01c3c000-7fff01c51000 rw-p 00000000 00:00 0                          [stack]
7fff01dff000-7fff01e00000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
  [vsyscall]


[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]