[gclist] Re: gclist-digest V1 #70

Giuliano Carlini giuliano@ix.netcom.com
Fri, 14 Jun 1996 08:46:11 -0700


Arturo,

>>Even then, I would not trust it until I see a
>>proof and an implementation.
>
>No you don't, 

Marc is right. No algorithm should be trusted without a proof. Too often in 
the past, "obviously correct" algorithms have turned out to be wrong. And 
while tracing the IRG is only a small addition to reference listing, the 
algorithm as a whole is complex enough that it can't be called obvious.

>There are a number of ways to address your point, the formal way is that 
>[A], as any other node can detect a change in the set of objects directly 
>referring to it, and you have to choose a policy to address them, i.e. if 
>while A is waiting for a response from B it notices that a new reference 
>to it (from [M]) has showed up

This is the barrier approach.

>The second way of handling it is implementation related, we don't 
>actually destroy A but we make it drop the remote references that it 
>holds and the remote references to it (the pointer to B in this case), 

How can you do that? If A is reachable, dropping B would be a disaster.

>something that could happen in a network failure or partition, as is 
>usual with distributed programming any object that has to talk to another 
>across a machine boundary needs to be able to cope with failiure.

But you are inducing an unecessary "failure". This is a bug not a failure.

>We could follow a more agressive strategy for cleaning up the cycle by 
>sending terminate messages, but those could be spoofed,

I'm not sure, but I believe that Matt Fuch's addresses this point in his 
paper. Even if it is spoofed, you are still no worse off than you are with 
your algoritm: A has been destructed even though it is reachable. Your basic 
point has merit though: the DGC should be secure from hackers.

g