[omniORB] Omni on PlayStation2

Ulf Stoermer ulf@emi.yamaha.co.jp
Wed Mar 26 10:51:00 2003


Hi people,

this is not a joke, yes, currently I'm trying to port Omni4 to Sony
PlayStation2.
Why bother? Don't ask me, ask my boss :-)

Well, actually I'm already pretty far, I got everything to compile and also
the echo examples 1 and 2 are already running.

However, when it comes to using the NamingService big trouble arrises.
Let's look at two different scenarios:

1. OmniNames is running on a different computer:
When running eg3_impl on the Playstation I can see in the trace of
omniNames that actually the first GIOP message arrives but upon that
it never replies anything. eg3_impl then waits, times out and off course
throws an exception. Here's the trace of omniNames (on a Linux PC)

omniORB: Server accepted connection from giop:tcp:133.176.227.130:1043
omniORB: AsyncInvoker: thread id = 2 has started. Total threads = 3 category
= 0
omniORB: AsyncInvoker: thread id = 3 has started. Total threads = 3 category
= 1
omniORB: Scavenger task execute.
omniORB: giopWorker task execute.
omniORB: Accepted connection from giop:tcp:133.176.227.130:1043 because of
this rule: "* unix,ssl,tcp"
omniORB: inputMessage: from giop:tcp:133.176.227.130:1043 100 bytes
4749 4f50 0100 0000 5800 0000 0000 0000 GIOP....X.......
0200 0000 0100 0000 0b00 0000 4e61 6d65 ............Name
5365 7276 6963 6500 0600 0000 5f69 735f Service....._is_
6100 0000 0000 0000 2800 0000 4944 4c3a a.......(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000                               1.0.
omniORB: Scan for idle connections (1048738734,476484000)
omniORB: Scavenger reduce idle count for strand 0x8062178 to 35


2. scenario: Both, eg3_impl and omniNames running on PlayStation:
In this case omniNames is slightly more eloquent but will soon seg fault
after a short 'dialog'. Here the trace of omniNames:

omniORB: Server accepted connection from giop:tcp:133.176.227.130:1046
omniORB: AsyncInvoker: thread id = 3 has started. Total threads = 4
omniORB: Scavenger task execute.
omniORB: AsyncInvoker: thread id = 4 has started. Total threads = 4
omniORB: giopWorker task execute.
omniORB: Accepted connection from giop:tcp:133.176.227.130:1046 because of
this rule: "* tcp,unix,ssl"
omniORB: inputMessage: from giop:tcp:133.176.227.130:1046 100 bytes
omniORB:
4749 4f50 0100 0000 5800 0000 0000 0000 GIOP....X.......
0200 0000 0100 0000 0b00 0000 4e61 6d65 ............Name
5365 7276 6963 6500 0600 0000 5f69 735f Service....._is_
6100 0000 0000 0000 2800 0000 4944 4c3a a.......(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000                               1.0.
omniORB: sendChunk: to giop:tcp:133.176.227.130:1046 25 bytes
omniORB:
4749 4f50 0100 0001 0d00 0000 0000 0000 GIOP............
0200 0000 0000 0000 01                  .........
omniORB: inputMessage: from giop:tcp:133.176.227.130:1046 99 bytes
omniORB:
4749 4f50 0100 0000 5700 0000 0000 0000 GIOP....W.......
0400 0000 0100 0000 0b00 0000 4e61 6d65 ............Name
5365 7276 6963 6500 1100 0000 6269 6e64 Service.....bind
5f6e 6577 5f63 6f6e 7465 7874 0044 4c3a _new_context.DL:
0000 0000 0100 0000 0500 0000 7465 7374 ............test
002f 4e61 0b00 0000 6d79 5f63 6f6e 7465 ./Na....my_conte
7874 00                                 xt.
omniORB: Creating ref to in process: root/<............>
 target id      : IDL:omg.org/CORBA/Object:1.0
 most derived id: IDL:omg.org/CosNaming/NamingContext:1.0
omniORB: Adding root/<............> (activating) to object table.
omniORB: State root/<............> (activating) -> active
omniORB: Creating ref to local: root/<............>
 target id      : IDL:omg.org/CosNaming/NamingContextExt:1.0
 most derived id: IDL:omg.org/CosNaming/NamingContextExt:1.0
omniORB: ObjRef(IDL:omg.org/CosNaming/NamingContext:1.0) -- deleted.
Segmentation fault


Can someone maybe see something very obvious that I might have
overlooked, or can push me into the right direction where to look at
particularly. Any help is appreciated.

Sony sells a Linux tool kit for the PlayStation which ships with a
quite ancient gcc 2.95.2. Hardwarewise that thing is equipped with
a MIPS R5900 processor.
I build Omni4 with the old make system by adapting the linux makefile.
Basically all I did was changing from -D__x86__ to -D__mips__ and
changing the linux-config.h as well as giving the compiler option
-mcpu=r5900

Cheers

Ulf

P.S.: If you think that PlayStation is a freaky platform for Omni how
about this then: Last week I successfully ported it to Sharp Zaurus.
Zauruses are these little handheld organizers. The most recent ones
are running Linux on an ARM processor and connectivity is done with
a little wireless-lan card. As one can imagine, we're just running client
programs on the Zaurus :-)