*** glibc detected *** double free or corruption (!prev): 0x09e4b620 ***
[Wed Feb 3 21:26:31 2010] [notice] child pid 20723 exit signal Aborted (6)
*** glibc detected *** double free or corruption (!prev): 0x09f1ab80 ***
[Wed Feb 3 21:26:36 2010] [notice] child pid 1315 exit signal Aborted (6)
glibc의 추가된 기능중에 코드의 무결성 체크를 하는 기능
-
Red Hat 엔터프라이즈 리눅스 4에 포함된 버전 glibc는 데이터 손상을 최대할 빨리 검색하여 방지할 수 있도록 내부 정상 감시 기능을 추가로 수행합니다. 데이터 손상이 감지되면 다음과 같은 메시지가 표준 오류로 나타날 것입니다 (만일 표준 오류(stderr)이 열려있지 않은 경우에는 syslog으로 기록됩니다):
*** glibc detected *** double free or corruption: 0x0937d008 ***
이 오류 메시지를 생성하는 프로그램은 디폴트로 제거(kill)됩니다; MALLOC_CHECK_ 환경 변수를 이용하여 오류 메시지 생성 여부를 선택하실 수 있습니다. 다음과 같은 설정이 가능합니다:
-
0 ? 오류 메시지를 생성하지 않고, 프로그램을 제거하지 않음
-
1 ? 오류 메시지를 생성하지만, 프로그램을 제거하지 않음
-
2 ? 오류 메시지를 생성하지는 않지만, 프로그램은 제거함
-
3 ? 오류 메시지를 생성하고 프로그램을 제거함
알림
만일 MALLOC_CHECK_ 변수를 0이 아닌 다른 값으로 설정할 경우, glibc는 기본 설정 보다 광범위한 검사를 수행하므로결국 시스템 성능에 영향을 미칠 수 있습니다.
만일 제삼자 ISV의 프로그램로 인해 이러한 데이터 손상 검사가 수행되고 오류 메시지가 나타난다면, 심각한 문제일 수 있으니 어플리케이션의 제조업체에 보고하시기 바랍니다.
■ 해결책1. 환경변수(environment variable) 설정
export MALLOC_CHECK_=0참조: http://www.jp.redhat.com/support/manuals/RHEL4_RELEASE-NOTES-ja.html
2. 코드에서 double free가 있거나 double malloc이 있는 경우에 발생합니다. glibc 버전 업이 진행되면서 새로 추가된 기능 중 하나지요. 메모리 보호를 위한 조치랄까요. 일단 malloc_check 을 하지 않게 함으로써 메세지 발생은 막습니다만, 그것으로 문제가 해결된 것은 아닙니다.
-