Skip to content
  • Marcin Ślusarz's avatar
    os: use libunwind to generate backtraces · e21e1830
    Marcin Ślusarz authored and Peter Hutterer's avatar Peter Hutterer committed
    
    
    Libunwind generates backtraces much more reliably than glibc's "backtrace".
    
    Before:
    0: /opt/xserver/bin/X (0x400000+0x18ce36) [0x58ce36]
    1: /opt/xserver/bin/X (xorg_backtrace+0x9) [0x58d119]
    2: /opt/xserver/bin/X (0x400000+0x190d69) [0x590d69]
    3: /lib64/libpthread.so.0 (0x7fb904268000+0x10a90) [0x7fb904278a90]
    4: /lib64/libc.so.6 (ioctl+0x7) [0x7fb902fbf987]
    5: /usr/lib64/libdrm.so.2 (drmIoctl+0x28) [0x7fb90405ffa8]
    6: /usr/lib64/libdrm.so.2 (drmCommandWrite+0x1b) [0x7fb90406235b]
    7: /usr/lib64/libdrm_nouveau.so.2 (nouveau_bo_wait+0x89) [0x7fb902009719]
    8: /opt/xserver/lib/xorg/modules/drivers/nouveau_drv.so (0x7fb90220e000+0x76f3) [0x7fb9022156f3]
    9: /opt/xserver/lib/xorg/modules/libexa.so (0x7fb9019c7000+0xbae0) [0x7fb9019d2ae0]
    10: /opt/xserver/bin/X (0x400000+0x17d2b3) [0x57d2b3]
    11: /opt/xserver/bin/X (0x400000+0xc9930) [0x4c9930]
    12: /opt/xserver/bin/X (0x400000+0x3a81a) [0x43a81a]
    13: /opt/xserver/bin/X (0x400000+0x3d6a1) [0x43d6a1]
    14: /opt/xserver/bin/X (0x400000+0x2c2ca) [0x42c2ca]
    15: /lib64/libc.so.6 (__libc_start_main+0xf5) [0x7fb902f019b5]
    16: /opt/xserver/bin/X (0x400000+0x2c60d) [0x42c60d]
    17: ?? [0x0]
    
    After:
    0: /opt/xserver/bin/X (OsSigHandler+0x39) [0x590d69]
    1: /lib64/libpthread.so.0 (__restore_rt+0x0) [0x7fb904278a8f]
    2: /lib64/libc.so.6 (ioctl+0x7) [0x7fb902fbf987]
    3: /usr/lib64/libdrm.so.2 (drmIoctl+0x28) [0x7fb90405ffa8]
    4: /usr/lib64/libdrm.so.2 (drmCommandWrite+0x1b) [0x7fb90406235b]
    5: /usr/lib64/libdrm_nouveau.so.2 (nouveau_bo_wait+0x89) [0x7fb902009719]
    6: /opt/xserver/lib/xorg/modules/drivers/nouveau_drv.so (nouveau_exa_download_from_screen+0x1a3) [0x7fb9022156f3]
    7: /opt/xserver/lib/xorg/modules/libexa.so (exaGetImage+0x1f0) [0x7fb9019d2ae0]
    8: /opt/xserver/bin/X (miSpriteGetImage+0x173) [0x57d2b3]
    9: /opt/xserver/bin/X (compGetImage+0xb0) [0x4c9930]
    10: /opt/xserver/bin/X (ProcGetImage+0x55a) [0x43a81a]
    11: /opt/xserver/bin/X (Dispatch+0x341) [0x43d6a1]
    12: /opt/xserver/bin/X (main+0x3ba) [0x42c2ca]
    13: /lib64/libc.so.6 (__libc_start_main+0xf5) [0x7fb902f019b5]
    14: /opt/xserver/bin/X (_start+0x29) [0x42c60d]
    15: ? (?+0x29) [0x29]
    
    Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
    Reviewed-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
    Tested-by: default avatarKnut Petersen <knut.petersen@t-online.de>
    e21e1830