OpenBSD的开发者Otto Moerbeek最近在Yacc中发现和修复了一个有33年历史的溢出臭虫。
这位老兄开发了新的malloc实现,主要用途是内存分配,正在进行了大范围测试。他收到了一份奇怪的报告,对方运行的是sparc64处理器,一个大C++项目编译失败,但并不清楚是否是新malloc函数的问题。
Moerbeek在调查后发现,这个问题只出现在sparc64机器上。它与堆栈的大小有关,如果超过了新malloc允许的16位就会溢出,上述例子中C++的堆栈是24位,因此SEGV就发生了。
Moerbeek向前一直追溯到1975年发布的第6版UNIX。