IPC trouble [was] Some questions about pager

BERTRAND Joel joel.bertrand at systella.fr
Mon Nov 29 20:47:14 CET 2010

Adam Lackorzynski a écrit :
> I guess the fpage for L4_MapItem in vm_pagefault.c should better use the
> virtual address of the memory to map to the client. As far as I see
> 'fpage' is constructed by using the pagefault address but should rather
> use the address that is looked up in roottask. Could that be the
> 'memsection'? I also think that the 'caller' should play a role when
> doing the lookup so that the same virtual addresses of different clients
> result in different memsections to be returned.

	I'm writing a new pager that shall map virtual memory. This work is in 
progress but I have another question.

	I have to write a protocole to handle virtual memory and this protocol 
uses StringItem. I cannot send any StringItem and I don't understand why 
this IPC hangs.

Minimal example :

     rtl$sprint(&str, fmt, arg);
     si = L4_StringItem(str.length_trim, (void *) str.c);

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


(file is downloadable at 

	When I start kernel in virtualbox, I obtain:

sys$pagefault(addr=200110 caller=3c00000001) 


sys$pagefault(addr=10dff8 caller=3c00000001) 


sys$pagefault(addr=201490 caller=3c00000001) 


--- "pager" --- 

--------------------------------- (eip=00000000002002d1, 
esp=000000000010d8b8) -

mr(00): 0000000000010080 0000000000006400 000000000010d8b8
Message Tag: 0 untyped, 2 typed, label = 1, flags = ---- 

string item: len=19, num=1, cont=0, cache=0

	StringItem seems to be good (I have checked that buffer contains 
correct values).


sys$pagefault(addr=0 caller=3c00000001) 

%MEM-F-MEMSEC, no memory section 

Halting a thread with ongoing kernel operations is not supported--- "KD# 
--------------------------------- (eip=ffffffffc080c92d, 
esp=ffffffffc0a8edd0) -

	Thus, L4_Call(L4_Pager()) raises a pagefault. And faulty address is 0x0 
! Why ?



More information about the l4-hackers mailing list