Pagefault in StringItem IPC

BERTRAND Joel <[email protected]> Tue, 30 Nov 2010 19:15:34 +0100
Newsgroups gmane.comp.micro-kernel.l4.l4ka.general
Message-ID <[email protected]>
	Hello,

	I'm trying to send a StringItem to a thread with L4_Call() and this 
function raises a page fault. This is a minimal function that raises 
pagefault error :

     rtl$sprint(&str, fmt, arg);  // <- create a string
     si = L4_StringItem(str.length_trim, (void *) str.c);

// I have checked that si contains what I want.

     L4_Clear(&msg);
     L4_Append(&msg, si);
     L4_Set_Label(&msg, 1);
     L4_Load(&msg);

     L4_KDB_Enter("pager");
     L4_Call(L4_Pager());
     L4_KDB_Enter("pager2");

and its output :

sys$pagefault(addr=200110 caller=3c00000001)
sys$pagefault(ref=2a31)
sys$pagefault(addr=10dff8 caller=3c00000001)
sys$pagefault(ref=29d1)
sys$pagefault(addr=201490 caller=3c00000001)
sys$pagefault(ref=2a31)
--- "pager" ---
--------------------------------- (eip=00000000002002d1, 
esp=000000000010d8b8) -
 > showtcbext
tcb/tid/name [current]: 3c00000001
=== TCB: ffffffffc0ab4000 === ID: 0000003c00000001 = 
0000000000007200/ffffffffc=
...
mr(00): 0000000000010080 0000000000006400 000000000010d8b8...
...
Message Tag: 0 untyped, 2 typed, label = 1, flags = ----
string item: len=19, num=1, cont=0, cache=0
   ( 000000000010d8b8 )
...
Acceptor: 0000000000000000 (s)
   fpage : (NIL-FPAGE)
 > go
sys$pagefault(addr=0 caller=3c00000001)
Halting a thread with ongoing kernel operations is not supported--- "KD# 
UNIMPL-

	Kernel debugger shows that StringItem is written in MR1 and MR2. I 
don't understand why L4_Call() raises a pagefault error. Any explanation ?

	Best regards,

	JB