问题分析报告
1. 问题现象
程序在rn_match()函数的第445行发生段错误(SIGSEGV),具体位置是radix树遍历循环:
for (; t->rn_bit >= 0; ) { if (t->rn_bmask & cp[t->rn_offset]) t = t->rn_right; // 第447行 else t = t->rn_left; // 第449行 }2. 关键证据
从GDB输出可以看到:
(gdb) p t $1 = (struct radix_node *) 0x580000007f9daaf0这个指针值0x580000007f9daaf0是损坏的,原因如下:
正常的指针值:
0x7f9daaf6f0✓ (正常)0x7f9daaf399✓ (正常)
损坏的指针值:
0x580000007f9daaf0✗ (异常 - 高位字节被污染)