patch for alpha and linux-ppc

peter.speter.s Member
hello,

i created a small patch for the include/IceUtil/Config.h and the src/icecpp/config.h include files to make Ice compile (and at least partly run) on

Debian/powerpc/sid Linux (a G4 450MHz)
and on
Debian/alpha/sid Linux (a Digital AlphaPC 164SX 533 MHz)

(the changes are mainly due to the architecture (alpha = 64bit little endian, ppc = 32bit big endian) and due to the fact that the preprocessor symbol for 'powerpc' is not only "__ppc__" but on some linux distributions "__powerpc__" or "powerpc" or on 64bit powerpc architectures "powerpc64"

the patch consists of separate patch files in context diff format for the two header files

unfortunately the tests were not completely satisfying:
the ppc had the following error:

...

*** running tests in ./test/Freeze/evictor
starting server... ok
starting client... ok
testing Freeze Evictor... ok

*** running tests in ./test/IceStorm/single
starting icestorm service... failed!
test in ./test/IceStorm/single failed with exit status 256

the alpha had the following error:

...

*** running tests in ./test/Ice/exceptions
tests with regular server.
starting server... ok
starting client... ok
testing servant registration exceptions... ok
testing servant locator registrations exceptions... ok
testing object factory registration exceptions... ok
testing stringToProxy... ok
testing checked cast... ok
catching exact types... ok
catching base types... ok
catching derived types... ok
catching unknown user exception... ok
catching object not exist exception... ok
catching facet not exist exception... ok
catching operation not exist exception... ok
catching unknown local exception... warning: connection exception:
SslTransceiver.cpp:267: Ice::ConnectionLostException:
connection lost: recv() returned zero
local address = 127.0.0.1:12345
remote address = 127.0.0.1:32894
test in ./test/Ice/exceptions failed with exit status 256

is there a possibility to get a better error reporting from these tests?

thanks for reading up to this point ;-)
Peter

Comments

  • bernardbernard Jupiter, FLBernard NormierOrganization: ZeroC, Inc.Project: IceAdministrators, ZeroC Staff ZeroC Staff
    Hello Peter,

    The 'exceptions' test is a very simple test; after adding $ICE_HOME/lib to your LD_LIBRARY_PATH, you can just run 'client' and 'server' in $ICE_HOME/test /Ice/exceptions. This will use TCP instead of SSL, but it does not look like an SSL issue. BTW you can run the entire test-suite without SSL by editing the top of $ICE_HOME/config/TestUtil.py.

    For the IceStorm test failure, I recommend you try first the IceStorm demo, and figure out why IceStorm does not start.

    I'll be happy to incorporate your patch to the Ice codebase once you have everything working!

    Cheers,
    Bernard
  • peter.speter.s Member
    first i recompiled everything without optimizations

    after setting ld_library_path to the correct path, i tried the exception test on the ppc (which worked like before) and then tried to start the IceStorm service like described in the README file of the IceStorm demo:
    demo/IceStorm/clock$ ../../../bin/icebox --Ice.Config=config_service
    error: ServiceManager: exception while starting service IceStorm:
    ../../include/IceUtil/Handle.h:44: IceUtil::NullHandleException
    


    on the alpha the exception tests worked after compiling in debug mode, the icestorm problem occured on this architecture too, but with the following message:
    demo/IceStorm/clock$ ../../../bin/icebox --Ice.Config=config_service
    error: ServiceManager: Network.cpp:357: Ice::SocketException:
    socket exception: Cannot assign requested address
    

    i strace-d the program and this is the part which - i think - is relevant for this error
    open("/etc/hosts", O_RDONLY)            = 3
    fcntl(3, F_GETFD)                       = 0
    fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
    fstat(3, {st_mode=S_IFREG|0644, st_size=365, ...}) = 0
    mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2000001a000
    read(3, "127.0.0.1\tlocalhost\n128.131.167."..., 8192) = 365
    read(3, "", 8192)                       = 0
    close(3)                                = 0
    munmap(0x2000001a000, 8192)             = 0
    getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
    pipe([536866384, 1])                    = 3
    clone(child_stack=0x120032e70, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND) = 6793
    write(4, "\260\327\0\0\0\2\0\0\5\0\0\0\0\2\0\0\250\364\377\37\1\0"..., 168) = 168
    osf_sigprocmask(0x1, 0, 0x11fffef08)    = 2147483648
    write(4, "@\200J\0\0\2\0\0\0\0\0\0\0\[email protected]@\0\0\0\0\0\0\0\0008\307D"..., 168) = 168
    osf_sigprocmask(0x1, 0, 0x11fffee20)    = 2147483648
    sigsuspend([ABRT BUS SEGV SYS ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO] <unfinished ...>
    --- SIGRT_0 (Unknown signal 32) @ 0 (0) ---
    <... sigsuspend resumed> )              = -1 EINTR (Interrupted system call)
    sigreturn()                             = ? (mask now [])
    osf_sigprocmask(0x1, 0, 0x11ffff178)    = 2147500035
    write(4, "@\200J\0\0\2\0\0\0\0\0\0\0\[email protected]@\0\0\0\0\0\0\0\0\274\356"..., 168) = 168
    osf_sigprocmask(0x1, 0, 0x11ffff090)    = 2147500035
    sigsuspend([TRAP FPE PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO] <unfinished ...>
    --- SIGRT_0 (Unknown signal 32) @ 0 (0) ---
    <... sigsuspend resumed> )              = -1 EINTR (Interrupted system call)
    sigreturn()                             = ? (mask now [HUP INT TERM])
    osf_old_open(0x2, 0x1, 0x6, 0, 0)       = -1 ENONET (Machine is not on the network)
    osf_syscall(0x5, 0x6, 0x1, 0, 0x4, 0)   = -1 ENONET (Machine is not on the network)
    osf_syscall(0x5, 0xffff, 0x8, 0, 0x4, 0) = 92
    fork()                                  = 92
    osf_syscall(0x5, 0x4, 0x6, 0, 0x4, 0)   = -1 ENONET (Machine is not on the network)
    osf_syscall(0x5, 0xffff, 0x4, 0, 0x4, 0) = 104
    osf_getlogin(0x5, 0x12002d870, 0x10, 0x1, 0x4) = -1 ENXIO (No such device or address)
    osf_syscall(0x5, 0x12002d870, 0x10, 0, 0x4, 0) = 4
    eexit(2)                                 = ?
    rror: ServiceManager: Network.cpp:357: Ice::SocketException:
    socket exception: Cannot assign requested address
    --- SIGRT_0 (Unknown signal 32) @ 0 (0) ---
    _exit returned!
    ) = ? (mask now [HUP INT TERM])
    

    is there any special capability the network interface must have for icestorm to connect? (i am not running this as root)
  • bernardbernard Jupiter, FLBernard NormierOrganization: ZeroC, Inc.Project: IceAdministrators, ZeroC Staff ZeroC Staff
    Hi Peter,

    There is nothing special about IceStorm. The demo uses port 9998 and 10000 (see config and config_service). Did you check if you have any server using these ports? Tried different ports?

    Also, are the IceStorm tests the only tests failing now? You can easily remove tests from the test suite by editing allTests.py.

    Cheers,
    Bernard
  • peter.speter.s Member
    yes, the IceStorm tests are the only remaining failing tests now

    some warnings do exist, but not as fatal as the IceStorm test exit
Sign In or Register to comment.