[cl-store-devel] CL-STORE:RESTORE-ERROR - ILLEGAL-KEYWORD-VALUE

szergling senatorzergling at gmail.com
Mon Dec 7 22:38:09 UTC 2009


On 12/8/09, Gary Zu <clstoreuser at gmail.com> wrote:
> Dear All,
>
> I have been using cl-store for saving and restoring my objects on Lispworks
> 1.6.0.01. It has been working great. In my saved object, it has a hash-table
> that maps an integer id to a simple object. The saved instance also has
> several other modeling objects.
>
> Recently I ran into a restore error during a restoring attempt. This
> happened only once and it didn't keep any data/objects before the cl-store
> serialization, which means the file saved by cl-store serialization is the
> only data I got. So I have no way to check if anything in my data itself was
> wrong or not.  Sorry for this incomplete information. Still, could you
> please help me on this? Or could you give me some ideas/clues on this error?
>
> The error is:
>
> Error: NIL is an illegal value for the keyword :SIZE
>   1 (abort) Return to level 0.
>   2 Return to top loop level 0.
>
> Type :b for backtrace or :c <option number> to proceed.
> Type :bug-form "<subject>" for a bug report template or :? for other
> options.
>
> Call to ERROR
> Call to MAKE-HASH-TABLE
> Call to (METHOD CL-STORE::INTERNAL-RESTORE-OBJECT (CL-STORE:CL-STORE (EQL
> (QUOTE HASH-TABLE)) T))
> Call to CL-STORE::HANDLE-NORMAL
> Call to CL-STORE::RESTORE-TYPE-OBJECT
> Call to CL-STORE::HANDLE-NORMAL
> Call to (METHOD CL-STORE:BACKEND-RESTORE (CL-STORE:RESOLVING-BACKEND
> STREAM))
> Call to CL-STORE::RESTORE-FROM-FILE
> Call to (METHOD CL-STORE:RESTORE (T))
> Call to CLOS::GENERIC-FUNCTION-NON-DISCRIMINATOR
> Call to LET*
> Call to EVAL
> Call to CAPI::CAPI-TOP-LEVEL-FUNCTION
> Call to CAPI::INTERACTIVE-PANE-TOP-LOOP
> Call to MP::PROCESS-SG-FUNCTION
>
>
> Thanks,
> a cl-store user
>

Hi Gary, just a quick question.

It looks like you are trying to restore a hash-table whose size is
nil. Does (hash-table-size <any-hash-table>) ever return nil (that's
what gets stored previously, see the defstore-cl-store code for
hash-tables)?  CLHS says that SIZE is a non-negative integer. Any
ideas how this could happen?  Are you hash-tables ever empty?

If this is a Lispworks bug, perhaps you could redefine the restorer to
default to :size 0 when this happens? (just a workaround)

Yong.




More information about the cl-store-devel mailing list