`EAI_SYSTEM` 및 errno가 `EBUSY`("장치 또는 리소스 사용 중")로 설정된 경우 `getaddrinfo()` 호출이 실패하는 이유는 무엇입니까?

`EAI_SYSTEM` 및 errno가 `EBUSY`("장치 또는 리소스 사용 중")로 설정된 경우 `getaddrinfo()` 호출이 실패하는 이유는 무엇입니까?

컨테이너에서 실행할 때 이 오류가 표시됩니다 apt update(유용한 정보인 경우). 적절한 뱉어 :

System error resolving 'archive.ubuntu.com:80' - getaddrinfo (16: Device or resource busy)

glibc 소스 코드를 보려고 했지만 무슨 일이 일어나고 있는지 이해할 수 없습니다.

답변1

컨테이너가 완전히 작동하지 않으며 GNU C 라이브러리의 이름 서비스 전환 기능이 컨테이너에서 작동하지 않습니다. 특히, 동적으로 로드/로드할 수 없습니다. 이 경우 return은 다음으로 설정됩니다(및 다음으로 설정됨)._nss_N_gethostbyname3_r_nss_N_gethostbyname2_rgetaddrinfo()errnoEBUSYh_errnoNETDB_INTERNAL

또한 잘못된 함수의 소스 코드를 보고 있는 것입니다. 그건 getaddrinfo_a().

답변2

액세스 권한을 확인하세요. 내 경우에는 /etc/hosts의 모드가 0600이며 이는 루트에서 작동하지만 apt는 다운로드 시 권한을 제거합니다.

확인해야 할 다른 흥미로운 장소:

  • /lib, /lib/ARCH_TRIPLE, /lib/ARCH_TRIPLE/libnss_dns.so
  • /etc/resolv.conf
  • /usr、/usr/bin

관련 정보