在实际运维中,我们经常遇到Apache Traffic Server遇到段错误时,在traffic.out中留下的堆栈调用信息,比如下面的

FATAL: ../.././ats-4.2.0/proxy/http/HttpSM.cc:2080: failed assert `!t_state.host_db_info.reverse_dns`
/opt/ats/bin/traffic_server - STACK TRACE:
/opt/ats/lib/libtsutil.so.4(+0x1f468)[0x2b5f6be67468]
/opt/ats/lib/libtsutil.so.4(+0x1da6f)[0x2b5f6be65a6f]
/opt/ats/bin/traffic_server(_ZN6HttpSM19process_hostdb_infoEP10HostDBInfo+0x67b)[0x51bbeb]
/opt/ats/bin/traffic_server(_ZN15HostDBProcessor13getbyname_immEP12ContinuationMS0_FvP10HostDBInfoEPKciRKNS_7OptionsE+0x2c8)[0x5e4078]
/opt/ats/bin/traffic_server(_ZN6HttpSM16do_hostdb_lookupEv+0xed)[0x519d1d]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0xbb0)[0x531ee0]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM21state_cache_open_readEiPv+0xfe)[0x5258be]
/opt/ats/bin/traffic_server(_ZN6HttpSM12main_handlerEiPv+0xd8)[0x5283d8]
/opt/ats/bin/traffic_server(_ZN11HttpCacheSM21state_cache_open_readEiPv+0x1b2)[0x50bb12]
/opt/ats/bin/traffic_server(_ZN7CacheVC8callcontEi+0x53)[0x5f1353]
/opt/ats/bin/traffic_server(_ZN7CacheVC17openReadStartHeadEiP5Event+0x8d4)[0x65ba44]
/opt/ats/bin/traffic_server(_ZN7CacheVC14handleReadDoneEiP5Event+0x1ed)[0x63af3d]
/opt/ats/bin/traffic_server(_ZN5Cache9open_readEP12ContinuationP7INK_MD5P7HTTPHdrP21CacheLookupHttpConfig13CacheFragTypePci+0x3f7)[0x65d407]
/opt/ats/bin/traffic_server(_ZN14CacheProcessor9open_readEP12ContinuationP3URLbP7HTTPHdrP21CacheLookupHttpConfigl13CacheFragType+0xab)[0x63a0cb]
/opt/ats/bin/traffic_server(_ZN11HttpCacheSM9open_readEP3URLP7HTTPHdrP21CacheLookupHttpConfigl+0x94)[0x50b564]
/opt/ats/bin/traffic_server(_ZN6HttpSM24do_cache_lookup_and_readEv+0xf3)[0x519323]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x722)[0x531a52]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1e2)[0x531512]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM18state_api_callbackEiPv+0x8b)[0x5285cb]
/opt/ats/bin/traffic_server(TSHttpTxnReenable+0x354)[0x4baeb4]
/opt/ats/libexec/trafficserver/mframe.so(_Z24ReadRequestHdrHookHandleP10tsapi_cont7TSEventPv+0x57)[0x2b5f775d5a67]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x114)[0x524b94]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM32state_read_client_request_headerEiPv+0x226)[0x521fb6]
/opt/ats/bin/traffic_server(_ZN6HttpSM12main_handlerEiPv+0xd8)[0x5283d8]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x2dc)[0x530eec]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM21attach_client_sessionEP17HttpClientSessionP14IOBufferReader+0x684)[0x52b2f4]
/opt/ats/bin/traffic_server(_ZN17HttpClientSession16state_keep_aliveEiPv+0xa8)[0x50c3c8]
/opt/ats/bin/traffic_server[0x68873b]
/opt/ats/bin/traffic_server[0x68ae54]
/opt/ats/bin/traffic_server(_ZN10NetHandler12mainNetEventEiP5Event+0x1f2)[0x680a92]
/opt/ats/bin/traffic_server(_ZN7EThread13process_eventEP5Eventi+0x8f)[0x6ad32f]
/opt/ats/bin/traffic_server(_ZN7EThread7executeEv+0x44b)[0x6adb6b]
/opt/ats/bin/traffic_server[0x6ac6ba]
/lib64/libpthread.so.0[0x3095a07851]
/lib64/libc.so.6(clone+0x6d)[0x30956e890d]

我们发现出错的地方是

FATAL: ../.././ats-4.2.0/proxy/http/HttpSM.cc:2080: failed assert `!t_state.host_db_info.reverse_dns`

为了更方便地分析函数之间的堆栈调用关系,我们可以使用c++filt来转换一下函数名称(demangle name),得到更易读的调用关系图,为此我将上面的信息记为stack.txt,使用

