← Back to team overview

opencog-dev team mailing list archive

Re: [OpenCog] Re: Threading and GC in opencog

 

On Tue, Sep 30, 2008 at 10:36 AM, Linas Vepstas <linasvepstas@xxxxxxxxx> wrote:
> Now, the sentences being deleted will show up in this
> list of HandleEntries (if the word appeared in that
> sentence). If its HandleEntry is deleted in one thread
> while another thread is innocently dereferencing it ...
> Ka Booom!

Well, the HandleEntry itself shouldn't be deleted since that is the
callers responsibility. However, the Atom referenced by the contained
handle might be. That's where the TLB should check whether it's a
valid atom. At the moment it just checks whether the pointer seems
like it's in a valid address range, rather than checking if the atom
still exists.

We need this check because we really can't guarantee Handles to remote
atoms will remain current (thinking ahead to a distributed AtomSpace).
If an Atom is forgotten on one instance, I don't think it's scalable
for it to then tell all other instances that handle x has been
deleted, expecting the nodes to remove all references in their own
AtomSpace to that Handle. Obviously, if an instance attempts to grab x
from the remote server and finds it invalid, then it should
update/delete whatever link was used to get there

This also goes for retrieving local atoms that are not in memory... I
think that MindAgents should be able to deal with not getting access
to Handles. They can always request that more effort be put into
finding the Handles if they are really necessary (going in order from
local memory, local disk, remote, do inference to find the TV of a new
equivalent atom - although that last might be intermediary depending
on the perceived distance to inferring the TV).

I remember some discussion about invalid handles for Novamente. Can
anyone remember the details or if anything was written on this topic?
(Whether the decision was to allow or disallow them...)

J



References