목록 보기
Kubernetes 환경에서 Segmentation Fault 트러블슈팅하기 (Feat. Fluent Bit Contribution)
데브옵스

Kubernetes 환경에서 Segmentation Fault 트러블슈팅하기 (Feat. Fluent Bit Contribution)

하이퍼커넥트
하이퍼커넥트
2023년 5월 2일

두줄요약

Kubernetes에서 Fluent Bit의 SIGSEGV를 core 파일과 gdb로 추적해 원인을 분석했습니다. msgpack 객체를 잘못 해석한 문제를 찾아 PR로 반영했습니다.

문제 상황

  • Kubernetes 환경의 Fluent Bit Kafka output plugin에서 SIGSEGV로 재시작되는 현상 발생
  • core 파일이 남지 않아 원인 파악이 어려운 상태

해결 방법

  • Pod에 PersistentVolume을 붙이고 node의 core_pattern을 변경해 core 파일 확보
  • 동일한 arm64 컨테이너와 debug 이미지에서 gdb로 core를 분석
  • produce_message()에서 msgpack_object를 map으로 잘못 해석한 정황 확인

원인 분석

  • flb_time_pop_from_msgpack으로 얻은 obj가 float64 타입인데 map으로 전달되는 흐름
  • msg->via.map 접근 시 잘못된 union 필드 참조로 세그멘테이션 폴트 발생

적용해볼 점

  • Kubernetes에서 코어 덤프 수집을 위해 PV와 core_pattern 설정 활용
  • core 분석 시 동일 아키텍처와 바이너리, 소스 코드 정합성 확보

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...