→問題になる。気持ち的には参照カウントを減らしてからArcInnerを触ることはない。しかしLLVMの規約上、参照は関数の最後まで生き延びないとUBになってしまう。fetch_subがその内部実装を呼び終えてからのわずかな時間が事故に繋がりうるという話である。
Notices by Masaki Hara (qnighy@qnmd.info), page 56
-
Masaki Hara (qnighy@qnmd.info)'s status on Friday, 12-Oct-2018 20:19:09 JST
Masaki Hara
-
Masaki Hara (qnighy@qnmd.info)'s status on Friday, 12-Oct-2018 20:14:49 JST
Masaki Hara
https://github.com/rust-lang/rust/issues/55005
ArcにまたUBが発見された。これは実効的なやつではなさそう。
あるスレッドでArcが不要になり参照カウントを減らしたとする。減らした命令のすぐ直後で割り込みが入り、次に目覚めたときには他スレッドがArcInnerを解放した後かもしれない。その「直後」のわずかな期間が問題 -
Masaki Hara (qnighy@qnmd.info)'s status on Wednesday, 10-Oct-2018 21:23:25 JST
Masaki Hara
いろり庵きらくの蕎麦機械が故障してるらしくて、かわいそう
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Wednesday, 10-Oct-2018 21:16:01 JST
Masaki Hara
そういう、意味論が見える言語は他にもあって、Haskellっていうんですけど、参照をもつ手続き型言語でも排他性をちゃんと管理してやることでそれができると実証してるのがRustなんだよな
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Wednesday, 10-Oct-2018 21:11:33 JST
Masaki Hara
Rust, 事前条件や事後条件が視える超人類が設計したとしか思えない、形式手法にお誂え向きの構造なのに、「やあやあ、依存型でござい」みたいなのがないので、人類でも頑張ればちゃんと書けるようになってるのがすごいんだよな
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Wednesday, 10-Oct-2018 12:52:00 JST
Masaki Hara
タイムテーブル←→スペースチェア
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Wednesday, 10-Oct-2018 12:47:00 JST
Masaki Hara
家電
In conversation from qnmd.info permalink -
Satoshi Kojima (skoji@sandbox.skoji.jp@sandbox.skoji.jp)'s status on Wednesday, 10-Oct-2018 12:36:31 JST
Satoshi Kojima
家系(いえけい)と家系(かけい)に匹敵するややこしいやつ、男の娘。
おとこのむすめ、って文は少なくともフィクションでは普通に出てくるからなー
In conversation from sandbox.skoji.jp permalink Repeated by qnighy -
Masaki Hara (qnighy@qnmd.info)'s status on Wednesday, 10-Oct-2018 12:41:57 JST
Masaki Hara
ジャバだから、とスクリプト言語界隈を追放されたGroovyは腹いせにレベルMAXドメイン固有言語に転職して伝説のIDEメーカーと最強パーティを組みました
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Wednesday, 10-Oct-2018 10:20:53 JST
Masaki Hara
str::repeatの脆弱性はCVE-2018-1000810になったらしい。
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000810In conversation from qnmd.info permalink Attachments
-
Masaki Hara (qnighy@qnmd.info)'s status on Wednesday, 10-Oct-2018 09:31:27 JST
Masaki Hara
https://boats.gitlab.io/blog/post/pin-cell/
RefCellのpin版であるPinCellというのが外部ライブラリとして作られたらしい。pinとはRustでムーブできない型を擬似的に実現する仕組みで、async/awaitで重要な役割を担う。In conversation from qnmd.info permalink Attachments
-
Masaki Hara (qnighy@qnmd.info)'s status on Tuesday, 09-Oct-2018 23:32:52 JST
Masaki Hara
Java系のOOPの枠組でよくわかってないの、具象クラスがなぜか継承可能なところとメンバ変数をもつクラスがなぜか継承可能なところ、それから「こいつを継承/オーバーライドしたらほぼ確実にis-a関係が壊れるでしょ」みたいなクラス/メソッドにも全然finalとかついてないところの3つかな
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Tuesday, 09-Oct-2018 23:28:08 JST
Masaki Hara
signed mainの競プロしぐさ感は好き
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Tuesday, 09-Oct-2018 20:00:43 JST
Masaki Hara
なろう小説積読が溜まっているんだけど如何ともしがたい。最近は本好きの書籍版最新まで追いついたけどもうすぐ外伝も出てしまう
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Tuesday, 09-Oct-2018 10:10:28 JST
Masaki Hara
https://github.com/rust-lang/book/pull/1559#issuecomment-427940398
Why yes it does! なんて言い回しがあるのかIn conversation from qnmd.info permalink Attachments
-
Masaki Hara (qnighy@qnmd.info)'s status on Tuesday, 09-Oct-2018 09:50:23 JST
Masaki Hara
ところで、carols10centsさんの本名はGitHubを見ると二種類併記されていて、shepmaster氏の本名はInteger32, LLCに書いてあるけど、よく見ると…… (知らなかった)
In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Tuesday, 09-Oct-2018 09:45:20 JST
Masaki Hara
https://users.rust-lang.org/t/how-to-start-learning-rust/4244/8
carols10centsさんとshepmaster氏がRustのビデオチュートリアル?を作っているらしい。
2人はRustのメンテナでもあり、Rust専門の技術コンサルであるInteger32, LLCの共同創業者でもある。In conversation from qnmd.info permalink Attachments
-
Masaki Hara (qnighy@qnmd.info)'s status on Monday, 08-Oct-2018 22:50:21 JST
Masaki Hara
これはRc::newには影響ないはず(Rc::newの場合はサイズとアラインメントはコンパイラ側で完全に計算されるはずなので)
参照先がunsizedである、などの都合でポインタから直接変換するときにはライブラリ側でサイズとアラインメントを計算する必要があり、そこにバグがあったという話。In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Monday, 08-Oct-2018 22:49:44 JST
Masaki Hara
これはRc::newには影響ないはず(Rc::newの場合はサイズとアラインメントはコンパイラ側で完全に計算されるはずなので)
参照先がunsizedである、などの都合でポインタから直接変換するときにはライブラリ側でサイズとアラインメントを計算する必要があり、そこにバグがあったという話。In conversation from qnmd.info permalink -
Masaki Hara (qnighy@qnmd.info)'s status on Monday, 08-Oct-2018 22:45:04 JST
Masaki Hara
肝心のバグは何かというとアラインメント絡み。Rc<T>は参照カウントがあるのでBox<T>などとは参照先の構造が異なる。そのためBoxをRcに変換するときはサイズとアラインメントを再計算して再アロケートが必要になるが、このアラインメントで参照カウントの分の考慮漏れがあったらしい
In conversation from qnmd.info permalink