"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何が起こっているのかわかりません。

この回答私は少し希望を与えましたが、バッファサイズを言及されたものの2倍に増やしましたが、何の効果もありませんでした。

誰でもどんなアイデアがありますか?

答え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を確認することをお勧めします。たぶん止まったり、衝突したり、何らかの形で詰まったりするかもしれません。

関連情報