Linuxカーネルに限らず、メモリ破壊による不具合の解析は一般に難しいものです。 最終的に観測されるシステムクラッシュなどの事象と、その原因となるメモリ破壊は非同期的に起きていることが多く、真因特定にはしばしば多大なコストを要します。 本稿では、Linuxカーネル空間でのメモリ破壊が疑われる事例における解析テクニックを紹介します。 例 以下のカーネルモジュールを例に解析の手続きを説明します。 #include <linux/init.h> #include <linux/string.h> #include <linux/slab.h> #include <linux/debugfs.h> struct test_data { char name[16]; spinlock_t lock; }; static int crash_test_get(void *data, u64 *val)