Este conteúdo não está disponível no idioma selecionado.
Chapter 6. Compiler and Tools
tcsh
no longer in an inconsistent state after a command interruption
Interrupting the
eval sleep 10
command left the tcsh
shell in an incosistent state. Consequently, it was necessary to press the Ctrl+D key combination twice to successfully exit the shell. With this update, tcsh
correctly exits after pressing Ctrl+D once. (BZ#1219923)
Correct parsing of the if
statement in tcsh
The
tcsh
shell failed to correctly parse the if
statements if there was no space before the then
keyword. Consequently, incorrect branches of the if
statement were processed, which led to execution of incorrect sections of the code and misbehavior. The tcsh
shell has been fixed to correctly process the source code when spaces before the then
keyword are missing. (BZ#1231097)
RELRO protection now properly applied when requested
Previously, binary files started by the system loader would, in some cases, lack the Relocation Read-Only (RELRO) protection even though this had been explicitly requested when the application was built. This was due to a miscommunication between the static linker and the system loader. The underlying source code of the linker has been adjusted to ensure that it makes it possible for the loader to apply the RELRO protection, thus restoring the security feature for applications. Applications and all dependent object files, archives, and libraries built with a previous version of binutils should be rebuilt to correct this defect. (BZ#1227839)
Escape sequences correctly interpreted by tcsh
Previously, the
tcsh
command-language interpreter incorrectly consumed certain escape sequences, which start with the backslash \
character. This update fixes the interpretation of the escape sequences, and tcsh
now returns the same results as in Red Hat Enterprise Linux 5. (BZ#1301857)
OpenMP heuristics adjusted for higher performance on multi-CPU systems
Heuristics used by the GNU OpenMP runtime (
libgomp
) to determine latency-reduction measures have been adjusted to take into account CPU affinity on multiprocessor systems and to use a lower spin count. As a result, programs that appeared deadlocked or ran very slowly due to resource starvation now run considerably faster. (BZ#1229852)
Reduced lock contention and increased performance for threaded applications calling localtime_r()
Lock contention in the localtime_r() function previously decreased performance for threaded applications that needed to call this function frequently. The lock acquisition in the
glibc
library's internal routines has been reorganized to decrease the possibility of lock contention. (BZ#1244585)
The make
utility no longer terminates unexpectedly when processing $$eval
commands or the $(shell)
construct.
Due to bugs in the make package, the
make
utility sometimes terminated unexpectedly when processing files which contained $$eval
commands or $(shell)
processes. These bugs have been fixed, and make
no longer crashes in these situations. (BZ#835483)
Parallel builds no longer terminate unexpectedly
Previously, a bug caused the
make
utility to display an error message and terminate unexpectedly when executing parallel builds. This has now been fixed, and parallel builds no longer crash due to this bug. (BZ#861189)
Parallel builds no longer terminate unexpectedly due to $(eval)
constructs
Previously, a bug caused the
make
utility to terminate unexpectedly when executing parallel builds containing $(eval)
constructs. This has now been fixed, and parallel builds no longer crash due to this bug. (BZ#1093149)
Multithreaded applications no longer crash when calling dprintf() and fork() concurrently
Multithreaded applications that use the dprintf() and fork()
glibc
functions concurrently could previously terminate unexpectedly with a segmentation fault. With this update, the fork() implementation has been fixed to ignore temporary streams created by dprintf(), and the described problem no longer occurs. (BZ#1275384)
Core C library (glibc) enhanced to increase malloc() scalability
A defect in the implementation of the
malloc()
function could result in the unnecessary serialization of memory allocation requests across threads. This update fixes the problem and substantially increases the concurrent throughput of allocation requests for applications that frequently create and destroy threads. (BZ#1264189)
Improved documentation in /etc/mcelog/mcelog.conf
The default
mcelog
configuration file found at /etc/mcelog/mcelog.conf
now contains better descriptions for several available options, such as mem-ce-error-log
. (BZ#1170580)
The dynamic linker (ld.so) does not fail anymore when an audit module provides a DSO path
Previously, when an audit module provided an alternate DSO (dynamic shared object) path, the
ld.so
dynamic linker terminated unexpectedly with a segmentation fault. This update addresses the bug, and now the dynamic linker keeps track of the original DSO path for future reference and does not fail anymore. (BZ#1211098)
glibc and tzdata updates no longer replace /etc/localtime
symbolic links
Previously, on systems where the
/etc/localtime
file was a symbolic link, updates of the glibc and tzdata packages replaced the link with the time-zone file defined in the /etc/sysconfig/clock
configuration file. A patch has been applied to address the problem and /etc/localtime
as a symbolic link is no longer replaced. For optimum compatibility, it is recommended not to modify /etc/localtime
directly. Instead, edit the /etc/sysconfig/clock
configuration file and execute the tzdata-update
command afterwards. (BZ#1200555)
glibc
POSIX real-time support no longer fails on large TLS data
A defect in the POSIX real-time support in the
glibc
library caused asynchronous I/O or certain timer API calls to fail in the presence of large thread-local storage (TLS) data. The librt
library has been fixed, and the impacted APIs no longer return error messages when large TLS data is present in applications. (BZ#1299319)
iconv
no longer adds a redundant shift sequence
Previously, the
iconv
utility sometimes mishandled character conversion for the IBM930, IBM933, IBM935, IBM937, and IBM939 character sets. Consequently, a redundant shift sequence was included in the output of iconv
. The generated non-conforming output could result in an inability to read the output data. The character conversion routines have been corrected and no longer output a redundant shift sequence. (BZ#1293914)
/etc/gai.conf
no longer listed as belonging to the glibc-common package
Previously, the
/etc/gai.conf
configuration file could be flagged as modified when the rpm -V
command was used to check the glibc-common package, even though that package did not own that file. This update removes the erroneous file entry from glibc-common. As a result rpm -V glibc-common
no longer lists the /etc/gai.conf
configuration file as modified. (BZ#1223818)
Naming convention for java-1.8.0-openjdk installation made consistent
Previously, the automatically generated name for the installation directory for the java-1.8.0-openjdk package was not consistent with installation directory names for the java-1.6.0-openjdk and java-1.7.0-openjdk packages. As a consequence, applications and automated tools that expected a consistent Java naming pattern failed when interacting with java-1.8.0-openjdk. With this update, java-1.8.0-openjdk installation directory follows the same pattern as the previous versions, which prevents the described problem. Note that due to the changes in the path structure, it is now impossible to revert to a version of java-1.8.0-openjdk prior to this update. (BZ#1217177)
LDAP bind passwords are properly obfuscated
In some cases, it was previously possible for the
sosreport
utility to capture LDAP bind credentials in plain text. This problem has been fixed, and LDAP bind passwords are now obfuscated in sosreport
as expected. (BZ#1227462)
sosreport
no longer times out when ipa-replica-image
is used
Previously, using the
ipa-replica-image
command caused the sosreport
utility to take longer to execute and in some cases to time out. In addition, not all the information needed to troubleshoot certification-related problems was captured in sosreport
. This update ensures that sufficient certification-related information is collected by sosreport
and removes ipa-replica-image
, which prevents the described timeouts from occurring. (BZ#1203947)
tar
now correctly sets ACL when --acls
is used
Previously, when a tar file was extracted using the
--acls
option, the extracted files inherited the default Access Control Lists (ACL) from the parent directory. With this update, when --acls
is used, tar
extracts all files and directories with the same ACLs that are set in the archive. (BZ#1220891)
tar
correctly handles archives created by a user with a big UID
When a user with a UID or GID greater than 2097151 created a pax archive, the archive was created correctly but
tar
returned a misleading warning message and a non-zero exit status. This bug has been fixed, tar
now exits with the correct exit status and no false warning messages. (BZ#1247788)
OProfile fixed to prevent buffer overflow caused by long arguments
Prior to this update, the argument-check code in OProfile suffered from a problem that could cause a buffer overflow when passed a long path name or event unit mask. This update addresses the problems, and long arguments no longer cause a buffer overflow. (BZ#1206242)
OProfile
now works correctly on IBM POWER7+ systems
Prior to this update,
OProfile
for IBM POWER Systems was built using an old version of the libpfm
libraries, which resulted in support for the POWER7+ processors not being available and the operf
and ocount
tools not being able to run successfully on new IBM POWER Systems. This bug has been fixed, and the operf
and ocount
commands now work as expected on POWER7+ systems as well. (BZ#1303970)
Applications no longer fail with 'dlopen: cannot load any more object with static TLS'
The
glibc
dynamic loader was unable to load more than 16 shared libraries that make use of static thread-local storage (TLS). Consequently, applications could fail with an error message, dlopen: cannot load any more object with static TLS
. This bug has been fixed, and applications now start correctly in this scenario, provided sufficient static storage space is available. (BZ#1198802)
GDB
now generates smaller core files and respects core-dump filtering
The
gcore
command, which provides GDB
with its own core-dumping functionality, has been updated to more closely simulate the function of the Linux kernel core-dumping code, thus generating smaller core-dump files. GDB
now also respects the /proc/PID/coredump_filter
file, which controls what memory segments are written to core-dump files. (BZ#1085906)
GDB
no longer kills running processes with deleted executables
Prior to this update,
GDB
attempting to attach to a running process with a deleted executable would accidentally kill the process. This bug has been fixed, and GDB
no longer erroneously kills processes with deleted executables. (BZ#1219747)
Fixed signal handling in Bash
Due to the signal handler function calling certain signal-unsafe functions such as
malloc()
, the Bash
shell in some cases became unresponsive after it received a signal. This update ensures that the signal handler no longer calls signal-unsafe functions, which prevents the described bug from occurring. (BZ#868846)
Command substitution now works inside arithmetic expressions in bash
Previously,
bash
did not save input line state across recursive calls to the shell parser, causing the shell to fail to parse command substitution inside arithmetic expressions. For example, the following command failed:
for point in "/boot"; do disk_dir["$( df -P $point | awk '{print $1}' )"]=1; done
This bug has been fixed,
bash
now saves input line state before making recursive calls to the parser, and command substitution now works inside arithmetic expressions. (BZ#1207803)
KornShell now resets and modifies signal traps as expected and no longer crashes
Previously, KornShell (ksh) terminated unexpectedly with a segmentation fault when attempting to reset or modify certain signal traps. With this update, ksh does not attempt to free memory used for a string literal. As a result, ksh no longer crashes in the described situation. (BZ#1247383)
Printing the ls
output no longer takes a long time when extended attributes and ACLs are not supported
Previously, listing files and directories on file systems without support for extended attributes and access control lists (ACLs) involved unnecessary and high-cost lstat() and lgetxattr() system calls for every file. As a consequence, it could take several seconds to print the output of the
ls
command. Now, when the result of the system call is not supported
, ls
does not try the call again on this mount point. As a result, the printing speed of the ls
output has improved significantly in the described situation. (BZ#1248141)
KornShell no longer omits a background process in a command list when forking
Due to a bug in KornShell (ksh), forking a background process in a command list could previously omit that process completely. The source code that handles forking sub-processes has been modified, and a background process in a command list is now executed as expected. (BZ#1217236)
Multibyte characters are no longer corrupted in KornShell
Previously, the multibyte unicode parser received shifted input after a command-line option variable in KornShell (ksh). Consequently, the multibyte character after a command-line variable became corrupted. A patch has been applied to fix multibyte input parsing. As a result, multibyte characters are handled correctly in the described situation. (BZ#1256495)
The Oracle ACFS is now included among known file systems
Previously, the Oracle ASM Cluster file system (ACFS) was not listed among known file systems for the
stat
and tail
utilities. As a consequence, the tail
utility printed an error message stating that the file system was not recognized. ACFS has been added to the list of known file systems, and the error message no longer appears in the described situation.
In addition, other file systems recognized by upstream have been added to the list of known file systems as well, namely
acfs
, bpf_fs
, btrfs_test
, configfs
, efivarfs
, exofs
, f2fs
, hfs+
, hfsx
, hostfs
, ibrix
, logfs
, nsfs
, overlayfs
, smackfs
, snfs
, tracefs
, and ubifs
. (BZ#1280333)
The netfs stop
command now only unmounts relevant loop devices
Previously, all loop devices were umnounted when stopping the
netfs
service. With this update, when running the netfs stop
command, only relevant loop devices are unmounted; that is, the ones that are mounted on top of a network mount. (BZ#1156231)