"systemd-resolve --status" 실행 시 "전역 데이터를 가져올 수 없습니다. 사용 가능한 버퍼 공간이 없습니다."

"systemd-resolve --status" 실행 시 "전역 데이터를 가져올 수 없습니다. 사용 가능한 버퍼 공간이 없습니다."

저는 Mint 20.3(Ubuntu 20.04 기반)을 사용하고 있는데 네트워크에서 모든 것이 잘 작동하다가 갑자기 갑자기, 갑자기 작동이 멈추고 작동이 안되는 이상한 문제를 겪고 있습니다. 어떤 웹사이트라도 접속하세요. 를 사용할 때도 동일한 일이 발생하기 때문에 이것은 내 브라우저가 아닙니다 curl.

systemd-resolve --statusDNS의 현재 상태를 가져오는 데 사용을 언급한 스레드를 찾았습니다 . 네트워크가 작동 중일 때 명령이 제대로 실행되었으며 네트워크를 통해 실행될 때의 출력과 비교하기 위해 복사본을 저장했습니다.

그러나 이제 네트워크가 다시 실행되고 있으므로 명령을 다시 실행하면 오류가 출력됩니다 Failed to get global data: No buffer space available. 해결책을 찾았지만 아무 것도 언급되지 않은 것 같아서 systemd-resolve무슨 일이 일어나고 있는지 알 수 없습니다.

이 답변약간의 희망을 주었지만 버퍼 크기를 언급된 것의 두 배로 늘렸지만 아무런 효과가 없었습니다.

누구든지 어떤 아이디어가 있습니까?

답변1

이는 소스 코드의 다음 부분에서 비롯됩니다. resolve/resolvectl.c

  1843  
  1844          r = bus_map_all_properties(bus,
  1845                                     "org.freedesktop.resolve1",
  1846                                     "/org/freedesktop/resolve1",
  1847                                     property_map,
  1848                                     BUS_MAP_BOOLEAN_AS_BOOL,
  1849                                     &error,
  1850                                     &m,
  1851                                     &global_info);
  1852          if (r < 0)
  1853                  return log_error_errno(r, "Failed to get global data: %s", bus_error_message(&error, r));
  1854  

어떤 상황에서 systemd가 ENOBUFS를 보고하는지 확인했는데, DBUS의 보류 중인 보내기 또는 받기 버퍼를 채울 때만 이 오류가 발생하는 것 같습니다.

ENOBUFSDBUS 내부 라이브러리 요청에서 기본 오류( )가 발생합니다.

이는 내부 버퍼이고 크기를 늘릴 수 없지만 이는 내부 버퍼가 가득 차서 더 많은 데이터 추가를 포기하고 ENOBUFS반환하는 대신 DBUS(또는 기본 라이브러리)가 요청에 대한 응답을 중지했다는 확실한 신호입니다.

시스템 DBUS를 확인하는 것이 좋습니다. 어쩌면 멈추거나, 충돌하거나, 어떤 식으로든 막혔을 수도 있습니다.

관련 정보