Here's an even sillier memory leak

(setq *breakenable* nil)

(dotimes (ii 1000)
(errset (snd-from-array 0.0 44100.0 #(a)) nil))

In samples.c at line 50, should be:

            else { sound_unref(result); xlerror("expecting array elem to be number", elem); }

Not a likely source of large lost memory, but… every control path deserves some reviewing and every little leaked block contributes to fragmentation.