Skip to content

serapeum library regression: `The value of C::FORM is NIL, which is not of type C::C1FORM`

I apologize in advance for the lack of a small reproducible bit of lisp code ; I'm not the library author, merely a downstream package repository maintainer.

I have found a regression in package serapeum in ECL revision cebb13f9:

compiling the library now yields this error:

;;; Compiling /private/tmp/nix-build-system-serapeum.drv-0/source/queue.lisp.
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
;;;
;;; Internal error:
;;;   ** The value of C::FORM is NIL, which is not of type C::C1FORM.An error occurred during initialization:
COMPILE-FILE-ERROR while compiling #<cl-source-file "serapeum" "level0" "queue">.

This seems relevant to the change, which introduces (check-type form c1form)--judging by its name I guess it's related.

The offending file is https://github.com/ruricolist/serapeum/blob/af8e411f2cd33a59336803ff520a59e486ea883e/queue.lisp though I don't know exactly which form in that file is causing the bug. And of course I don't know if it's a serapeum bug or an ECL bug.

If you have some flags / vars I can pass to ECL on build which help with debugging I'm happy to do so and report back with more details.

N.B.: ECL just before cebb13f9 also didn't compile serapeum correctly, but the error was further down. This queue.lisp file only broke on this revision specifically.