Centos7.4内核符号地址查找函数的BUG
摘要:项目的一个需求,需要通过符号地址查找函数kallsyms_lookup_name获取内核模块函数的地址,意外发现了一个bug, 这个bug已经在高版本修复,至少在4.18.0内核里已经修复。 开始直接查找模块的某个函数,比如helloworld模块的hello_test函数,可以直接调用kallsy
阅读全文
搭建Linux Go项目工程环境
摘要:下载和安装Go软件包 下载地址: https://studygolang.com/dl 安装Go关键包 # rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.6.linux-amd64.tar.gz 设置go环境变量 编辑 /etc/prof
阅读全文
crontab环境变量问题
摘要:写了一个通过ip命令获取当前系统ip地址信息的脚本,手工测试没有任何问题,但是部署到crontab中,就会出现获取IP地址失败情况。 辛苦查了一天,最后发现直接在shell下执行脚本时的环境变量和在crontab环境下的环境变量不同 测试如下: # whereis ipip: /usr/sbin/i
阅读全文
Linux RPM命令阻塞问题
摘要:最近使用rpm查看系统安装的软件包时,长时间不返回,Ctrl+Z命令也不能退出rmp命令。 使用strace命令跟踪,发现阻塞在一个文件锁上: # strace rpm -aq |grep kernel ......rt_sigaction(SIGPIPE, NULL, {SIG_IGN, [],
阅读全文
C++ string类赋值并发问题
摘要:前一段排查产品的一个异常问题,是有关C++ string类的,做字符串赋值操作时,应用程序崩溃了。 堆栈信息如下: 经过分析代码,发现同一个字符串变量会在多个线程里做赋值操作,而且没有加锁保护。 string类字符串赋值操作是线程不安全的,当多个线程同时对同一个string类变量做赋值操作时,就会产
阅读全文
业务内核模块引起Linux top进程被阻塞的问题分析
摘要:问题说明 线上服务器运行过程中突然失联,没有自动重启,维护人员进入机房后,接上显示器和鼠标均没反应。重新上电后,没有发现core文件, 检查messages日志没有什么发现,系统coredump设置也没问题。现场最近升级过一个安全版本,可能与这个版本有关系,但是没有core文件, 无法确认问题根本原
阅读全文
Linux 内核编译笔记
摘要:这几天处理一个线上设备异常重启问题,需要安装内核的debuginfo软件包。虽然OS团队提供了相关的debuginfo软件包, 但是还想自己尝试编译一次。 拿到了相关OS内核的src.rpm软件包,如下所示: -rw-r--r-- 1 root root 82990501 Aug 8 2017 ke
阅读全文
Linux EPOLL内核代码学习笔记
摘要:内容目录 什么是EPOLL EPOLL接口 EPOLL机制 两张图 什么是EPOLL 摘录自manpage介绍 man:epoll(7) epoll(4) epoll is a variant of poll(2) that can be used either as an edge-trigger
阅读全文
I40E网卡BUG引起内核异常重启问题分析
摘要:问题描述 线上服务器异常复位,产生了vmcore文件,发现是内核接收报文时,访问了空指针导致,堆栈信息如下: 分析及定位 1、分析vmcore文件 根据core信息,访问异常的代码行: /usr/src/debug/kernel-3.10.0-327.22.2.el7/linux-3.10.0-32
阅读全文
Linux rp_filter配置引起的组播断流问题
摘要:引子 前一段时间处理一个线上问题,服务器拉组播码流,但是每隔3-4分钟就断流一次,引起服务异常。排除了交换机和组播网络的问题后, 确认问题还是在服务器侧。 组播为什么断流? 前方工程人员抓包确认,交换机发送了igmp general query报文,但是服务器没有响应组播report报文,交换机上i
阅读全文
【原创】Intel XL710网卡异常Reset问题复现
摘要:问题背景 业务服务器使用IntelXL710网卡,上线使用过程中网卡突然断链,Link状态为down,而且不可恢复,必须 复位服务器才可以。但是过一段时间后,会再次出现同样的问题,而且在几个局点都出现了类似的问题。 开始出现该问题时,根据以往经验,无非是光模块、光纤兼容问题,网卡硬件批次问题。但是随
阅读全文
Linux内核d_path函数应用的经验总结
摘要:问题背景 一个内核模块中,需要通过d_path接口获取文件的路径,然后与目标文件白名单做匹配。 在生产环境中,获取的文件是存在的,但是与文件白名单中的文件总是匹配失败。 问题定位: 通过打印d_path返回的字符串,发现获得的路径后面多了一个" (deleted)"字符串,在做完全匹配时不通过。 看
阅读全文
Intel 82599网卡异常挂死原因
摘要:前提背景: 生产环境上,服务器网络突然断链,ssh连接失败。 问题初步定位: 查找内核日志,得到网卡异常信息 Jan 24 11:52:43 localhost kernel: ixgbe 0000:84:00.0: eth0: RXDCTL.ENABLE on Rx queue 14 not cl
阅读全文
Linux Simple Systemd Service Guide
摘要:A simple guide for Linux systemd service
阅读全文
【原创】访问Linux进程文件表导致系统异常复位的排查记录
摘要:前提知识: Linux内核、Linux 进程和文件数据结构、vmcore解析、汇编语言 问题背景: 这个问题出自项目的一个安全模块,主要功能是确定某进程是否有权限访问其正在访问的文件。 实现功能时,需要在内核里通过扫描该进程打开的文件表,获取文件的路径,和安全模块里配置的可访问文件的进程白名单进行匹
阅读全文
有关Linux ipv6模块加载失败的问题
摘要:有关Linux ipv6模块加载失败的问题 同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载。 主要检查内容: ipv6地址是否存在 ifconfig |grep inet6 没有默认inet6地址 ipv6模块是否存在 #
阅读全文