Archived

This forum has been archived. Please start a new discussion on GitHub.

More things broken on Solaris 10 x86_64 with latest patches

Hello,

I found some more broken things:

Versions:

OS: SunOS v40z-1 5.10 Generic_125101-08 i86pc i386 i86pc
Compiler: CC: Sun C++ 5.9 SunOS_i386 2007/05/03
Ice: 3.2.0 with CtrlCHandler.cpp with patch from Bernard

#######################
# Mutex broken ??
#######################

- Only builds with "OPTIMIZE=yes" are affected.
- It can be reproduced with the Ice unittest test/Ice/exception.

DEBUG binaries:
-bash-3.00$ LD_LIBRARY_PATH=../debug/lib/amd64 test/Ice/exceptions/client
testing object adapter registration exceptions... ok
testing servant registration exceptions... ok
testing servant locator registrations exceptions... ok
testing object factory registration exception... ok
testing stringToProxy... ok
testing checked cast... Network.cpp:686: Ice::ConnectionRefusedException:
connection refused: Connection refused

execution completed, exit code is 1

RELEASE binaries:
-bash-3.00$ LD_LIBRARY_PATH=../release/lib/amd64 dbx test/Ice/exceptions/client
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.6' in your .dbxrc
Reading client
Reading ld.so.1
Reading libIce.so.3.2.0
Reading libIceUtil.so.3.2.0
Reading libpthread.so.1
Reading libstlport.so.1
Reading librt.so.1
Reading libCrun.so.1
Reading libm.so.2
Reading libthread.so.1
Reading libc.so.1
Reading libdl.so.1
Reading libsocket.so.1
Reading libaio.so.1
Reading libmd5.so.1
Reading libnsl.so.1
(dbx) run
Running: client
(process id 17265)
testing object adapter registration exceptions... t@1 (l@1) signal SEGV (access to address exceeded protections) in tdb_mutex_stats at 0xfffffd7ffec569cc
0xfffffd7ffec569cc: tdb_mutex_stats+0x000c: movw $0x0000000000004d58,0x0000000000000006(%rdi)
dbx: read of 8 bytes at address 706164417473655c failed
dbx: attempt to read frame failed -- cannot get return address
dbx: warning: No frame with source found
(dbx) where
current thread: t@1
dbx: read of 8 bytes at address 706164417473655c failed
dbx: attempt to read frame failed -- cannot get return address
=>[1] tdb_mutex_stats(0xfffffd7ffec5679b, 0x0, 0x1, 0xfffffd7ffeeb456c, 0x0, 0xfffffd7ffec5679b), at 0xfffffd7ffec569cc
[2] mutex_lock_internal(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec53daa
[3] mutex_lock_impl(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5445e
[4] _private_mutex_lock(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec544fb
[5] IceInternal::decRef(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffefc927a
[6] IceInternal::ObjectAdapterFactory::createObjectAdapter(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffefca657
[7] 0xfffffd7fffdff500(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fffdff500
[8] 0x4f112c(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0x4f112c
[9] 0x6c610030726574(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0x6c610030726574
(dbx) threads
*> t@1 a l@1 ?() signal SIGSEGV in tdb_mutex_stats()
t@2 a l@2 .XDCvXZe6eLaGlqX.startHook() sleep on 0x4f5c78 in __lwp_park()

Notice: test/IceUtil/thread/client is running without problems

-bash-3.00$ LD_LIBRARY_PATH=../release/lib/amd64 test/IceUtil/thread/client
running mutex test... ok
running countDownLatch test... ok
running thread start test... ok
running thread create test... ok
running thread alive test... ok
running recursive mutex test... ok
running read/write recursive mutex test... ok
running static mutex test... ok
running monitor<mutex> test... ok
running monitor<recmutex> test... ok

#######################
# Exception handling broken ??
#######################

- Only builds with "OPTIMIZE=yes" are affected.
- It can be reproduced with the Ice unittest test/Ice/operations.

DEBUG binaries:
-bash-3.00$ LD_LIBRARY_PATH=../debug/lib/amd64 test/Ice/operations/client
testing stringToProxy... ok
testing ice_getCommunicator... ok
testing proxy methods... ok
testing proxy comparison... ok
testing checked cast... ok
testing checked cast with context... ok
testing timeout... ok
testing twoway operations... ok
testing twoway operations with AMI... ok
testing batch oneway operations... ok
testing server shutdown... ok

execution completed, exit code is 0

RELEASE binaries:
-bash-3.00$ LD_LIBRARY_PATH=../release/lib/amd64 dbx test/Ice/operations/client
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.6' in your .dbxrc
Reading client
Reading ld.so.1
Reading libIce.so.3.2.0
Reading libIceUtil.so.3.2.0
Reading libpthread.so.1
Reading libstlport.so.1
Reading librt.so.1
Reading libCrun.so.1
Reading libm.so.2
Reading libthread.so.1
Reading libc.so.1
Reading libdl.so.1
Reading libsocket.so.1
Reading libaio.so.1
Reading libmd5.so.1
Reading libnsl.so.1
(dbx) run
Running: client
(process id 17513)
testing stringToProxy... ok
testing ice_getCommunicator... ok
testing proxy methods... ok
testing proxy comparison... ok
testing checked cast... ok
testing checked cast with context... ok
testing timeout... ok
testing twoway operations... ok
testing twoway operations with AMI... ok
testing batch oneway operations... t@1 (l@1) signal SEGV (no mapping at the fault address) in _dlamd64getunwind at 0xfffffd7fff3dd521
0xfffffd7fff3dd521: _dlamd64getunwind+0x0061: movq 0x00000000000000d0(%r14),%rdi
dbx: read of 8 bytes at address 3c failed
dbx: attempt to read frame failed -- cannot get return address
dbx: warning: No frame with source found
(dbx) where -h
current thread: t@1
dbx: read of 8 bytes at address 3c failed
dbx: attempt to read frame failed -- cannot get return address
=>[1] _dlamd64getunwind(0x0, 0xfffffd7fffdfc8e0, 0xfffffd7fffdfc478, 0xfffffd7fff3fd8b8, 0xfffffd7fff3fd720, 0x0), at 0xfffffd7fff3dd521
[2] _Unw_EhfhLookup(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5c8aa
[3] complete_context(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5cd75
[4] down_one(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5cef0
[5] _Unwind_RaiseException_Body(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5d020
[6] _SUNW_Unwind_RaiseException(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5d1e9
[7] __Crun::ex_throw(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff2a9464
[8] IceInternal::BasicStream::throwMemoryLimitException(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffef164cf
[9] IceInternal::BasicStream::write(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffef0b5f5
[10] 0xfffffd7fffdfc8e0(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fffdfc8e0

#######################
# Starting 2 communicators on same port broken ??
#######################

- Only builds with "OPTIMIZE=yes" are affected.
- It can be reproduced with the Ice unittest test/Ice/operations.

DEBUG binaries:
-bash-3.00$ LD_LIBRARY_PATH=../debug/lib/amd64 test/Ice/operations/server &
[1] 17620
-bash-3.00$ LD_LIBRARY_PATH=../debug/lib/amd64 test/Ice/operations/server
Network.cpp:485: Ice::SocketException:
socket exception: Address already in use

RELEASE binaries:
-bash-3.00$ LD_LIBRARY_PATH=../release/lib/amd64 test/Ice/operations/server &
[1] 17622
-bash-3.00$ LD_LIBRARY_PATH=../release/lib/amd64 dbx test/Ice/operations/server
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.6' in your .dbxrc
Reading server
Reading ld.so.1
Reading libIce.so.3.2.0
Reading libIceUtil.so.3.2.0
Reading libpthread.so.1
Reading libstlport.so.1
Reading librt.so.1
Reading libCrun.so.1
Reading libm.so.2
Reading libthread.so.1
Reading libc.so.1
Reading libdl.so.1
Reading libsocket.so.1
Reading libaio.so.1
Reading libmd5.so.1
Reading libnsl.so.1
(dbx) run
Running: server
(process id 17627)
t@1 (l@1) signal SEGV (no mapping at the fault address) in _dlamd64getunwind at 0xfffffd7fff3dd521
0xfffffd7fff3dd521: _dlamd64getunwind+0x0061: movq 0x00000000000000d0(%r14),%rdi
(dbx) where -h
current thread: t@1
=>[1] _dlamd64getunwind(0x0, 0x5499c0, 0xfffffd7fffdfe440, 0xfffffd7fff3fd8b8, 0xfffffd7fff3fd720, 0x0), at 0xfffffd7fff3dd521
[2] _Unw_EhfhLookup(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5c8aa
[3] complete_context(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5cd75
[4] down_one(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5cef0
[5] _Unwind_RaiseException_Body(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5d082
[6] _SUNW_Unwind_Resume(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7ffec5d4aa
[7] IceInternal::TcpEndpointI::acceptor(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff07806b
[8] 0x5499c0(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0x5499c0
[9] 0x549780(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0x549780




Do you have any idea where to look or what to do ???

Best regards,
Markus

Comments

  • bernard
    bernard Jupiter, FL
    Hi Markus,

    It looks like exception handling breaks on this unsupported platform / Ice build.

    The first thing I would try is build without "-xldscope=hidden".

    Cheers,
    Bernard
  • Solaris patch 124923-03 broken ???

    @Bernard: Thanks for your time and passion.

    @all: This are two problems in one.

    1.
    The Solaris patch "124923-03 SunOS 5.10_x86: ld.so.1 patch" seems to be broken (at least for me on my machine). After deinstalling it with "patchrm 124923-03" and a full recompile of all libraries this errors go partially away.

    2.
    The Sun Studio 12 optimizer seems (as far as I understand the bugreports) to have a problem with alignment. Sun Studio 11 works for me (Sun C++ 5.8 Patch 121018-10 2007/02/21).

    Best regards,
    Markus
  • bernard
    bernard Jupiter, FL
    Hi Markus,

    Glad to hear that you found a solution!

    Cheers,
    Bernard