Bug Fix Advisory glibc bug fix and enhancement update

Advisory: RHBA-2009:1415-1
Type: Bug Fix Advisory
Severity: N/A
Issued on: 2009-09-02
Last updated on: 2009-09-02
Affected Products: Red Hat Enterprise Linux (v. 5 server)
Red Hat Enterprise Linux Desktop (v. 5 client)
OVAL: N/A

Details

Updated glibc packages that fix various bugs and implement a technology
preview of per-thread memory pooling are now available.

The glibc packages contain the standard C libraries used by multiple
programs on the system. These packages contains the standard C and the
standard math libraries. Without these two libraries, the Linux system
cannot function properly.

This update applies the following bug fixes:

* A strcmp() call in the setlocale() function could cause a segmentation
fault (SIGSEGV) to occur in multi-threaded applications. This was caused by
an improper free() call, which freed _nl_global_locale.__names[category]
around the same time strcmp() tried to access it. As such, it was possible
for strcmp() to access _nl_global_locale.__names[category] after it was
freed (i.e. no longer available), resulting in a segmentation fault. To fix
this, this update adds a return() call to make
_nl_global_locale.__names[category] available when strcmp() accesses it.
(BZ#455580)

* The getifaddrs() function listed invalid IPv6 interface names for
InfiniBand devices. This was because InfiniBand names are 20 bytes long,
while glibc only prepares an 8-byte string array (i.e. sll_addr) for
interface names. When getifaddrs() copied the 20-byte string into sll_addr,
the result was a corrupted, invalid interface name. To prevent this, this
update expands the field size from 8 bytes to 24 bytes, allowing
getifaddrs() to copy 20-byte InfiniBand names to the sll_addr string array.
(BZ#463252)

* A previous update to glibc resulted in a performance regression with
mutex() calls. This was caused by the addition of mutual exclusion (mutex)
types tested by pthread_mutex_lock() and pthread_mutex_unlock(). To
alleviate the problem, this update optimizes the pthread_mutex_lock() and
pthread_mutex_unlock() for the most common mutex types, which improves the
performance of mutex() calls in most common user scenarios. (BZ#467316)

* _dl_runtime_profile on the IBM System z incorrectly used the instruction
lr to remove stack frames, which could result in corrupted stacks in rare
cases. With this update, _dl_runtime_profile uses the correct instruction
(lgr) to remove stack frames instead. (BZ#470300)

* An improper break statement in the getgrouplist() function caused
searches to abort prematurely. This resulted in a bug that prevented
getgrouplist() from retrieving group definitions from LDAP. As such,
applications that used getgrouplist() to authenticate group details could
not honor supplementary group credentials defined in LDAP. This update
removes the improper break statement in getgrouplist(), enabling
getgrouplist() to retrieve group definitions from LDAP. (BZ#470768)

* This update also includes the ability to enable (and configure)
per-thread memory pools. This capability enables higher scalability across
many sockets and cores, and is included in this release as a technology
preview. The environmental variable MALLOC_PER_THREAD=1 enables per-thread
memory pools, while MALLOC_ARENA_MAX and MALLOC_ARENA_TEST control the
amount of additional memory used for the memory pools (if any).
MALLOC_ARENA_MAX sets a maximum number of memory pools used, regardless of
the number of cores; MALLOC_ARENA_TEST specifies that the number of cores
should be tested once it reaches a set value. Note that once per-thread
memory pooling becomes fully supported, it will also become the default
behavior; this will render the MALLOC_PER_THREAD option obsolete then.
(BZ#494758)

This errata contains several other enhancements and bug fixes. For a
complete list of glibc fixes applied by this errata, please refer to the
glibc errata entry in the Red Hat Enterprise Linux 5.4 Technical Notes
available at

http://redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/
Technical_Notes/glibc.html

Users of glibc are advised to upgrade to this version.


Solution

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

This update is available via Red Hat Network. Details on how to use
the Red Hat Network to apply this update are available at
http://kbase.redhat.com/faq/docs/DOC-11259

Updated packages

Red Hat Enterprise Linux (v. 5 server)

SRPMS:
glibc-2.5-42.src.rpm     50446c80a45c52bbdfc94d80e6c84bdd
 
IA-32:
glibc-2.5-42.i386.rpm     e05534bd6d6bff3039f0356c459f2f0d
glibc-2.5-42.i686.rpm     5cb4f83d2241deb5a0627099903b675c
glibc-common-2.5-42.i386.rpm     652da21bda7d4424873f19a967956bea
glibc-devel-2.5-42.i386.rpm     7fe804c84be7d2beeee29ffc8b844d4b
glibc-headers-2.5-42.i386.rpm     61cefdd44e30f1386c8bb55fc127c432
glibc-utils-2.5-42.i386.rpm     bad8a789ca1da1eb54e22a133a9938ff
nscd-2.5-42.i386.rpm     c1e3a7cac69fb91ce8d8c8cd2d177ffb
 
IA-64:
glibc-2.5-42.i686.rpm     5cb4f83d2241deb5a0627099903b675c
glibc-2.5-42.ia64.rpm     40d367f384bfd2db91dae9d0bc03392d
glibc-common-2.5-42.ia64.rpm     ab3542ee3bad66f845d01e199f10075c
glibc-devel-2.5-42.ia64.rpm     26894b11be13f16e2e054c5e1819fc96
glibc-headers-2.5-42.ia64.rpm     4515a8b72cfade4fe3e8985e1ed69e90
glibc-utils-2.5-42.ia64.rpm     aefc97e34ccf3e2cd01380780d7d0d14
nscd-2.5-42.ia64.rpm     958d9b1e3dd20f2f87f6e99cf5563e6c
 
PPC:
glibc-2.5-42.ppc.rpm     9ac4a5b4b843ddef8094d73b33151e39
glibc-2.5-42.ppc64.rpm     935e7a9c12084c4dcac64dcb0cd0c67c
glibc-common-2.5-42.ppc.rpm     ff79354b234bdc32fafeea5b4ab1abb4
glibc-devel-2.5-42.ppc.rpm     50775dbbb6624ba1b2c81bdf07b6a688
glibc-devel-2.5-42.ppc64.rpm     9bf0a2ccb0f30f8f539c4ed2310eee42
glibc-headers-2.5-42.ppc.rpm     ab52ee610f3ed92881104d62acdb63ae
glibc-utils-2.5-42.ppc.rpm     c69e799d974af33b1ee6911f02cee0c8
nscd-2.5-42.ppc.rpm     a8d652a004ad8317e3d9d7eb53c472fa
 
s390x:
glibc-2.5-42.s390.rpm     9eb3b677ed87472c98aa59f752552bd7
glibc-2.5-42.s390x.rpm     3ddd85b308c6f143bc8f251ea75719bc
glibc-common-2.5-42.s390x.rpm     7d9ab6b3ad5632c32eb4127e2b5b1e50
glibc-devel-2.5-42.s390.rpm     fe37a803b95f24568068535217efd45f
glibc-devel-2.5-42.s390x.rpm     c86e2fbdb4ccc29087f184f625f6c3da
glibc-headers-2.5-42.s390x.rpm     90f818da5f98243301701115ea662594
glibc-utils-2.5-42.s390x.rpm     0869b3eaf4c1d246e78bfe7cbd48b2d2
nscd-2.5-42.s390x.rpm     08805290b06316e065558a86b9ef3a79
 
x86_64:
glibc-2.5-42.i686.rpm     5cb4f83d2241deb5a0627099903b675c
glibc-2.5-42.x86_64.rpm     597a888ae6af04c5b426a2f7d78a1281
glibc-common-2.5-42.x86_64.rpm     b8a8037559f2717fc061f37e2138f0a5
glibc-devel-2.5-42.i386.rpm     7fe804c84be7d2beeee29ffc8b844d4b
glibc-devel-2.5-42.x86_64.rpm     ab7daa4ede1f6cc043f1d37a7720e4fb
glibc-headers-2.5-42.x86_64.rpm     80bf5c319973ab3a67ef95190b074516
glibc-utils-2.5-42.x86_64.rpm     e347e05a1837ed340d8bac63b8fe93ef
nscd-2.5-42.x86_64.rpm     71de6ead23e6dff052d1119092427912
 
Red Hat Enterprise Linux Desktop (v. 5 client)

SRPMS:
glibc-2.5-42.src.rpm     50446c80a45c52bbdfc94d80e6c84bdd
 
IA-32:
glibc-2.5-42.i386.rpm     e05534bd6d6bff3039f0356c459f2f0d
glibc-2.5-42.i686.rpm     5cb4f83d2241deb5a0627099903b675c
glibc-common-2.5-42.i386.rpm     652da21bda7d4424873f19a967956bea
glibc-devel-2.5-42.i386.rpm     7fe804c84be7d2beeee29ffc8b844d4b
glibc-headers-2.5-42.i386.rpm     61cefdd44e30f1386c8bb55fc127c432
glibc-utils-2.5-42.i386.rpm     bad8a789ca1da1eb54e22a133a9938ff
nscd-2.5-42.i386.rpm     c1e3a7cac69fb91ce8d8c8cd2d177ffb
 
x86_64:
glibc-2.5-42.i686.rpm     5cb4f83d2241deb5a0627099903b675c
glibc-2.5-42.x86_64.rpm     597a888ae6af04c5b426a2f7d78a1281
glibc-common-2.5-42.x86_64.rpm     b8a8037559f2717fc061f37e2138f0a5
glibc-devel-2.5-42.i386.rpm     7fe804c84be7d2beeee29ffc8b844d4b
glibc-devel-2.5-42.x86_64.rpm     ab7daa4ede1f6cc043f1d37a7720e4fb
glibc-headers-2.5-42.x86_64.rpm     80bf5c319973ab3a67ef95190b074516
glibc-utils-2.5-42.x86_64.rpm     e347e05a1837ed340d8bac63b8fe93ef
nscd-2.5-42.x86_64.rpm     71de6ead23e6dff052d1119092427912
 
(The unlinked packages above are only available from the Red Hat Network)

Bugs fixed (see bugzilla for more information)

464918 - [RHEL5] nscd segfaults on mail servers which do lots of host lookups for various DNS-based blacklists
475332 - [RHEL5] setutent_file returns with permission failure
477705 - __reclaim_stacks deadlock with first attempt at fixing O_DIRECT vs fork bug
478499 - [RHEL5] realloc doesn't fully copy the old data
483636 - nscd segfaults under heavy load
484082 - [RHEL5] getent networks splitting 'aliases' with commas and not spaces
490010 - [RHEL5] nscd in paranoia mode restarts with process name 'exe'
490821 - [RHEL5] Optimizing Causes Incorrect "errno"
494849 - [RHEL5] Wrong order of the addresses in the routing header returned by use inet6_rth_reverse()
494850 - [RHEL5] inet6_rth_add() returns 0 even when the routing header does not have enough space to store an address
495955 - [RHEL5] glibc doesn't use private futex system calls for pthread_mutex calls
504704 - dlfcn.h fails pedantic tests
509853 - glibc: fopen mode 'x' ignored in some cases [RHEL-5]


References


Keywords

glibc


These packages are GPG signed by Red Hat for security. Our key and details on how to verify the signature are available from:
https://www.redhat.com/security/team/key/#package

The Red Hat security contact is secalert@redhat.com. More contact details at http://www.redhat.com/security/team/contact/