Why ACE?
ACE Documentation
ACE Kits
Year 2000
About Us


This page contains Frequently Asked Questions (FAQs) about ACE in general, about concerns commonly voiced about Open Source Software, and about problems which can arise. If you are looking for a list of known defects and enhancement requests, please click here.

  1. General
  2. Open Source Software
  3. ACE Build Issues
  4. ACE Programming Issues
  5. Platform-specific Issues - AIX
  6. Platform-specific Issues - HP-UX 10.20
  7. Platform-specific Issues - HP-UX 11.00
  8. Platform-specific Issues - Linux
  9. Platform-specific Issues - Windows NT



      What is ACE, and where did it come from?

      1. ACE is short for ADAPTIVE Communication Environment. ADAPTIVE is an acronym for something that probably only Doug Schmidt remembers. Dr. Schmidt wrote ACE as part of his doctoral research to solve many of the problems we all deal with every day but have gotten too used to. ACE is now the basis and vehicle for continuing research efforts in high-performance distributed object systems, and enjoys a growing user base in the commercial world as well.

      How do I get ACE, and is it really free?

      1. Yes, it really is free, in both senses of the word. Please visit the ACE Kits page for complete information on downloading ACE.

      What platforms has ACE been ported to?

      1. ACE has been ported to a wide variety of platforms from handheld and embedded systems to supercomputers. The current list is below. Platforms that are in bold are supported by Riverace. Please see the ACE Support page for complete details on supported platforms and support services.  ACE has been ported to:
        • AIX (4.3 and 5L)
        • Chorus
        • Cray
        • Digital UNIX (4.0 and 5.0)
        • FreeBSD
        • HP-UX (10.20 and 11.x)
        • IRIX (6.x)
        • Linux (on x86, PPC, Alpha hardware)
        • LynxOS
        • MVS Open Edition
        • NetBSD
        • PharLap TNT Embedded ToolSuite (9.1)
        • pSoS
        • QNX Neutrino (2.0)
        • SCO Openserver
        • Solaris (2.5, 2.6, 7, and 8)
        • SunOS (4.x)
        • Tandem
        • Unixware
        • VxWorks
        • Windows (NT4 [x86 and Alpha], Win 2000, 95, 98, CE).
  1. Open Source Software
    1. Won't I have to give away my source code if I use ACE?

      1. No. ACE is not governed by the GNU Public License (GPL). It has its own usage and copying agreement. You can find it in the ACE source kit, in the top level directory, in a file named COPYING. The file in the kit is the one which governs your use of ACE, but you can also read a copy of it here. In short, you can use ACE for whatever you want - just don't try to claim ownership or copyright of it.

    ACE Build Issues

      How do I build ACE on <my platform>?

      1. The most up to date information, in general, on how to build ACE on the platforms it has been ported to is in the file ACE-INSTALL.html, in the top-level directory of the ACE source kit. A recent copy of that file is provided here, for your convenience. NOTE - the ACE-INSTALL.html file is written from the point of view of the Center for Distributed Object Computing at Washington University and some terms conflict with terms Riverace uses, such as "supported".

      Why Doesn't Autoconfigure Work?

      1. Autoconfigure support is partially implermented starting in ACE 5.1, but is not completed. If you wish to have Riverace complete this work for you, please contact Steve Huston at Riverace and inquire about custom development services.

    ACE Programming Issues

      Where can I get documentation?

      1. The man pages for ACE can be reached via the Documentation page. There is also a nice set of tutorials in the 'docs/tutorials' directory of each ACE kit, and there are some other very useful HTML format documents in the 'docs' directory. You can also read a wide variety of papers addressing ACE in detail at Doug Schmidt's ACE site.

    Platform-specific Issues - AIX

      What patches should I use with AIX 4.2.1 and C Set++ 3.1.4?

      1. The following table lists the recommend patches for building and running ACE on AIX 4.2.1 using C Set ++ for AIX. These are not the latest patches, and it is possible that there are newer ones that work at least as good. There are newer ones that do not work, so don't commit them until after you've tested everything. Riverace Corporation makes this list available as a service to its users, and does not warrant the patches in any way. Talk to IBM about that. All of these patches are available from the RS/6000 Support Center. Riverace recommends using the FixDist utility, available from the above-mentioned site, to manage patches.


        C for AIX and C Set ++ for AIX


        C for AIX Compiler


        C Set ++ for AIX Compiler


        C Set ++ for AIX Heapview


        C Set ++ for AIX Compiler


        C for AIX Preprocessor


        C Set ++ for AIX Application

      Why Does ACE Fail to Link: ld: 0711-317 ERROR: Undefined symbol: .__CurrentException

      1. When building on AIX 4.2.1, using the xlC V3.1.4 compiler, you may get the following error when building the ACE shared library:
        makeC++SharedLib_r -p 0 -o libACE.so -bI:/lib/pse.exp -L/usr/local/src/ACE_wrappers/ace -L./ -ltli_r -ldl libACE.a
        ld: 0711-317 ERROR: Undefined symbol: .__CurrentException
        ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
        make: *** [libACE.so] Error 8

        To fix this error, you need a patch to the supporting xlC related libraries. To obtain this patch, go to the IBM public patch website and retrieve the patch PTF U453697, or its successor, for xlC.
        You may wish to retrieve this patch with the fixdist tool, also available at the website. Installation of this patch will install patched versions of the C++ libraries, which correctly define this symbol.

        Many thanks to Susan Liebeskind for writing up the details on how to solve this problem.
  2. Platform-specific Issues - HP-UX 10.20
    1. How Can I Use Threads on HP-UX 10.20?

      1. If you wish to use threads when building ACE (this is the default setting in config-hpux-10.x.h) you must install the DCE-CoreTools.DCE-BPRG package from the HP-UX Core OS CD before building ACE, or using the pre-built, installable ACE kit. The installation procedure for the pre-built kit will warn you that the corequisite is missing.

      Memory Leak Using Threads and std::string

      1. On HP-UX 10.20 and compiler version aC++ A.01.18, there is a memory leak in the compiler triggered by the use of the string class from libstd together with threads. To work around this problem, modify your <string> header file as follows:
        Change the header file from:
             register string_ref_type *p = pref();
           p->~string_ref();     // must use two steps and "p" temp

        This is not a problem on aC++ versions other than A.01.18, and is not a problem on HP-UX 11.00.

      Recommended Patch List for HP-UX 10.20 Using aC++

      1. The following table lists the recommend patches for building and running ACE on HP-UX 10.20 using aC++. Riverace Corporation makes this list available as a service to its users, and does not warrant the patches in any way. Talk to HP about that. All of these patches (or their successors) are available from the HP Electronic Support Center.

        PHKL_8693 (number depends on your OS and hardware)

        s700 10.20 sys/time.h fix for select(2)/C++ defects


        s700 10.20 SystemV semaphores cumulative patch


        s700_800 10.20 libc cumulative header file patch


        s700_800 10.01-[12]0 aC++ dld.sl(5) performance fix


        s700_800 10.10-20 UCOMP/LIBMP patch

        The recommended compiler version is A.01.21. Any aC++ version from A.01.07 (located on the December 1997 Applications CD) and later should also work fine. The issues with A.01.09 and A.01.12 not working with ACE were resolved at ACE 4.6.

      Why does aC++ warn of suppressed future errors when compiling ACE?

      1. A number of the HP-UX-supplied header files trigger future errors from aC++. The ACE build procedure suppresses those messages, but the compiler issues a diagnostic message to say they were suppressed. It is safe to ignore them.

      Does ACE work with the older HP CC compiler?

      1. Yes, it should. However, Riverace does not support that compiler with ACE, so it is up to the ACE user community to verify that it still works on new versions of ACE.
  3. Platform-specific Issues - HP-UX 11.00
    1. Recommended Patch List for HP-UX 11.00 Using aC++

      1. The following table lists the recommend patches for building and running ACE on HP-UX 11.00 using aC++. Riverace Corporation makes this list available as a service to its users, and does not warrant the patches in any way. Talk to HP about that. All of these patches (or their successors) are available from the HP Electronic Support Center.


        s700_800 11.00 POSIX semaphore deadlock/hang


        s700_800 11.00 cumulative ARPA Transport patch

        The recommended compiler version is A.03.10 (or later). Any aC++ version from A.03.04 and later should also work fine at ACE 4.6 and later.

      Build fails with Error 2

      1. Sometimes a build step (compile or link) will fail without any compiler or linker diagnostics, and a simple message: Error 2. If this happens, it is likely that you need to increase the kernel parameter maxdsiz. A value of 134217728 (0x08000000) has been found to work well.

      Compile fails on HP-UX 11.00 with Error 129 in /usr/include/sys/xti.h

      1. On HP-UX 11.00, there is a mismatch between macro definitions in the files /usr/include/sys/xti.h and /usr/include/netinet/tcp.h which will yield the following errors compiling ACE:
        /opt/aCC/bin/aCC -g -D_THREAD_SAFE -D_REENTRANT -DHPUX_VERS=1100   -I.
        -I/usr/ACE/ACE_wrappers  -c +Z -o .shobj/Log_Msg.o Log_Msg.cpp
        Error 129: "/usr/include/sys/xti.h", line 488 # Redefinition of macro
        'TCP_NODELAY' differs from previous definition at ["/usr/include/netinet/tcp.h", line 76].
           #define TCP_NODELAY    0x1    /* don't delay packets to coalesce*/
        Error 129: "/usr/include/sys/xti.h", line 489 # Redefinition of macro
        'TCP_MAXSEG' differs from previous definition at ["/usr/include/netinet/tcp.h", line 77].
           #define TCP_MAXSEG     0x2    /* get maximum segment size     */
        If you get this message, upgrade to ACE 4.6 or later, as it has a workaround for this problem in the HP-UX header files.

      Missing signals during accept(), or tests/Conn_Test hangs

      1. If you have a problem with your program missing a signal, especially during an accept() call (this manifests itself in tests/Conn_Test as hanging the parent test process after the tests have been completed) you need to get patch PHNE_13405 from Hewlett-Packard.

      Compiler warnings about dlopen during 64-bit compile

      1. If you are compiling ACE in 64-bit mode on HP-UX 11, you may see a warning similar to this:
        Error (future) 212: "/opt/ace/ACE_wrappers/ace/OS.i", line 5722 #
        Argument type
        'const char *' does not match expected parameter type 'char *'.

             ACE_OSCALL (::dlopen (filename, mode), void *, 0, handle);

        Ignore it... it's an inconsistency between the HP-UX header file and the man page for dlopen. It's been reported to HP and expect it to be fixed in the future. Hopefully before the future error turns into a real one...

    Platform-specific Issues - Linux

      What config.h file and platform_macros.GNU file should I use on Linux?

      1. On ACE versions prior to 5.2, use config-linux-lxpthreads.h and platform_linux_lxpthread.GNU. Starting with ACE 5.2, the correct files are config-linux.h and platform_linux.GNU, respectively.

    Platform-specific Issues - Windows NT

      How Do I Build ACE on Windows NT 4.0 and Run on Windows 95/98?

      1. To build the ACE library or an ACE application on Windows NT and be able to execute the resulting program(s) on Windows 95 or 98, be sure that your config.h file includes the line: #define ACE_HAS_WINNT4 0
        before including config-win32.h.

      Using ACE in Non-console situations

      1. ACE comes "out of the box" ready to build for use in console programs or NT Services. In order to use ACE successfully in other situations, such as an MFC program or indirectly in a DLL you are building, you must take care to properly initialize ACE at startup time and close it down at rundown time. You can do that in the following ways:
        • MFC Program: In an MFC program, the appropriate way to properly initialize ACE is in functions that your CWinApp-derived main application class overrides. In your InitInstance function, call ACE::init() and in your ExitInstance function, call ACE::fini(). The $ACE_ROOT/tests/ACE_Init_Test.cpp has an example of this.
          In addition, you should also add #define ACE_HAS_MFC to your config.h file before building ACE. (On ACE 5.0 there is a workspace project setting to build an MFC version, so you don't need to do anything special except build that version).
        • Your own DLL: The best way to insure ACE's proper initialization and shutdown is to add exported functions to your DLL which its users must call to initialize it and shut it down. In these functions, call ACE::init() and ACE::fini, respectively. It is inadvisable to call ACE::init() and ACE::fini() from your DLL's DllMain function, though in limited cases where your DLL and the programs using your DLL are exceedingly well-behaved, you may be able to get away with it.
[Home] [Why ACE?] [ACE Documentation] [ACE Kits] [Support] [Year 2000] [FAQ] [Bookstore] [About Us] [Contact]

    Copyright 2004 Riverace Corporation. All Rights Reserved.