[RHEL] ASan으로 corrupted size vs. prev_size 오류 해결하기
카테고리: Linux(RHEL, Ubuntu)
문제 상황 RHEL 7에서 사용하던 C++ 프로그램을 RHEL 8로 이전한 뒤 메모리를 free()하는 도중 내부에서 호출된 malloc_consolidate()가 아래와 같은 오류를 검출하고 프로그램을 종료시켰다. corrupted size vs. prev_size 이 오류는 glibc가 힙 청크의 크기 정보 불일치를 발견했을 때 발생하는 오류다.1 glibc는 일부 작은 청크를 해제할 때 fastbin이라는 목록에 넣고 이웃 청크와의 병합을 미룬다. 이후 free()에서 해제·병합한 청크의 크기가 일정 기준 이상이고 fastbin에 정리할 청크가 있으면, malloc_consolidate()를 호출해 주변의 빈 청크와 합친다.2 같은 arena(힙 관리 단위)의 fastbin 목록을 순회하므로,