cat stack.txt | c++filt

来得到下面的信息

这样的话,调用关系一下子清晰多了,更加便于调错。针对我目前给出的这个错误,我发现这个错误与host.db有关,经过仔细分析,是host.db文件存在权限问题,将其更改为tserver用户和组就可以了。

关于c++filt的参见文献详细解释可以参见

[1].http://www.sourceware.org/binutils/docs/binutils/c_002b_002bfilt.html

[2].http://book.51cto.com/art/201005/197787.htm

使用c++filt查看trafficserver堆栈调用信息相关推荐

  1. linux c 程序异常退出时打印堆栈调用信息

    先来了解三个函数 #include <execinfo.h> int backtrace(void **buffer, int size); char **backtrace_symbol ...

  2. jstack 工具 查看JVM堆栈信息

    1|0介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&q ...

  3. Android笔记 - 如何避免ActivityNotFound异常,查看Activity堆栈信息,获取进程名

    1.android中查看是否有能够打开intent的Activity android中查看是否有能够打开intent的Activity方式有三种(如果没有打开intent的Activity,会报错Ac ...

  4. 【听歌】GDB入门教程之查看函数调用堆栈

    写在前面:又到周末啦~上上周忍痛买了个雅马哈声卡和 AKG 话筒,这周六才正式打开试用了下,效果还不错,我自己还挺享受的.不过这玩意儿太高端,还不会用 AI 调音.小伙伴们感觉下这首加了一点点电音效果 ...

  5. arthas 查看哪个方法调用最耗时_Java开源诊断工具Arthas使用方法详解

    一.前言 1.热更新代码的场景 (1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的 ...

  6. arthas 查看哪个方法调用最耗时_火眼金睛,Java诊断利器Arthas

    1 简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 ...

  7. Linux查看进程的线程信息

    线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念.当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间.打开的文件),以使叉分开销最小化 ...

  8. 控制台怎么查看错误的详细信息_Java 程序该怎么优化?命令篇

    灵魂拷问,JDK 提供的命令,除了 java.javac,你还用过哪些命令呢? 灵魂再拷问,若你写的 Java 程序,出现了性能问题,该怎么去排查呢? Java 作为编程语言中的战斗机,JDK 默认已 ...

  9. .netcore 堆栈调用方法小记

    1|0背景 上午临近午饭时,公司同事反馈验证码被攻击灌水.我们匆忙查询验证码明细,对已频繁出现的IP插入黑名单,但IP仍然隔断时间频繁变动,不得已之下只能先封禁对应公司id的验证码发送功能.年初时候, ...

最新文章

  1. NeurIPS 2021 | 寻MixTraining: 一种全新的物体检测训练范式
  2. linux 32位redis安装,CentOS 5.5 32位上安装Redis 2.6报错解决
  3. 【BLE】TLSR8258开发记录之15--模拟FATFS
  4. php require 找不到,php使用require()时的注意点
  5. arrive get
  6. python区域增长_Python – 有效地为高密度区域创建密度图,稀疏区域的点
  7. Intel超线程技术 Hyper-Threading Technology (1) - 引言与历史
  8. git中如何提交空目录
  9. 获取当前电脑全部网络连接名字
  10. Android Studio快捷键-mac版
  11. mysql 查询和修改组合_MySql语句大全:创建、授权、查询、修改等
  12. 推荐一款免费开源的javascript电子表格:x-sheet
  13. cef js返回c++的代码_CEF3开发者系列之JS与C++交互之简单介绍
  14. 特色十足,FIIL 随身星体验
  15. Johnson法则-流水作业调度-动态规划
  16. kaggle使用tpu
  17. RabbitMQ 6种应用场景
  18. 计算机科学计算器CE符号,计算器的ce和c是什么意思???
  19. Python基础视频教程
  20. FPGA协同验证方法-资料整理

热门文章

  1. IOS开发UISearchBar失去第一响应者身份后,取消按钮不执行点击事件的问题
  2. [高中作文赏析]感受冬天
  3. emacs python环境配置
  4. SQL Server 最佳实践分析器使用小结
  5. ORB_SLAM2概述
  6. 句法依存分析_[NLP学习笔记]句法分析
  7. portal认证 php,配置外置Portal认证示例(命令行)
  8. python常用变量名_python基础知识整理
  9. linux利用* vim提权,linux 通过suid vim.basic文件提权
  10. 江苏开放大学计算机应用基础第四次作业,江苏开放大学-计算机应用基础第四次.doc...