Issued:
2012-06-20
Updated:
2012-06-20

RHBA-2012:0777 - corosync bug fix and enhancement update


Synopsis

corosync bug fix and enhancement update

Type/Severity

Bug Fix Advisory

Topic

Updated corosync packages that fix several bugs and add one enhancement are now available for Red Hat Enterprise Linux 6.

Description

The corosync packages provide the Corosync Cluster Engine and the C language APIs for Red Hat Enterprise Linux cluster software.

Bug Fixes:

  • The mainconfig module passed an incorrect string pointer to the function that opens the corosync log file. If the path to the file (in cluster.conf) contained a non-existing directory, an incorrect error message was returned stating that there was a configuration file error. The correct error message is now returned informing the user that the log file cannot be created. (BZ#741455)

  • The coroipcc library did not delete temporary buffers used for Inter-Process Communication (IPC) connections that are stored in the /dev/shm shared-memory file system. The /dev/shm memory resources became fully used and caused a Denial of Service event. The library has been modified so that applications delete temporary buffers if the buffers were not deleted by the corosync server. The /dev/shm system is now no longer cluttered with needless data. (BZ#797192)

  • The range condition for the update_aru() function could cause incorrect checking of message IDs. The corosync utility entered the "FAILED TO RECEIVE" state and failed to receive multicast packets. The range value in the update_aru() function is no longer checked and the check is now performed using the fail_to_recv_const constant. (BZ#758209)

  • If the corosync-notifyd daemon was running for a long time, the corosync process consumed an excessive amount of memory. This happened because the corosync-notifyd daemon failed to indicate that the no-longer used corosync objects were removed, resulting in memory leaks. The corosync-notifyd daemon has been fixed and the corosync memory usage no longer increases if corosync-notifyd is running for long periods of time. (BZ#752159)

  • When a large cluster was booted or multiple corosync instances started at the same time, the CPG (Closed Process Group) events were not sent to the user. Therefore, nodes were incorrectly detected as no longer available, or as leaving and re-joining the cluster. The CPG service now checks the exit code in such scenarios properly and the CPG events are sent to users as expected. (BZ#743813)

  • The OpenAIS EVT (Eventing) service sometimes caused deadlocks in corosync between the timer and serialize locks. The order of locking has been modified and the bug has been fixed. (BZ#743815)

  • When corosync became overloaded, IPC messages could be lost without any notification. This happened because some services did not handle the error code returned by the totem_mcast() function. Applications that use IPC now handle the inability to send IPC messages properly and try sending the messages again. (BZ#743812)

  • If both the corosync and cman RPM packages were installed on one system, the RPM verification process failed. This happened because both packages own the same directory but apply different rights to it. Now, the RPM packages have the same rights and the RPM verification no longer fails. (BZ#747628)

  • corosync consumed excessive memory because the getaddrinfo() function leaked memory. The memory is now freed using the freeadrrinfo() function and getaddrinfo() no longer leaks memory. (BZ#752951)

  • It was not possible to activate or deactivate debug logs at runtime due to memory corruption in the objdb structure. The debug logging can now be activated or deactivated on runtime, for example by the "corosync-objctl -w logging.debug=off" command. (BZ#773720)

Enhancement:

  • Each IPC connection uses 48 K in the stack. Previously, multi-threading applications with reduced stack size did not work correctly, which resulted in excessive memory usage. Temporary memory resources in a heap are now allocated to the IPC connections so that multi-threading applications no longer need to justify IPC connections' stack size. (BZ#743810)

All users of corosync are advised to upgrade to these updated packages, which fix these bugs and add this enhancement.

Solution

Before applying this update, make sure all previously-released errata relevant to your system have been applied.

This update is available via the Red Hat Network. Details on how to use the Red Hat Network to apply this update are available at https://access.redhat.com/knowledge/articles/11258

Affected Products

ProductVersionArch
Red Hat Enterprise Linux Resilient Storage for x86_646x86_64
Red Hat Enterprise Linux Resilient Storage for x86_646i386
Red Hat Enterprise Linux Resilient Storage (for RHEL Server) from RHUI6x86_64
Red Hat Enterprise Linux Resilient Storage (for RHEL Server) from RHUI6i386
Red Hat Enterprise Linux High Availability for x86_646x86_64
Red Hat Enterprise Linux High Availability for x86_646i386
Red Hat Enterprise Linux High Availability (for RHEL Server) from RHUI6x86_64
Red Hat Enterprise Linux High Availability (for RHEL Server) from RHUI6i386

Updated Packages

  • corosynclib-1.4.1-7.el6.x86_64.rpm
  • corosync-1.4.1-7.el6.src.rpm
  • corosync-debuginfo-1.4.1-7.el6.x86_64.rpm
  • corosynclib-devel-1.4.1-7.el6.x86_64.rpm
  • corosync-1.4.1-7.el6.i686.rpm
  • corosync-debuginfo-1.4.1-7.el6.i686.rpm
  • corosynclib-devel-1.4.1-7.el6.i686.rpm
  • corosynclib-1.4.1-7.el6.i686.rpm
  • corosync-1.4.1-7.el6.x86_64.rpm

Fixes

CVEs

(none)

References

(none)


Additional information