03 2021 档案
摘要:下面是一个在kernel panic或者oops之后,能够打印更多内存信息的patch,主要用到前面介绍的die notify功能注册oops/painc回调函数。 #include <linux/mm.h> #include <linux/spinlock.h> #include <linux/s
阅读全文
摘要:最近在做一个panic事后的处理时,需要读取寄存器信息,然后找到对应的物理地址。 然后发现Linux中,已经有实现的类似的功能,现在拿过来做地址有效性判定,感觉还是很不错的。 #include <asm/esr.h> #include <asm/sysreg.h> #include <asm/sys
阅读全文
摘要:1.背景 最近debug时,需要trace schedule switch的前后进程,所以写了一个event trace的程序。 2.代码 #include <linux/tracepoint.h> #include <trace/events/sched.h> #include <linux/me
阅读全文
摘要:1. 背景 Ftrace利用汇编时,在每个函数的入口处放一个mcont函数来monitor代码行为,利用这一个特性,可以写一个程序来监控每个函数执行后,系统的memory状态的功能。 2.代码 这里主要是检查0x90000000 ~ 90200000中间2M内存的每个page的0x520处memor
阅读全文
摘要:debug时,经常会需要打印slub的前一项(内存被前一个slub向后被踩),这里提供一个简单的例子,可以打印当前slub信息,并且返回前一个slub信息,重复调用可以不停的打印slub信息。 static void *_find_prev_slab_and_print_slub(phys_addr
阅读全文
摘要:使用RCU的CPU失速检测器 本文档首先讨论RCU的CPU停顿检测器可以定位哪些问题,然后讨论可用于微调检测器操作的内核参数和Kconfig选项。最后,本文解释了失速检测器的“splat”格式。 是什么导致RCU CPU停顿警告? 是因为您的内核会打印RCU CPU停止警告。下一个问题是“是什么原因
阅读全文
摘要:https://www.eclipse.org/tracecompass/ https://www.kernelshark.org/
阅读全文
摘要:死机重启问题中,有部分是访问了已释放的内存导致,这就是典型的userafter free问题. 打开CONFIG_SLUB_DEBUG和CONFIG_SLUB_DEBUG_ON宏开关后,系统就可以监测内存的释放与分配调用栈. 1. slab 内存布局slub的内存管理原理这里就不在详述.直接给出sl
阅读全文
摘要:方法一:可以通过/proc/线程ID/stack来获取指定线程当前的调用栈,但是该方案存在限制:可能不能准确获取出问题的时候该线程的调用栈 方法二:通过内核接口save_stack_trace_tsk和%pS,在程序检测到异常的时候打印出对应的调用栈用于问题定位,具体的方法(从内核/proc文件系统
阅读全文

浙公网安备 33010602011771号