Ubuntu Weekly Topics

Ubuntu 24.10(oracular)開発 / O3最適化の利用に向けた検討⁠Microchip PIC64GXへの正式対応

oracular(Ubuntu 24.10)の開発 / O3最適化の利用に向けた検討

Ubuntuの暗黙のデフォルトコンパイルオプションが変更になるかもしれません。各種パッケージのデフォルトのコンパイルオプションをGCCのO2からO3へ切り替えることを検討していることが発表され、テスト用のイメージが準備されています。

ポイントとしては「……ということが決まった」という話ではなく、⁠……ということが検討されている」という話であることです。このあたりの詳細を見ていきましょう。

まず、GCCなどのコンパイラは、⁠たいていの人間(一部の人外レベルを含む)が全身全霊をこめてアセンブラを書いた場合よりも高速なコードを吐き出す」という特性があります。このとき、利用する最適化テクニックのセットをどのレベルに抑えるのかを、コンパイラオプションを利用して制御できます。Ubuntuで、そしてたいていのソフトウェアで暗黙で利用されている最適化レベルがO2で、高度なテクニックを駆使してとにかく(後述のようなワークセットの肥大化を代償に)高速にするというアプローチを採るのがO3です。

これだけ聞くと「じゃあO3にすれば速くなるので万事解決!」という結論に飛びつきたくなりますが、現実にはそこまで簡単な話ではありません。

まず、この世に存在するソフトウェアにはバグが付きものです。そして、バグの中には「運良く顕在化していないもの」というものもあります。最適化レベルの変更によって、コンパイラの新たなバグを踏むようになることが、それなり以上の頻度で起きることがあります。そして最適化レベルの変更は、最適化レベルそのもののバグとはまた別に、既存のソフトウェアに含まれる「偶然うまく動いていた」処理を壊してしまうことがあります。

