[Haskell-cafe] Can reallyUnsafePtrEquality give false positives?
Siddharth Bhat
siddu.druid at gmail.com
Wed Nov 22 19:22:09 UTC 2017
This is out of curiosity: does the runtime actually provide guarantees
about when the GC must kick in? Or is this implementation defined but
common knowledge?
Thanks,
Siddharth
On Wed 22 Nov, 2017, 20:20 Brandon Allbery, <allbery.b at gmail.com> wrote:
> 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
> _______________________________________________
> 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.
--
Sending this from my phone, please excuse any typos!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20171122/5fc87206/attachment.html>
More information about the Haskell-Cafe
mailing list