Archived

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

Raspberry pi + raspbian jeesie + Ice 3.5

Hi,

I have installed in a raspberry pi with raspbian "jessie" channel/version respository and I have a problem. Along the installer all was fine, but, when I launch glacier2 I've got the following error:

/usr/bin/glacier2router --Ice.Config=$PWD/config/glacier.config
!! 01/07/14 12:49:30.759 /usr/bin/glacier2router: error: service caught unhandled exception:
Network.cpp:180: Ice::SocketException:
socket exception: Address family not supported by protocol
0 IceUtil::Exception::Exception(char const*, int) in /usr/lib/arm-linux-gnueabihf/libIceUtil.so.35
1 Ice::LocalException::LocalException(char const*, int) in /usr/lib/arm-linux-gnueabihf/libIce.so.35
2 Ice::SyscallException::SyscallException(char const*, int) in /usr/lib/arm-linux-gnueabihf/libIce.so.35
3 Ice::SocketException::SocketException(char const*, int) in /usr/lib/arm-linux-gnueabihf/libIce.so.35
4 /usr/lib/arm-linux-gnueabihf/libIce.so.35(+0x43c5dc) [0xb6b665dc]
5 IceInternal::createSocket(bool, IceInternal::Address const&) in /usr/lib/arm-linux-gnueabihf/libIce.so.35
6 IceInternal::createServerSocket(bool, IceInternal::Address const&, IceInternal::ProtocolSupport) in /usr/lib/arm-linux-gnueabihf/libIce.so.35
7 IceSSL::AcceptorI::AcceptorI(IceInternal::Handle<IceSSL::Instance> const&, std::string const&, std::string const&, int) in /usr/lib/arm-linux-gnueabihf/libIceSSL.so.35
8 IceSSL::EndpointI::acceptor(IceInternal::Handle<IceInternal::EndpointI>&, std::string const&) const in /usr/lib/arm-linux-gnueabihf/libIceSSL.so.35
9 IceInternal::IncomingConnectionFactory::initialize(std::string const&) in /usr/lib/arm-linux-gnueabihf/libIce.so.35
10 Ice::ObjectAdapterI::initialize(IceInternal::ProxyHandle<IceProxy::Ice::Router> const&) in /usr/lib/arm-linux-gnueabihf/libIce.so.35

In my config file I have configured:

Glacier2.Client.Endpoints=ssl -p XXXX
Glacier2.Server.Endpoints=ssl
Glacier2.SessionTimeout=60
Glacier2.PermissionsVerifier=Glacier2/NullPermissionsVerifier
Ice.Default.CollocationOptimized=0

Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=/xx...xxx/certs/Glacier2
IceSSL.CertAuthFile=xxxx.pem
IceSSL.CertFile=xxxx.pem
IceSSL.KeyFile=xxxx.pem

I have doing something wrong? Or maybe the problem comes from ICE ARM architecture ?

Thank you very much in advance.

Best regards,

Comments

  • benoit
    benoit Rennes, France
    Hi,

    This is most likely caused by the lack of IPv6 support on the system. You should be able to get it to work by disabling Ice IPv6 support with Ice.IPv6=0 in the configuration file.

    Cheers,
    Benoit.
  • Hi,

    Thank you for the solution, I can launch glacier2.

    But now, I've got other error, like following:
    icebox: TopicManagerI.cpp:336: IceStorm::TopicManagerImpl::TopicManagerImpl(const InstancePtr&): Assertion `p->first.id.name.empty() && p->first.id.category.empty()' failed.

    I've searched in source code at: zeroc-ice 3.4.1-8, TopicManagerI_8cpp_source.html but in previous lines at trigger the error, there are a comment that says: "This record has to be a place holder record, otherwise there is a database bug.", but I don't understand this comment.

    Which is the problem?

    Thank you again in advance.

    Best regards,
  • benoit
    benoit Rennes, France
    Hi,

    It looks like the IceStorm database is somehow corrupted. This could point to a problem with Freeze or the BerkeleyDB library.

    Which version of BerkeleyDB is your ARM Ice 3.5.1 port based on? Did you try to run some of the Freeze demos which were included with the Ice distribution? Does this occur with a clean database or is only only restart of the service?

    You could try to dump the content of the database with the Freeze dumpdb tool. This requires to have the Ice source distribution installed on the machine and to run the following command:
    $ dumpdb -I<ice-src-home>/slice --load <ice-src-home>/cpp/src/IceStorm/SubscriberRecord.ice <dbenv> subscribers
    

    <ice-src-home> should be replaced with the Ice source directory and <dbenv> with the directory of the IceStorm database environment as specified with the Freeze.DbEnv.IceStorm.DbHome property.

    Cheers,
    Benoit.
  • Hi, Benoit.
    I meet the same problem. I have installed the Ice-E (version is 3.6) binary distribution following the instruction at: https://doc.zeroc.com/display/Ice36/Using+the+Ice-E+Binary+Distribution.
    Along the installer was fine, but, when I would like to run the IceStorm project of ice-demo download from : https://github.com/zeroc-ice/ice-demos.git . Whenever I try to start the IceStorm service, I meet an error, like following: icebox: TopicManagerI.cpp:336: IceStorm::TopicManagerImpl::TopicManagerImpl(const InstancePtr&): Assertion `p->first.id.name.empty() && p->first.id.category.empty()' failed.

    When I tried to dump the content of the database with the Freeze bumpdb tool just as the above solution you mentioned. Nothing happens.

    How can I solve this problem?

    I am looking forwding your suggestion.

    Best regards,
  • bernard
    bernard Jupiter, FL
    Hi Fangping Yang,

    Ice-E currently includes a single Ice service: Glacier2. Other services are not included or supported on Linux/ARM. See the Ice-E vs Ice comparison at https://doc.zeroc.com/display/Ice36/Ice-E+Release+Notes.

    As of Ice-E 3.6.0, Ice-E does not include IceBox either, so the IceStorm service you're attempting to start isn't part of Ice-E.

    Best regards,
    Bernard
  • Dear bernard,
    Thanks a lot for your gentle answer. I am now understanding the reason. I may try to install the Ice instead of ICE-E to start the publish/subscribe service. Thanks again!