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/binary.inc.
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 :)
Mathias
More information about the l4-hackers
mailing list