特にマルチスレッドを利用しているソフトウェアの場合(これは「現代的なほとんどのソフトウェア」と同義です⁠⁠、⁠O2では動いていたがO3になったらうまく動かなくなった」というようなことがしばしば起きえます。この場合、悪いのはもともとのコードの質かもしれませんし、あるいはコンパイラが最適化の際に、なにかを踏み抜いてしまったのかを識別するのは、なかなかに困難です。ついでに言えば、同時期にソフトウェア側に変化があった場合、⁠O3になったらうまく動かなくなったかのように見える新規のバグ」といったオチを踏む可能性もあります。もちろん、この逆に「O3にしたら動くようになった」というものもそれなり以上に存在するかもしれませんし、しないかもしれません。あくまで可能性の話であって、実際に見てみないと分かりません。こうした問題を解決するには、それなりに人的資源がかかります。

O3への変更にはこうした潜在的なリスク以外に、明確な代償として「コンパイルに時間がかかる」⁠コンパイル後のバイナリサイズが大きくなる」という要素があります。もっともストレージサイズやメモリサイズはおそらく現代ではそこまで問題になるものではありませんし(かなりストレージやメモリが少ない環境を仮定しても、128GBストレージと8GBメモリ程度は期待できるでしょうし、これらでは納まらなくなるような大幅な増加が起きるとは考えられません⁠⁠、コンパイル時間はユーザーに直接影響するものではありません。

各種パッケージのうち、もともとスピードが重要なものはO3でコンパイルされていることもないわけではなく(なにしろ今回変更するのはあくまで「デフォルトの」コンパイルオプションです⁠⁠、トータルで見ると「おそらく良い影響はあるが、良い影響の範囲はそこまで大きくなく、しかし一定の『支払い』はある」というタイプの決断です。とはいえ、体感できるかどうかはともかく、ユーザーにとって長期的には良いことのはずなので、⁠こういう方向の動きがあるのだ」という理解をしておけば良いでしょう。なお実際にO3にした場合にどのような変化が起きるのかを、Linux関連のベンチマークといえばお馴染みのPhoronixがテストしており、ヘビーそうなワークロードでどのようなメリットがあるのかを知ることができます。

Microchip PIC64GXへの正式対応

7月時点であきらかに動きが見えていたMicrochip PIC64GXへの対応が正式に発表され、24.04ベースのイメージの提供の開始とともに、インストールガイドが提供されています。24.10での対応も明示されており、このデバイスに興味がある場合は購入しても良いかもしれません。

その他のニュース

  • py3cleanのバグに起因して、一時的にすべてのリリースのSRUが停止されています。

今週のセキュリティアップデート

usn-6923-2:Linux kernelのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008501.html
  • Ubuntu 22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2023-52752, CVE-2024-25742, CVE-2024-26886, CVE-2024-26952, CVE-2024-27017, CVE-2024-36016を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため、通常はそのままアップデートの適用を行えば対応できます。

usn-6927-1:Linux kernelのセキュリティアップデート

usn-6924-2:Linux kernelのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008503.html
  • Ubuntu 20.04 LTS・18.04 LTS用のアップデータがリリースされています。CVE-2021-47131, CVE-2022-48655, CVE-2024-26583, CVE-2024-26584, CVE-2024-26585, CVE-2024-26907, CVE-2024-36016を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため、通常はそのままアップデートの適用を行えば対応できます。

usn-6928-1:Pythonのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008504.html
  • Ubuntu 22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2024-0397, CVE-2024-4032を修正します。
  • SSL証明書の不適切な検証と、プライベートアドレスの識別に問題がありました。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6929-1:OpenJDK 8のセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008505.html
  • Ubuntu 24.04 LTS・22.04 LTS・20.04 LTS・18.04 LTS用のアップデータがリリースされています。CVE-2024-21131, CVE-2024-21138, CVE-2024-21140, CVE-2024-21144, CVE-2024-21145, CVE-2024-21147を修正します。
  • CPUJul2024に相当するアップデータです。
  • 対処方法:アップデータを適用の上、Javaアプリケーションを再起動してください。

usn-6932-1:OpenJDK 21のセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008506.html
  • Ubuntu 24.04 LTS・22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2024-21131, CVE-2024-21138, CVE-2024-21140, CVE-2024-21145, CVE-2024-21147を修正します。
  • CPUJul2024に相当するアップデータです。
  • 対処方法:アップデータを適用の上、Javaアプリケーションを再起動してください。

usn-6930-1:OpenJDK 11のセキュリティアップデート

usn-6931-1:OpenJDK 17のセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008508.html
  • Ubuntu 24.04 LTS・22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2024-21131, CVE-2024-21138, CVE-2024-21140, CVE-2024-21145, CVE-2024-21147を修正します。
  • CPUJul2024に相当するアップデータです。
  • 対処方法:アップデータを適用の上、Javaアプリケーションを再起動してください。

usn-6934-1:MySQLのセキュリティアップデート

usn-6935-1:Prometheus Alertmanagerのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008510.html
  • Ubuntu 22.04 LTS(Ubuntu Proのみ⁠⁠・20.04 LTS・18.04 ESM用のアップデータがリリースされています。CVE-2023-40577を修正します。
  • 悪意ある入力を行うことで、任意のコードの挿入が可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます(備考を参照してください⁠⁠。
  • 備考:22.04 LTS、20.04 LTSにおいては、UIを明示的に有効にしていなければ影響はありません。有効にしていた場合、アップデート後にUIコンポーネントのリコンパイルとprometeus-alertmanagerの再起動が必要です。

usn-6938-1:Linux kernelのセキュリティアップデート

usn-6937-1:OpenSSLのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008512.html
  • Ubuntu 24.04 LTS・22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2024-2511, CVE-2024-4603, CVE-2024-4741, CVE-2024-5535を修正します。
  • 悪意ある入力を行うことで、DoS・本来秘匿されるべき情報へのアクセスが可能でした。
  • 対処方法:アップデータを適用の上、システムを再起動してください。

usn-6913-2:phpCASのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008513.html
  • Ubuntu 16.04 ESM用のアップデータがリリースされています。CVE-2022-39369を修正します。
  • usn-6913-1の16.04用パッケージです。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6939-1:Eximのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-July/008514.html
  • Ubuntu 24.04 LTS・22.04 LTS・20.04 LTS・18.04 ESM・16.04 ESM用のアップデータがリリースされています。CVE-2024-39929を修正します。
  • 悪意ある加工を施すことで、ファイル名ベースの保護を迂回してユーザーにメールを到達させることが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6933-1:ClickHouseのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008516.html
  • Ubuntu 20.04 LTS用のアップデータがリリースされています。CVE-2021-42387, CVE-2021-42388, CVE-2021-43304, CVE-2021-43305を修正します。
  • 悪意ある入力を行うことで、DoS・本来秘匿されるべき情報へのアクセス・任意のコードの実行が可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6940-1:snapdのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008517.html
  • Ubuntu 24.04 LTS・22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2024-1724, CVE-2024-29068, CVE-2024-29069を修正します。
  • 悪意ある操作を行うことで、Snapによるサンドボックス制御を回避することが可能でした。また、古典的symlink攻撃により、本来期待されない書き込み先のデータを書き換えることが可能でした。これによる権限昇格とDoSが可能です。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6941-1:Pythonのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008518.html
  • Ubuntu 24.04 LTS用のアップデータがリリースされています。CVE-2024-4032を修正します。
  • プライベートアドレスの識別に問題がありました。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6922-2:Linux kernelのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008519.html
  • Ubuntu 22.04 LTS用のアップデータがリリースされています。CVE-2024-24857, CVE-2024-24858, CVE-2024-24859, CVE-2024-25739を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるため、通常はそのままアップデートの適用を行えば対応できます。

usn-6926-2:Linux kernelのセキュリティアップデート

usn-6909-2:Bindのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008521.html
  • Ubuntu 18.04 LTS用のアップデータがリリースされています。CVE-2024-1737, CVE-2024-1975を修正します。
  • usn-6909-1の18.04向けパッケージです。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6943-1:Tomcatのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008522.html
  • Ubuntu 22.04 LTS・20.04 LTS・18.04 ESM・16.04 ESM用のアップデータがリリースされています。CVE-2020-9484, CVE-2021-25122, CVE-2021-41079, CVE-2022-23181, CVE-2022-29885を修正します。
  • 悪意ある入力を行うことで、任意のコードの実行・本来秘匿されるべき情報へのアクセス・DoSが可能でした。

usn-6942-1:Grossのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008523.html
  • Ubuntu 24.04 LTS・22.04 LTS・20.04 LTS・18.04 LTS・16.04 LTS用のアップデータがリリースされています。CVE-2023-52159を修正します。
  • 悪意ある入力を行うことで、メモリ破壊を伴うクラッシュを誘発することが可能でした。任意のコードの実行・DoSが可能でした。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。

usn-6895-4:Linux kernelのセキュリティアップデート

usn-6944-1:curlのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008525.html
  • Ubuntu 24.04 LTS・22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2024-7264を修正します。
  • 悪意ある入力を行うことで、DoS・メモリ上のデータの読み取りが可能でした。

usn-6200-2:ImageMagickのセキュリティアップデート

  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2024-August/008526.html
  • Ubuntu 22.04 LTS・20.04 LTS用のアップデータがリリースされています。CVE-2023-1289, CVE-2023-34151を修正します。
  • 22.04・20.04におけるusn-6200-1の修正が不足していました。

おすすめ記事

記事・ニュース一覧