On Wed, Mar 18, 2009 at 9:18 PM, Ian Eslick <esl...@media.mit.edu> wrote:

> You need to implement register-object for your metaclass, only
> standard classes are 'registered' or kept in the ID table.
>

Instances of my metaclass still inherit from standard-object, and are thus
registered by the existing register-object methods. I added some print
statements to register-object, and the IDs do seem to get registered
properly (i.e. it returns the same id for the same instance over many
calls).

(And the stack overflow doesn't occur when I register my objects, but
afterwards when I call snapshot.)

Here is a sample of the stack trace, in case it is helpful. Again, any
assistance would be appreciated.

3070: (ELEPHANT::REIFY-VALUE #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3071: (ELEPHANT::SAVE-PROXY-OBJECT
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3072: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1534
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3073: (ELEPHANT::REIFY-VALUE #<HERO-BODY {23EDF551}> #<SNAPSHOT-SET oid:2>)
3074: (ELEPHANT::SAVE-PROXY-OBJECT #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3075: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1532
       #<HERO {23EDF561}>
       #<SNAPSHOT-SET oid:2>)
3076: (ELEPHANT::REIFY-VALUE #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3077: (ELEPHANT::SAVE-PROXY-OBJECT
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3078: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1534
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3079: (ELEPHANT::REIFY-VALUE #<HERO-BODY {23EDF551}> #<SNAPSHOT-SET oid:2>)
3080: (ELEPHANT::SAVE-PROXY-OBJECT #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3081: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1532
       #<HERO {23EDF561}>
       #<SNAPSHOT-SET oid:2>)
3082: (ELEPHANT::REIFY-VALUE #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3083: (ELEPHANT::SAVE-PROXY-OBJECT
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3084: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1534
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3085: (ELEPHANT::REIFY-VALUE #<HERO-BODY {23EDF551}> #<SNAPSHOT-SET oid:2>)
3086: (ELEPHANT::SAVE-PROXY-OBJECT #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3087: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1532
       #<HERO {23EDF561}>
       #<SNAPSHOT-SET oid:2>)
3088: (ELEPHANT::REIFY-VALUE #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3089: (ELEPHANT::SAVE-PROXY-OBJECT
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3090: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1534
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3091: (ELEPHANT::REIFY-VALUE #<HERO-BODY {23EDF551}> #<SNAPSHOT-SET oid:2>)
3092: (ELEPHANT::SAVE-PROXY-OBJECT #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3093: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1532
       #<HERO {23EDF561}>
       #<SNAPSHOT-SET oid:2>)
3094: (ELEPHANT::REIFY-VALUE #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3095: (ELEPHANT::SAVE-PROXY-OBJECT
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3096: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1534
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3097: (ELEPHANT::REIFY-VALUE #<HERO-BODY {23EDF551}> #<SNAPSHOT-SET oid:2>)
3098: (ELEPHANT::SAVE-PROXY-OBJECT #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3099: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1532
       #<HERO {23EDF561}>
       #<SNAPSHOT-SET oid:2>)
3100: (ELEPHANT::REIFY-VALUE #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3101: (ELEPHANT::SAVE-PROXY-OBJECT
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3102: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1534
       #<HERO-BODY {23EDF551}>
       #<SNAPSHOT-SET oid:2>)
3103: (ELEPHANT::REIFY-VALUE #<HERO-BODY {23EDF551}> #<SNAPSHOT-SET oid:2>)
3104: (ELEPHANT::SAVE-PROXY-OBJECT #<HERO {23EDF561}> #<SNAPSHOT-SET oid:2>)
3105: (ELEPHANT::SAVE-SNAPSHOT-OBJECT
       1532
       #<HERO {23EDF561}>
       #<SNAPSHOT-SET oid:2>)

On Mar 18, 2009, at 11:31 PM, Elliott Slaughter wrote:
>
> > Hi,
> >
> > I have been exploring using snapshot-set in my application, and
> > noticed a couple of issues.
> >
> > First, snapshot set doesn't compile under SBCL since the cache
> > initform includes
> >
> > (make-hash-table :weak-keys t)
> >
> > and SBCL doesn't recognize the :weak-keys argument. This is easily
> > enough fixed (in the short term) by commenting this out; in the long
> > term it may be useful to use trivial-garbage for weak hash-tables.
> >
> >
> > Second, after hacking snapshot-set into my application, and
> > following a pause of about 30 seconds,
> >
> > debugger invoked on a SB-KERNEL::CONTROL-STACK-EXHAUSTED:
> >   Control stack exhausted (no more space for function call frames).
> > This is probably due to heavily nested or infinitely recursive
> > function
> > calls, or a tail call that SBCL cannot or has not optimized away.
> >
> > This is on a data set of roughly 2000 objects. The data consists of
> > a hash-table from symbols to hash-tables, which map integers to
> > instances of a custom metaclass. The data contains circular
> > references. (I don't know how complete snapshot-set is, so I don't
> > know if any of these are potentially problematic.)
> >
> > I would include the backtrace except it is over 30,000 calls long. I
> > can give the code that calls snapshot-set if that would be helpful.
> >
> >
> > Any advice or assistance would be appreciated. Thanks.
> >
> > --
> > Elliott Slaughter
> >
> > "Any road followed precisely to its end leads precisely nowhere." -
> > Frank Herbert
> > _______________________________________________
> > elephant-devel site list
> > elephant-devel@common-lisp.net
> > http://common-lisp.net/mailman/listinfo/elephant-devel
>
>
> _______________________________________________
> elephant-devel site list
> elephant-devel@common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel
>



-- 
Elliott Slaughter

"Any road followed precisely to its end leads precisely nowhere." - Frank
Herbert
_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to