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

Unable to run icegridnode


I downloaded the ice source code for Linux and used make to build.

When I tried to execute icegridnode built by make, I got an

icegridnode --Ice.Config=./node2.cfg

05/19/08 17:02:41.750 error: service caught unhandled Ice exception:
ThreadPool.cpp:64: Ice::SocketException:
socket exception: Function not implemented must be installed for pthread_cancel to work

Appreciate any input on resolving this issue.



  • bernard
    bernard Jupiter, FL
    Hi Sandeep,

    Could you describe your environment? Linux distribution, processor architecture, C++ compiler version, Ice version, etc.

  • Environment info

    Linux distribution - Red Hat Enterprise Linux AS release 3 (Taroon Update 6)
    processor i686
    C++ compiler version - GCC 3.3.4(32 bit)
    Ice version - 3.2.1
  • benoit
    benoit Rennes, France

    Note that we don't officially support this Red Hat distribution (see this page for a list of supported platforms). It looks like epoll is not supported on your system. You should recompile Ice from sources to use poll() instead. Edit the config/Make.rules.Linux file from your Ice source distribution and add -DICE_NO_EPOLL to the CXXFLAGS macro definition at line 86:
       CXXFLAGS		= $(CXXARCHFLAGS) -ftemplate-depth-128 -Wall -D_REENTRANT -DICE_NO_EPOLL

    Once you rebuilt Ice following the instructions from INSTALL.LINUX, you can run the test suite with "make test" to make sure it works.

  • Icegridnode issue

    Hi Benoit,

    The issue has been resolved with the CXXFLAG. Thanks very much.
    All tests run ok.

    Also, noted the platform support disclaimer.

    I found two issues in the source files while doing make on Freeze:

    1. SharedDbEnv.cpp uses a constant DB_LOG_AUTOREMOVE which is not declared
    2. Util.cpp uses a constant DB_BUFFER_SMALL which is not declared

    Can the constants be removed from the source distribution? I have commented out their references in order to build successfully.

  • benoit
    benoit Rennes, France
    Which BerkeleyDB version do you use?

    I recommend to install and use the BerkeleyDB version supported by Ice 3.2.1: BerkeleyDB 4.5.20. You can download it from the Oracle web site or from the "Source Code for Third-Party Software" section of our download page.

    Once installed, you can either set DB_HOME in your envionment or edit config/Make.rules to specify the location of the BerkeleyDB 4.5.20 installation before building Ice. See INSTALL.LINUX for more information.