首页 > 使用c++filt查看trafficserver堆栈调用信息

使用c++filt查看trafficserver堆栈调用信息

在实际运维中,我们经常遇到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

更多相关:

  • 一、安装jdk配java环境rpm -ivh jdk.rpm打开/etc/profile增加:JAVA_HOME=/usr/java/jdk1.7.0_60 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPAT...

  • 我的博客上已经有很多这样的ats安装实录了,这次的笔记有些不一样,因为它是ATS目前最新的LTS版本6.2.1的安装,写出来更多的是整理自己的思路,因为很多东西搞过不整理,过一段时间就完全忘记掉了。 安装环境: 在rMBP 15.4上上面安装了VMware Fushion 专业版8.5.1,操作系统是MacOS Sierra 10...

  • 2011年我曾有机会精心研究了ATS Cache Module部分的大部分源码,也绘制了一些蹩脚的图片,但是对比专家和大牛的作品还相去甚远,下面的图片摘自Fall Summit 2014中的ATS committer Alan M. Carroll的ppt,仅作研读ATS源码时作参考和对照,更是对高手极致境界的尊崇和反思。...

  • 转载自https://blog.zymlinux.net/index.php/archives/129 首先申明本人是个实实在在的菜鸟,现在也只是搭建起来ats玩玩简单的,写本文只是为了给完全的小白一个参考而已。 本人刚开始接触ats的时候,从ats安装到配置也遇到了很多基本的问题,在查阅资料解决不了的时候基本都是豪哥耐心...

  • 转载自 https://blog.zymlinux.net/index.php/archives/540 ATS插件开发需要提前了解ATS的插件的一些设计思想,以及系统提供的一些不同方向。我们将会介绍ATS的基础开发知识,以利于后续的插件开发课程讲解。 ATS的SDK文档,是了解ATS的核心设计、接口设计的很重要资料,甚至是老...

  •     定位到根目录 cd/ 安装wget  yum install wget 下载nodejs(可以去下载 | Node.js 中文网中国官网查看最新版的下载地址) wget https://nodejs.org/download/release/v12.13.1/node-v12.13.1-linux-x...

  •   vim /etc/profile 然后在最后加入下面的代码: export  JAVA_HOME=/usr/local/java/jdk export  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:$JAVA_HOME/...

  • 关于内核模块编译的过程中,往往我们仅仅需要其中一个小的模块,但是却因为内核源码的庞杂而止步与模块依赖的筛选过程中。 为了更加便捷得对内核各个模块进行管理,这里提供一个小脚本来进行指定模块相关得模块留存,不相关的模块代码自动清除。 单独对内核指定模块进行编译,主要使用如下命令: 在相对目录为:../rpmbuild/BUILD/ker...

  • 在执行脚本上加入如下配置即可#!/bin/bashJAVA_HOME=/usr/java/jdk1.8.0_152export PATH=$PATH:$JAVA_HOME/bin 转载于:https://www.cnblogs.com/jimw/p/11126437.html...

  •   这是由于没有保存文档导致 说明: [Finished in 19.4s with exit code 1]-表示执行时间 [shell_cmd: python3 -u "/Volumes/B/我的工作文档/case/superman_wap/进单/MSjindan.py"] -表示执行的shell命令 [dir: /Volum...