On Sun, 19 Aug 2018 03:40:26 +0200
Thomas Chust <[email protected]> wrote:
> Hello,
> 
> while trying to port some code from CHICKEN 4 to CHICKEN 5 I have just
> spent several hours tracking down a crash to a call of
> hash-table-ref/default for a table which happened to use eq? as the
> comparison function and was loaded with various types of objects as
> keys.
> 
> Then I realized that eq?-hash simply cannot be called on certain types
> of objects:
> 
>   $ chicken-status
>   [...]
>   srfi-69 ....................................................... version: 0.2
>   [...]
> 
>   $ csi
>   CHICKEN
>   (c) 2008-2018, The CHICKEN Team
>   (c) 2000-2007, Felix L. Winkelmann
>   Version 5.0.0rc1 (prerelease) (rev 9d480412)
>   linux-unix-gnu-x86-64 [ 64bit dload ptables ]
> 
>   #;1> (import srfi-69)
>   ; loading /opt/chicken/lib/chicken/9/srfi-69.import.so ...
>   ; loading /opt/chicken/lib/chicken/9/srfi-69.so ...
>   #;2> (eq?-hash 2/3)
>   [panic] out of memory - heap has reached its maximum size - execution 
> terminated
> 
> Apart from fractions, complex numbers also seem to trigger the crash
> reliably.
> 
> Since I don't see any obvious reason why hashing by object identity
> should be impossible for certain values, I consider this a serious
> bug :-/

It probably shouldn't crash, but since '(eq? 2 2)' is allowed to evaluate
to #f, depending on the implementation, does it matter that much?  (Maybe
crashing is better than a hash function silently failing to produce a
workable hash.)

_______________________________________________
Chicken-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to