33장. 컴파일러 및 툴
FCoE를 통해 SAN에서 부팅할 때 여러 버그
FCoE(Fibre Channel over Ethernet)를 사용하여 SAN(Storage Area Network)에서 현재 부팅하는 버그에서 여러 버그가 발생했습니다. Red Hat은 이러한 버그에 대한 수정 사항을 위해 향후 Red Hat Enterprise Linux 7 릴리스를 대상으로 합니다. 영향을 받는 버그 및 해결 방법(사용 가능한 경우) 목록을 보려면 Red Hat 지원 담당자에게 문의하십시오.
Valgrind는 이전 버전의 Open MPI에 대해 빌드된 프로그램을 실행할 수 없습니다.
Red Hat Enterprise Linux 7.2는 버전 1.10의 ABI(Open MPI 애플리케이션 바이너리 인터페이스)만 지원하며, 이는 이전에 제공되는 Open MPI ABI 버전 1.6 버전과 호환되지 않습니다. 결과적으로 이전 버전의 Open MPI에 대해 빌드된 프로그램은 Red Hat Enterprise Linux 7.2에 포함된 Valgrind에서 실행할 수 없습니다. 이 문제를 해결하려면 Open MPI 버전 1.6과 연결된 프로그램에 Red Hat Developer Toolset 버전의 Valgrind를 사용하십시오.
GCC에서 생성된 합성 함수가 SystemTap에 혼란 가중
GCC 최적화는 다른 함수의 부분 인라인 사본에 대해 합성 함수를 생성할 수 있습니다. SystemTap 프로브를 합성 및 실제 함수 진입점 모두에 배치할 수 있기 때문에 이러한 합성 함수는 최상위 함수 함수처럼 보이고 SystemTap 및 GDB와 같은 툴을 혼동할 수 있습니다. 이로 인해 단일 기본 함수 호출에 따라 SystemTap 프로브가 여러 개 도달할 수 있습니다.
이 문제를 해결하기 위해 SystemTap 스크립트는 재귀 탐지 및 인라인 부분 함수와 관련된 프로브 억제와 같은 대응을 채택해야 할 수 있습니다. 예를 들어 다음 스크립트는 다음과 같습니다.
probe kernel.function("can_nice").call { }
다음과 같이 설명된 문제를 피할 수 있습니다.
global in_can_nice% probe kernel.function("can_nice").call { in_can_nice[tid()] ++; if (in_can_nice[tid()] > 1) { next } /* real probe handler here */ } probe kernel.function("can_nice").return { in_can_nice[tid()] --; }
이 스크립트는 가능한 모든 시나리오를 고려하지 않습니다. 예를 들어 kprobes 또는 kretprobes 누락 또는 의도된 재귀의 경우 예상대로 작동하지 않습니다.
ABRT가 역추적을 수집할 때 생성된 SELinux AVC
디스크에 core-dump 파일을 쓸 필요 없이 충돌한 프로세스에서 백트레이스를 수집할 수 있는 새로운 선택적 ABRT 기능이 활성화된 경우(
/etc/abrt/plugins/CCpp.conf
구성 파일에서 CreateCoreBacktrace
옵션을 사용하여) abrt-hook-ccpp구성 파일에서 SELinux AVC 메시지가 생성됩니다. 툴은 프로세스 스택의 함수 목록을 가져오기 위해 충돌 프로세스에서 sigchld
액세스를 사용하려고 합니다.
GDB는 히트로 보고한 후에도 감시 지점을 활성 상태로 유지합니다.
경우에 따라 64비트 ARM 아키텍처에서 GDB는 히트 횟수를 보고한 후에도 감시 지점을 활성 상태로 유지할 수 있습니다. 이렇게 하면 감시점이 두 번째로 히트되고, 이번에는 하드웨어 표시가 더 이상 감시 지점으로 인식되지 않으며 대신 일반 SIGTRAP 신호로 출력됩니다. 이 문제를 해결하고 과도한 SIGTRAP 보고를 중지하는 방법에는 여러 가지가 있습니다.
* 감시점에 도달한 후 SIGTRAP를 볼 때 계속 입력합니다.
* GDB가
~/.gdbinit
구성 파일에 다음 행을 추가하여 SIGTRAP 신호를 무시하도록 지시합니다.
handle SIGTRAP nostop noprint
* 하드웨어 동등한 대신 소프트웨어 감시 포인트를 사용합니다. 소프트웨어 감시 포인트를 사용하면 디버깅이 상당히 느리고 watch 명령만 사용할 수 있습니다( rwatch 또는 awatch는 아님).
~/.gdbinit
구성 파일에 다음 행을 추가합니다.
set can-use-hw-watchpoints 0
grubaa64.efi를 사용하여 부팅 실패
pxeboot 또는 PXE 구성 파일의 문제로 인해 7.2 grubaa64.efi 부트 로더를 사용하여 Red Hat Enterprise Linux 7.2 설치가 실패하거나 운영 체제 부팅에 상당한 지연이 발생했습니다. 해결 방법으로 Red Hat Enterprise Linux 7.2를 설치할 때 7.2 grubaa64.efi 파일 대신 7.1 grubaa64.efi 파일을 사용하십시오.
GCC의 MPX 기능을 사용하려면 Red Hat Developer Toolset 버전의 libmpx 라이브러리가 필요합니다.
libmpxwrappers 라이브러리가 libmpx 라이브러리의 gcc-libraries 버전에서는 없습니다. 그 결과 GCC(Memory Protection Extensions) 기능이 GCC에서 제대로 작동하지 않을 수 있으며 애플리케이션이 제대로 연결되지 않을 수 있었습니다. 이 문제를 해결하려면 Red Hat Developer Toolset 4.0 버전의 libmpx 라이브러리를 사용하십시오.