systemdの不具合について、「安全ではない言語を使っている」のが原因との指摘 98
ストーリー by hylom
Linuxもアウトでは 部門より
Linuxもアウトでは 部門より
あるAnonymous Coward曰く、
先日、systemdにバグがあることが発見され、誰でも比較的簡単にLinuxシステムをクラッシュさせることができることが発覚した。この問題を指摘したAndrew Ayer氏によれば、systemdには設計上の欠陥があるという。バグのないソフトウェアを書くことは非常に困難だが、良いプログラマはバグの可能性を最小にするか、その影響を低減させる方向へソフトウェアを設計することの重要性を理解している。しかしsystemdの開発者たちはこれを理解していないと主張。不必要な複雑性を膨大に詰め込むことを決定し、メモリを安全ではない言語で記述したと非難している(Andrew Ayer、iWire)。
また、TechCrunchの記事では、安全ではない言語がキーポイントだとし、メモリ管理が安全でない言語を使って安全なコードを書くことを期待するのは現実的ではないと指摘している。一方でAndrew Ayer氏は希望はあるとして「GoとRustはこれまでCで書かれていたようなシステムソフトウェアを書くための注目すべき安全な言語だ」としている(Slashdot)。
安全ではない言語を使っている (スコア:5, すばらしい洞察)
Linuxカーネル「せやな」
Re:安全ではない言語を使っている (スコア:1)
NTカーネル「それな」
Darwin「ほんまそれ」
Re:安全ではない言語を使っている (スコア:2)
Hurd「悪いのは言語ではなく設計なんです」
Re: (スコア:0)
systemdはカーネルすら取り込んで、一つになろうとしてるだろ?
systemd×カーネル (スコア:1)
斬新なカップリングだなw
安全性を高めるには (スコア:2, 興味深い)
本当に安全性を高めるなら定理証明系言語使わないと
C に証明を付与する Frama-C とか ATS2 とか使って欲しい
そこはC言語ではなく (スコア:5, おもしろおかしい)
systemdに証明の機能を取り込むべきでは?
Re:安全性を高めるには (スコア:1)
自動定理証明 - 産業への応用 [wikipedia.org]
>産業分野での応用例としては、LSIの設計とその検証が挙げられ、モデル的手法とともに使われている。Pentium FDIV バグ 以来、FPUの設計は極めて厳密に行われている。AMDやインテルはプロセッサの設計検証に自動定理証明を使っている。
ほう
Re: (スコア:0)
よくわからないのだが、そういうのを使うと、
夢物語だと言われていた「バグが無い(と証明された)プログラム」が作れるの?
屏風の虎 (スコア:1)
実際に使えるinitを書いてみて証明すればいいんじゃないかな
証明をせずにできるというのはどの言語でも可能だし
また言い加減なことを言ってるなあ (スコア:0)
素人に金槌を持たせたら指を叩く(玄人でも稀には怪我する)というだけの単純な話なのに、工具が危険という一般論に置き換えてる。
まあ systemd は、そんなこと以前に設計図的な部分が大問題なのだけど。
Re: (スコア:0)
金槌を使えないようなレベルの人間が
一人前の大工だと言い張って家を建てる時代になったということかもしれません
そのうち金槌を知らない世代に人数で負ける時代になります
まあ「memory-unsafe language」なんて表現をする時点で
GoとRustにかなり肩入れしている感じはしますが
Re: (スコア:0)
>そのうち金槌を知らない世代に人数で負ける時代になります
この発言もタイトル通り。
小学校で図工の授業をやっている限り、そんな時代は来ませんね。
Re: (スコア:0)
「金槌を知らない」というのが見たことも聞いたこともないという意味にしか解釈できないなら日本語を知らないということですね
Re: (スコア:0)
Agile開発に設計図なんて存在しませんよ?
Re: (スコア:0)
金槌を使うのに設計図が必要なのかよ
Re: (スコア:0)
金槌を使うのに専用機械が必要な運痴は確かにいます。
専用機械の制作には、一般に設計図が必要です。
原付程度でも大抵設計図が必要ですが、無しで作ってしまう人もたまにはいるかも知れません。
それが飛行機規模となると、もっと設計図無しでは困難になります。
Re: (スコア:0)
安全な Rust で書かないのが悪いというだけの単純な話。
Re:また言い加減なことを言ってるなあ (スコア:1)
「不必要な複雑性を膨大に詰め込むことを決定し、メモリを安全ではない言語で記述したと非難している」
問題なのは前半の部分なのに、我田引水のために後半の話題にすりかえてる。
本気で init を書くのに Rust が必要と考えてるのか?
Re:また言い加減なことを言ってるなあ (スコア:1)
問題は、メモリを記述できる言語が果たしてあるのかどうかでは? VHDL?
Re: (スコア:0)
そら書けるが意味ちげぇwww
Re: (スコア:0)
その意味ならVHDLやVerilogでもメモリは書けないよ。物理設計で決めるから。
なにか記憶できる領域が割り当たるという意味ならCでもおなじでしょ。
Re: (スコア:0)
> なにか記憶できる領域が割り当たるという意味ならCでもおなじでしょ。
うまいっ!DRAMですね!
Re: (スコア:0)
うまいっ!DRAMですね!
誰か解説して
Re: (スコア:0)
そのまんまだろ。!がCでどういう意味か考えてみたら…仮想記憶をサポートしたマシンなら極端な話DRAMなくてもいいよねっていう。
Re: (スコア:0)
言語レベルで多少なりとも安全性を担保できるのならそうしたほうがいいのは当然なわけで、結局行き着くところはinitを書くのにCが必用か?ということでは。
Re: (スコア:0)
ネイルガンのように金槌よりは安全な道具もありますしね。
玄人でも金槌で指を打つとは言うがメモリ関連の脆弱性はそんなごく少数の例外ではないし組織の大小に関わらず致命的な問題になることが多いのでより安全な言語をつかつべきであるという主張はそれなりに説得力がありますよ。
GoやRustがC並に早いならという前提付きで。まあメモリ管理を言語側で自動化してもメモリ管理機構に脆弱性が移るだけの話ですが。仕様でメモリの安全を確保するほうがいいよな。
何が言いたいかって?喩え話はやめようねってのとJavaは悲しいけどだめだよねって話。
Re:また言い加減なことを言ってるなあ (スコア:1)
Re: (スコア:0)
ネイルガンのように金槌よりは安全な道具もありますしね。
あんな凶悪なのを安全とは。最近はAAA付で余計に。
# それは超電磁砲
Re: (スコア:0)
「言い加減」
だって、 (スコア:0)
結局性能が出ないとか言って、高級アセンブラ(=C)で書き直すんでしょ?
Re:だって、 (スコア:1)
systemd自体には性能は求められていないような。
Re: (スコア:0)
Cは高級アセンブラではないような。
Re:だって、 (スコア:1)
「高級アセンブラ [google.com]」はCの二つ名のようなものですよ。
Re: (スコア:0)
Cが高級アセンブラって言語の機能が素直に機械語に対応したPDPなんとかとかその頃の大昔の話でしょ。いまそんなこと言ってると笑われるよゲラゲラ
Re: (スコア:0)
君がね。
Re: (スコア:0)
PDPとかVAXまではアセンブラの延長にCがあった。
それはコンパイラの開発を容易にする思想でアーキテクチャが作られてたから。
いまどきCと似てるマシン語のアーキテクチャがあるなら教えて欲しい。
Re:だって、 (スコア:1)
鼻から悪魔出ない?これ
intの乗算がオーバフローすると結果は未定義なんでは
Re:だって、 (スコア:1)
いやそういうことではなく、
「Cには高級アセンブラという通称があるよね」という話と
「Cは実際に高級アセンブラか?いや違う」という話をごっちゃにしている(ごっちゃにしたい)人がいるだけ。
# mishimaは本田透先生を熱烈に応援しています
Re:だって、 (スコア:1)
加山雄三の「若大将」って通称にも、「既に実体にそぐわない」って言うのかなこの人。
# 女子会って通称も実体にそぐわな…いえなんでもありません
# mishimaは本田透先生を熱烈に応援しています
Re:だって、 (スコア:1)
「若大将」は映画の中でのニックネームが由来であり、そもそもが加山雄三氏の実体(そのものの本当の姿。実質。正体)とは関係がないですね。
はい、そのとおり。
つまり、通称がもはや実体を示していない、直接の関係がない、という状況は世間ではよくあることなんだよ。
Cを高級アセンブラと呼ぶことが、いまはもう実体を示していないとしても、
それで過去の由来によって付けられた通称がなくなるわけじゃないんだよ。
…というふうにわたくしが説明しても、あなたは
「それは○○で、こっちの☓☓とは違う」みたいな反論をするんだろうね。
わたくしが知りたいのは、なぜそのような反論をあなたがするのか、その意図なんだ。
通称と実態が異なっているのが許せないから?
Cが通称高級アセンブラであることを知らなくて、引っ込みがつかなくなった?
それとも、Cのことを高級アセンブラと揶揄することに反感を覚えるから?
(そうだとすれば、その反感の理由はなんだろう)
# mishimaは本田透先生を熱烈に応援しています
Re:だって、 (スコア:1)
「なんか他人がそう言ってるのを深く意味も考えずに真似して使う語」という意味ではその通り。
Re: (スコア:0)
検索結果見て言ってる?
Re: (スコア:0)
そちらこそちゃんと読んだ?
GoとRustで書き直したとして (スコア:0)
まともに動くようになるのは何年後?
Re: (スコア:0)
何年かあればできると思いますか?
Re: (スコア:0)
rust は、この前、firefox の一部機能が rust で書かれて、スピードが数十倍(だっけ?)になったとか書いてあったから、
このまま順当に行けば、そのうち rust で書かれた browser が出てくるんじゃないの。
ちなみに、この機能は、リリース版に取り込まれてる。
ここまで書いて気づいたけど、元コメは、go & rust に対する不信感じゃなくて、
「書き直して安定するまでに、また何年もかかるじゃん。」て意味か?
安全じゃない言語がダメでも (スコア:0)
日本語でおk
Re: (スコア:0)
https://ja.wikipedia.org/wiki/日本語プログラミング言語 [wikipedia.org]
Re: (スコア:0)
ちょべりばー。
オギノ式で十分だっていうしぃ-。
コーラで洗えばダイジョブだってー。