[Haskell-cafe] Can reallyUnsafePtrEquality give false positives?

Brandon Allbery allbery.b at gmail.com
Wed Nov 22 19:15:23 UTC 2017


Actually, I'd say that it can, but only if used incorrectly. Which is why
it's reallyUnsafe.

The OP is correct in that a gc at the wrong time can lead to spurious
positives. The key to this is that, if you force everything to be evaluated
to WHNF (so you actually have the pointers) and then gc, you have some
determinacy as to when the next gc will happen: force to WHNF first, gc,
make sure any subsequent operations between that and your
reallyUnsafePtrEquality either don't allocate or fit in the nursery --- and
in this case, you can trust the result. So it requires a fair amount of
care, but there is a window in which it is safe.

On Wed, Nov 22, 2017 at 2:06 PM, Andrew Martin <andrew.thaddeus at gmail.com>
wrote:

> It cannot give false positives. If it could, that would make it totally
> worthless.
>
> Sent from my iPhone
>
> > On Nov 22, 2017, at 12:22 PM, Michael Walker <mike at barrucadu.co.uk>
> wrote:
> >
> > Hello,
> >
> > Can reallyUnsafePtrEquality give false positives?  I can see how it
> > can give false negatives (eg, compiler optimisations increasing or
> > decreasing sharing), but I'm not so sure if it can give false
> > positives.
> >
> > I don't see how in a garbage collected language two live values could
> > compare reference equal.  Unless the implementation is something like:
> >
> > reallyUnsafePtrEquality a b = getptr a == getptr b
> >
> > ...as that then means that if the GC moves things after `getptr a` is
> > evaluated but before `getptr b` is, then you could get a false
> > positive.  But that doesn't seem like a sensible implementation to me,
> > because then reallyUnsafePtrEquality would surely be totally useless.
> >
> > --
> > Michael Walker (http://www.barrucadu.co.uk)
> > _______________________________________________
> > Haskell-Cafe mailing list
> > To (un)subscribe, modify options or view archives go to:
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> > Only members subscribed via the mailman list are allowed to post.
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
>



-- 
brandon s allbery kf8nh                               sine nomine associates
allbery.b at gmail.com                                  ballbery at sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20171122/cc9eee1d/attachment.html>


More information about the Haskell-Cafe mailing list