IPC problem with dice-3.3.0

Marcel Selhorst m.selhorst at sirrix.com
Wed Mar 18 17:10:05 CET 2009


Hi l4-hackers,

I am currently having some issues with dice-3.3:

First of all, the dice-generated code differs in header- and client file,
meaning that the header defines functions with

int DICE_CV
somefunction()

while the outcoming c-file is

int
somefunction()

This leads to compile errors due to conflicting declarations...

But as soon as you remove DICE_CV, everything compiles fine.


The second problem I have regards IPC-calls:

I am using the latest otc-snapshot (2008-12-10 with l4linux-2.6.27) and have
written a small IDL-interface as follows:

dummy.idl:
==
interface dummy
{
  void hello(void);
}
==

The server (running under L4Linux) registers itself at the names-service as
"dummy" and starts the server_loop... It implements the dummy_hello_component as
follows:

==
void
dummy_hello_component (CORBA_Object _dice_corba_obj,
                       CORBA_Server_Environment *_dice_corba_env)
{
	/* do nothing*/
	printf("Hello\n");
}
==

Additionally, I have written 2 clients, one native L4 application and one based
on L4Linux, which implement the client-stub as follows:

==
static l4_threadid_t threadId;
static CORBA_Environment env;
names_query_name("dummy", &threadId);
LOG_printf("Dummy found with threadId: %x\n",threadId);
dummy_hello_call(&threadId, &env);
==

The native client (started via bmodfs) receives a pagefault, cause it is trying
to write?! to address 0:
==
dummytest| Dummy found with threadId: 11a0001
dummytest| L4RM: [PF] write at 0x00000000, ip 02000272, src 11.02
dummytest| [11.0] l4rm/lib/src/pagefault.c:81:__unknown_pf():
dummytest|  unhandled page fault

    --PANIC, 'g' for exit------------------------------------IP: 02005755
[dummy.rm] (11.00) jdb:
==

And the L4Linux-client crashes with a segfault:

==
dummy_t[42]: segfault at 2 ip 08048312 sp bf4092ec error 6 in
             dummy_test[8048000+76000]
==

The strange thing is: If I compile the idl-file with dice-3.2.1, the dummy
example works, BUT as soon as my interfaces get more complex, e.g., something
like this:

int write ([in]  long  start,
           [in]  long  offset,
           [in]  long  bytes_to_write,
           [in,  size_is(write_len), max_is(MAX_PAGE_SIZE)] char  *write_buffer,
           [out] long  *write_len);

IPC crashes with pagefaults / segfaults again even with dice-3.2.1...

My Fiasco-config is attached.

Do you have any ideas where the problem might be?
Do I have to pay attention to specific configuration options, if the IPC-server
is running in an L4Linux?

Thanks in advance and best regards,

Marcel Selhorst
-- 
Sirrix AG security technologies - http://www.sirrix.com
Marcel Selhorst      eMail: m.selhorst at sirrix.com
Tel +49(234) 61 0071-199    Fax +49(234) 61 0071-599
get my public key from keyserver, key id: 0x7C9821CC
Fingerprint 4138 E617 E62E 79D3 E663 BE5A 14E7 1CD8 7C98 21CC

Vorstand: Ammar Alkassar (Vors.), Ahmad-Reza Sadeghi, Christian Stüble
Vorsitzender des Aufsichtsrates: Prof. Dr. Kai Rannenberg
Sitz der Gesellschaft: Homburg/Saar, HRB 3857 Amtsgericht Saarbrücken

This message may contain confidential and/or privileged information.
If you are not the addressee, you must not use, copy, disclose or
take any action based on this message or any information herein.
If you have received this message in error, please advise the sender
immediately by reply e-mail and delete this message.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: fiasco.config
URL: <http://os.inf.tu-dresden.de/pipermail/l4-hackers/attachments/20090318/7bf5ad0f/attachment.ksh>


More information about the l4-hackers mailing list