The LightSpeed C on the Macintosh evidently pushes some 16-bit quantities
on the stack. Therefore you need an additional mark_locations pass with
an offset of 2 bytes, as recommended in the documentation.

gc_mark_and_sweep()
{LISP stack_end;
 gc_ms_stats_start();
 /* This assumes that all registers are saved into the jmp_buff */
 setjmp(save_regs_gc_mark);
 mark_locations((LISP *)save_regs_gc_mark,
((LISP *) save_regs_gc_mark) + sizeof(save_regs_gc_mark));
 mark_protected_registers();
 mark_locations((LISP *)stack_start_ptr,(LISP *)&stack_end);
 /* Here is the additional code to handle the 16-bit alignment */
 mark_locations((LISP *)((char *)stack_start_ptr+2),
                (LISP *)((char *)&stack_end+2));
 gc_sweep();
 gc_ms_stats_end();}

