It worked fine for me:
$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
...
$ gcc lisp.c -o lisp
$ ./lisp test.lisp
> A
> (A B C)
...
$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
...
$ gcc lisp.c -o lisp
$ ./lisp test.lisp
> A
> (A B C)
...
I supposed it could be some weird difference between OSX vs Linux.
This will drive me crazy.
Edit: it has to do with 32-bit and 64-bit. When I compile explicitly as 32 bit on Linux (which is a 64-bit machine), the error goes away. Probably related to how he casts everything to an object, and assumes things will be in certain places.
I suspect Red Hat's gcc is aligning structure members on 64-bit boundaries.