Archived

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

problems while build Ice-3.0.1with intel cc 9.0 on Itanium

The happy thing is that I succeed in porting Ice-3.0.1 to Itanium(redhat as4 on hp rx4640) with gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.1).Only 2 head files need patch(add __ia64 switch):
  1. include/IceUtil/Config.h
  2. src/icecpp/config.h
All the test codes are ok!When I replace gcc with icpc ,I succeeded in building all sources,but only failed in running test/Freeze/evictor,the follow is detail information:
the run.py output
../../../test/Freeze/evictor/client: warning: connection exception:
TcpTransceiver.cpp:217: Ice::ConnectionLostException:
connection lost: recv() resh: line 1: 26902 Segmentation fault      ../../../test/Freeze/evictor/server --Ice.Default.Host=127.0.0.1 --Ice.PrintProcessId --Ice.PrintAdapterReady --Ice.NullHandleAbort --Ice.Warn.Connections --Ice.ServerIdleTime=30 --Ice.ThreadPool.Server.Size=1 --Ice.ThreadPool.Server.SizeMax=3 --Ice.ThreadPool.Server.SizeWarn=0 --Freeze.DbEnv.db.DbHome=../../../test/Freeze/evictor/db --Ice.Config=../../../test/Freeze/evictor/config 2>&1
turned zero
local address = 127.0.0.1:24494
remote address = 127.0.0.1:12345
../../../test/Freeze/evictor/client: warning: connection exception:
TcpTransceiver.cpp:217: Ice::ConnectionLostException:
connection lost: recv() returned zero
local address = 127.0.0.1:24496
remote address = 127.0.0.1:24495
TcpTransceiver.cpp:217: Ice::ConnectionLostException:
connection lost: recv() returned zero
the error occured here(Client.cpp)
    //
    // Remove a facet that does not exist
    //
    try
    {
        servants[0]->removeFacet("facet3");////the server got segment fault here...
        test(false);
    }
    catch(const Test::NotRegisteredException&)
    {
    }

and this is server 's trackback:
(idb) where
>0  0x2000000001005520 in __pthread_mutex_lock_internal(...) in /lib/tls/libpthread-2.3.4.so
#1  0x400000000001f700 in ((Mutex*)0x82696c2f63689c2f)->Mutex::lock() "../../../include/IceUtil/Mutex.h":305
#2  0x4000000000020400 in ((Shared*)0x82696c2f63689c1f)->Shared::__decRef() "../../../include/IceUtil/Shared.h":233

Warning: bad source correlation found. Further instances ignored.
#3  0x200000000011cd60 in ((Handle<Freeze::EvictorElement>*)0x2000000002c93b30)->Handle<Freeze::EvictorElement>::~Handle(=<no value>) "../../include/IceUtil/Handle.h":153
#4  0x200000000011cee0 in ((Handle<Freeze::EvictorElement>*)0x2000000002c93b30)->Handle<Freeze::EvictorElement>::_ZN7IceUtil6HandleIN6Freeze14EvictorElementEED1Ev() "../../include/IceUtil/Handle.h":65536
#5  0x20000000001836f0 in ((EvictorI*)0x6000000000024f50)->EvictorI::removeFacet(=<no value>, ident=& struct Identity { ... }, facet=& class basic_string<char,std::char_traits<char>,std::allocator<char> > { ... }) "EvictorI.cpp":730
#6  0x4000000000109ad0 in ((ServantI*)0x2000000000ff2ff0)->ServantI::removeFacet(name=& class basic_string<char,std::char_traits<char>,std::allocator<char> > { ... }, current=& struct Current { ... }) "TestI.cpp":136
#7  0x400000000010a1c0 in _ZTv0_n112_N4Test8ServantI11removeFacetERKSsRKN3Ice7CurrentE(...) "TestI.cpp":0
#8  0x40000000000bb440 in ((Servant*)0x2000000000ff2ff0)->Servant::___removeFacet() "Test.cpp":2947
#9  0x40000000000bd640 in ((Servant*)0x2000000004101838)->Servant::__dispatch(in=& class Incoming { ... }, current=& struct Current { ... }) "Test.cpp":3088
#10 0x40000000000bdb40 in _ZTv0_n168_N4Test7Servant10__dispatchERN11IceInternal8IncomingERKN3Ice7CurrentE(...) "Test.cpp":0
I stoped tracing here(src/Freeze/EvictorI.cpp)
Ice::ObjectPtr
Freeze::EvictorI::removeFacet(const Identity& ident, const string& facet)
{
  ................
    if(servant == 0)
    {
        NotRegisteredException ex(__FILE__, __LINE__);
        ex.kindOfObject = "servant";
        ex.id = identityToString(ident);
        if(!facet.empty())
        {
            ex.id += " -f " + IceUtil::escapeString(facet, "");
        }
        throw ex;////until here,everything is ok............
    }
Please give some tricks or suggestion,thanks a lot!

Best regards!

Comments

  • bernard
    bernard Jupiter, FL
    Hi Yunqiao Yin,

    Since this part of the test is fairly simple, single-threaded and works well on all supported platforms/compilers, it could be a C++ compiler (or C++ runtime environment) bug. Make sure you have the latest Intel C++ patches and double-check your compiler flags.

    Are you sure the server throws this exception when it crashes? According to your stack-trace, it's earlier in the function (line 730) (probably line 731 in the 3.0.1 source file). You should try to further narrow down the problem, and ideally reduce it to a very simple test-case.

    Of course, if you have a commercial need for Ice on Itanium, we could track down this problem for you and add support for this platform. Contact us as sales@zeroc.com in that case.

    Cheers,
    Bernard
  • bernard wrote:
    Hi Yunqiao Yin,

    Since this part of the test is fairly simple, single-threaded and works well on all supported platforms/compilers, it could be a C++ compiler (or C++ runtime environment) bug. Make sure you have the latest Intel C++ patches and double-check your compiler flags.

    Are you sure the server throws this exception when it crashes? According to your stack-trace, it's earlier in the function (line 730) (probably line 731 in the 3.0.1 source file). You should try to further narrow down the problem, and ideally reduce it to a very simple test-case.

    Of course, if you have a commercial need for Ice on Itanium, we could track down this problem for you and add support for this platform. Contact us as sales@zeroc.com in that case.

    Cheers,
    Bernard
    Thank you ,I will deep into it....
    Yours
    Yunqiao Yin