SNR#3628 리눅스 환경에서 UDP 시스로그 수신이 지연되어 패킷이 유실되는 문제 해결

버전: 4.0.2609.0

리눅스 환경에서 UDP 시스로그를 수신할 때 내부 신호 전달이 특정 타이밍에 누락되면서, 패킷 처리 스레드가 최대 10초간 깨어나지 못해 그 사이 유입된 패킷이 유실될 수 있는 문제를 해결했습니다. 이 문제는 윈도우 환경에는 영향을 주지 않습니다. 윈도우는 운영체제가 제공하는 이벤트 신호 기능을 그대로 쓰지만 리눅스는 대체 구현으로 동작하며, 문제는 이 대체 구현에만 있었습니다.

  • 원인: 패킷 수신·처리 스레드를 깨우는 신호가 그 스레드가 대기 상태로 들어가기 바로 직전에 발생하면 전달되지 못하고 사라지는 경합이 있었습니다. 이 경우 패킷이 계속 들어오는 상황에서도 처리 스레드가 대기 시간 제한(최대 10초)이 끝날 때까지 깨어나지 못해, 그 사이의 패킷이 지연되거나 유실될 수 있었습니다.
  • 해결: 신호를 발생시키는 방법을 표준 방식으로 바꿔, 신호가 발생한 시점과 무관하게 처리 스레드가 패킷 도착 즉시 깨어나도록 수정했습니다.