[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