Problem with hybrid L4Linux task

Mathias Krause mkrause at Informatik.TU-Cottbus.DE
Mon Sep 19 18:37:43 CEST 2005

Hi Frank,

Frank Mehnert wrote:
> Try to debug this issue using the kernel debugger. What does the IPC log
> say (options I* and IR+, what msgdope is displayed)?

Ok, here comes the (partially analysed) trace buffer.
Task 26.x is the server waiting for the client 27.x to send data.
You need to read it from the bottom upwards because trace buffer is 
filled this way (see numbers on the right side).

| ...
| +++>  27.00 send dope=bf4bb110 (L4_IPC_Enot_existent)           3999
| ipc:  27.00 send-> 26.00 (00000000,00000000) TO=INF             3998
|       27.00 send dope=00000000 (OK)                             3997
| ...
Here the client gets a failure because the server already finished.

| ...
| +++>  26.00 call dope=00004000 (OK) 5.00 (00000000,00000001)    3984
| ipc:   5.00 repl-> 26.00 (00000000,00000001) TO=0/INF           3983
|        5.00 rply dope=0000a000 (OK) 26.00 (00100003,004c001f)   3982
| ipc:  26.00 call-> 5.00 (00100003,004c001f) TO=INF/INF          3981
| ...
Here the server already deregisters itself at names because he got a
message with an empty buffer => means "end of transmition".

| ...
| +++>  26.00 recv dope=00004000 (OK) 27.00 (00000000,00000000)   3966
| ipc:  26.00 recv from 27.00 TO=INF                              3965
| ...
Here the server starts waiting for the client to send data in a buffer 
sized 4k.

<<<start reading the trace buffer here>>>

> Maybe the compiler optimizes some code away. I assume that you tried the
> last version of L4Linux 2.6 -- Adam changed many things to get hybrid
> tasks working.

It's a version a week old or so. It was very stable at this time (no 
changes in CVS for some time).

> We cannot guarantee that the bindings are bug-free but they have been
> tested for a long time. Do you use any special compiler switches besides
> -O2? Do you use -fomit-frame-pointer? Try without. Do you use -fstrict-
> aliasing? Try with -fno-strict-aliasing as defined in l4/mk/

My CFLAGS are '-W -Wall -g -O2', so this should be ok, doesn't it?

BTW, I haven't found any library containing a l4_ipc_whatever() function.
Are the assembler inlines the only way to make ipc calls?

> > PS: I'm runing Debian sarge over here.
> Should be fine. Actually I use gcc-3.4 but have used gcc-3.3 for a long
> time. gcc-4 is still not supported for the L4env tree.

gcc-3.4 (gcc-Version 3.4.4 20050314 (prerelease) (Debian 3.4.3-13))
doesn't work for me too :(

> If nothing helps you could send me the source/binary so I'm able to
> investigate a little bit more.

I'll send you a seperate message in a few minutes :)


More information about the l4-hackers mailing list