03 2021 档案

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