IBM Informix utilities fail to load due to how shared memory segments and libraries are allocated

Solution Verified - Updated -

Issue

  • Some Informix utilities commands can fail, for example these errors might be seen after running some of the utilities (eg. onstat, ontape) or on the logs:

    shmat: [22]: operating system error
    Client could not attach server shared memory segment, use IFX_XFER_SHMBASE.
    onstat: Cannot attach to shared memory. errno = 22
    
  • After upgrading RHEL or RHEL library packages, or on a new install after a day, it was noticed that the way the Informix database had its memory allocated changed (different memory address ranges for shared memory area segments and libraries). Looking at memory address ranges where libraries are being loaded for any binary, the ranges are now different.

    The /proc/<pid>/maps file shows that system libraries are loaded in a low address, for example you can see this from a test binary in a system which creates similar shared memory segments as setup by Informix:

    ...
    44000000-1044000000 rw-s 00000000 00:09 4456453                          /SYSV52bd4801 (deleted)
    1044000000-2044000000 rw-s 00000000 00:09 4489222                        /SYSV52bd4802 (deleted)
    2044000000-26ae000000 rw-s 00000000 00:09 4521991                        /SYSV52bd4803 (deleted)
    26ae000000-36ae000000 rw-s 00000000 00:09 4554760                        /SYSV52bd4804 (deleted) <-- sysv shared mem segment
    3c1d200000-3c1d21c000 r-xp 00000000 fc:00 2815298                        /lib64/ld-2.5.so        <--- glibc loads in a "low" address,
    3c1d41c000-3c1d41d000 r--p 0001c000 fc:00 2815298                        /lib64/ld-2.5.so             near shared memory segment range,
    3c1d41d000-3c1d41e000 rw-p 0001d000 fc:00 2815298                        /lib64/ld-2.5.so             which almost conflict with shmat
    3c1d600000-3c1d74f000 r-xp 00000000 fc:00 2815300                        /lib64/libc-2.5.so           shmem mappings
    

    Depending on the size of the Informix database and shmmax parameters etc. in use, the shared memory segments created by Informix may conflict with address ranges used by system libraries (glibc etc.), leading to problems with informix utilities etc.

Environment

  • Red Hat Enterprise Linux 5 (or any version for the first issue)
  • IBM Informix

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In