Finding a 33 year old bug in yacc.

Otto Moerbeek (otto@) recently found and fixed an ancient bug (some 33 years old) in yacc(1) . Here is his story:

As some of you know I have been working on a new implementation of malloc, the general purpose memory allocator that’s used by userland programs. See this link for more details about it.

My malloc has been tested by many and has been in snapshots for a while now. Some time ago I received a bit of a puzzling report from Nikolay Sturm (sturm@) that on sparc64 compiling big C++ projects would sometimes fail with an Internal Compiler Error (ICE). For a start, it was not clear if my new malloc was involved, but I setup my sparc64 machine for testing. It soon turned out I could reproduce the problem. Switching to the in-tree malloc made the problem go away. So I was facing a malloc bug or a gcc bug, I thought…