-
Bug: Implicit IPC cancelled by lthread_ex_regs leads to
corruption of v0:
If a thread is in an implicit receive (resulting from a page fault
or exception) and that receive is cancelled via another thread executing
an lthread_ex_regs on the receiving thread, a
RECANCELLED return status is delivered to the receiving thread,
thus trashing the thread's v0 register.
The net effect is that it is impossible to preserve v0
across exceptions if the handler tries to restart the excepting thread.
Not yet fixed.
[99-09-03]
-
Bug: lthread_exregs always cancels pending IPC.
An inquiry-only lthread_exregs system call (i.e., one which does
not change any of IP, SP, pager or exception handler) should be totally
non-destructive. Present operation (which is consistent with the
reference manual) is that lthread_exregs always cancels a
pending IPC operation.
Not fixed yet.
[99-09-11]
-
Bug: Kernel panics in a number of cases which should be handled more
gracefully.
Will be fixed bit by bit as we go along...
[99-09-09]
-
Bug: Incorrect operation of closed receives of deceiving sends:
Assume threads aa of task A, bb of task B
and cc of task C. A is B's chief, B
is C's chief.
Buggy behaviour: aa does a closed receive from bb.
bb sends deceivingly a message to aa with cc as virtual
sender, which is received by aa. The same message is not received
by aa if aa is in a closed receive from cc. In the
present implementation this happens if the sender blocks on the IPC, waiting
for the receiver to perform the IPC syscall.
Correct behaviour would have aa, when in a closed receive
from bb, only receive undeceived messages from bb. If aa
is in a closed receive from cc, it should only receive messages
sent deceivingly by bb with cc as virtual sender. In the
present implementation this happens if the receiver blocks on the IPC,
waiting for the sender to perform the IPC syscall.
Not fixed yet.
[99-02-03]
-
Bug: existing mappings:
Assume a page A is to be mapped to a page B in the receiver's
address space which already has a mapping.
Buggy behaviour: the operation is ignored, unless A and
B are mapped to the same physical address.
Correct behaviour: flush B and establish the requested
mapping.
Not fixed yet.
[99-06-24]
-
Limitation: No granting:
Granting is not yet implemented.
Not fixed yet.
-
Limitation: 4 send fpages:
No more than four fpages may presently be specified on a send operation.
Any fpage descriptors in the direct string will be silently ignored.
Not fixed yet.
-
Limitation: thread_schedule ``k'':
The value of the field ``k'' returned via the ``old param word'' in
the thread_schedule system call is presently always zero.
Not fixed yet.
-
Limitation: No pre-empters:
Pre-empters are not yet supported.
Not fixed yet.