[EROS-Arch] Destroying domains

Joerg Bornschein joerg@zilium.de
Fri, 2 Mar 2001 17:10:25 +0100


Hi,

I wrote a small test domain which
 1) creates a new spacebank
 2) requests a constructor to place a product into this bank
 3) makes the product "running" (by SENDing() )
 4) destroys the spacebank

( see http://www.zilium.de/joerg/zeuch/apptest.tar.gz )

There are three (actually two) problems:


When the spacbank calls range_getobjectkey to rescind a frame, 
 http://www.eros-os.org/eros-src/sys/key/pk_RangeKey.cxx#249
gets executed. But Checkpoint::RetagFrame may zap PTE, so
assert(inv.CanCommit()) [pk_RangeKey.cxx#254] does not always hold.

I'm somewhat confused here: Checkpoint::RetagFrame seems to visibly change 
system state -- shouldn't RetagFrame call COMMIT_POINT() on his own?


Another issue is in 
 http://www.eros-os.org/eros-src/sys/kernel/kern_Thread.cxx#758 and
 http://www.eros-os.org/eros-src/sys/kernel/kern_Thread.cxx#460

The deleted domain still occupies a thread and DoReschedule() notices
the domain root has been rescinded. To my understanding this is a normal
flow of control and shouldn't be handled by MsgLog::fatal().

Or is there some kind of dependency logic which should delete the thread
much earlier?

   joerg