/var/log/hdk.log

2017 年 8 月上旬


01 (火)

%1 8 月

またちょっと Ryzen で遊んでみた。 何か BIOS update で挙動が変わったものの、引き続き一般保護例外は変なところで起きるみたいなので、cc1 改造をまた改変して試してみた。

.macro hoge a,b,c,i,o:vararg
        undefhoge
        alignhoge \a,\b,\c
.L_hoge_\@ :
        mov $.L_hoge_\@,%r10
        cmp .-4(%rip),%r10d
        jne hoge_fail
        \i \o
        defhoge .L_hoge_\@,\a,\b
.endm

こんな感じの簡単な比較だけにしてみた。 おもしろいことに hoge_fail に飛んで落ちるケースは見られないのだが、この付近で一般保護例外で落ちるケースは見られることがある。 それも、%rip が明らかに命令の途中に来てしまっている場合と、そうでない場合とある。 そして、64 バイト手前にきれいにこの jne 命令が来ているパターンがある。

何となく印象としては、何かある種の問題に対する対策が入っているんだけど根本的な対策ができていないという雰囲気みたいな感じ。 問題の見つかった部分にチェックを増やしましたみたいな。 それで、前のバージョンではズレた位置からの相対アドレスジャンプがそのまま行われてズレた位置にジャンプしていたけど、今のバージョンではその時に一般保護例外が起きてジャンプはしないみたいな感じにも見えなくもない。 上のマクロで lea をやめたのも、%rip 相対アドレス指定の lea なんかが何か特別扱いされているような気がしたのが理由。 それでも cmp に %rip 相対アドレス指定を残したのは、その前の mov がズレた位置で実行されればその値が残るし、その状態では cmp はどうあがいても一致はしないだろうみたいな想像で。

もうちょっと別なパターンも試してみたい。

.macro hoge a,b,c,i,o:vararg
        undefhoge
        alignhoge \a,\b,\c
.L_hoge_\@ :
        mov $.L_hoge_\@,%r10
        sub .-4(%rip),%r10d
        cmp $1,%r10d
        sbb %r10d,%r10d
        and $.L_hoge_\@,%r10d
        cmp %r10d,.-4-.L_hoge_\@(%r10)
        jne hoge_fail
        \i \o
        defhoge .L_hoge_\@,\a,\b
.endm

ズレてたらジャンプの前にまず変なアドレスをアクセスしにいくという仕掛け。 これで数分試していたら何も起きないので、一度再起動してやってみたら、なんとすぐに mce で kernel panic。 マジか! 2 度そんなことが起き、3 度目は特に起きなかった。 そして引き続き変な症状としてはやはり一般保護例外。 うーむ。

2017/08/01 のコメントを読む・書く


02 (水)

%1 整形外科

お盆休みを挟むので薬が多めに処方された。 特に症状は変わらずだが、ちょっと自分の中での理解が進んできたので今後は改善の方向に持ち込めるかも知れない。 やはり夜寝る時に神経を刺激する姿勢で寝てしまうと、朝起きてあいたたた、というパターンもあるとのことで、就寝時は要注意だ。

%2 Ryzen 実験

きのうに引き続き変な改造を試した。

.macro hoge a,b,c,i,o:vararg
        undefhoge
        alignhoge \a,\b,\c
.L_hoge_\@ :
        test (%rsp),%rax
        sbb %r10,%r10
        xor $.L_hoge_\@,%r10
.L_hoge2_\@ :
        cmp .L_hoge2_\@-4-.L_hoge_\@(%r10),%r10d
        sbb .L_hoge2_\@-4(%rip),%r10d
        cmovne %r10,%rsp
        lea .,%r10
        test (%rsp),%r10
        \i \o
        defhoge .L_hoge_\@,\a,\b
.endm

だいぶアレな感じになっているが、条件ジャンプでズレた位置に飛んでくれないなら、というわけで、今回はジャンプ命令は無しでいくつかの罠を仕込んである。

で、何かこの罠に引っかかってくれないかと期待しながら試してみたのだが、一般保護例外が、だいたい 2 番目の sbb 命令か lea 命令か最後の \i \o (元の cmp 命令) の位置で、そこそこの頻度で起きるようになったという謎の安定性 (そもそも例外が発生する時点で安定ではないのだが...) が得られただけで、%r10 の内容が変とか、変なアドレスにアクセスされるとか、%rsp が壊れるとか、そういう事象は発生していない。 さすがに cmp 命令の前にこのなぞめいた命令列を入れてしまうと、パフォーマンスの影響は大きそう。 いつもの linux-4.12-rc4 の defconfig -j16 ビルドに 116 秒くらい掛かっている。 なお命令の途中に来ているケースは見られなくなった。

なお、このマクロは先月の実験の際に書いたものをいじって使っているのだが、手が滑って make clean か何かを走らせてしまい cc1 の Makefile に無理やり手で書き加えていたオプションが飛んでしまったので、またやり直した。 今は -include /root/hoge.h -ffixed-r10 としてある。

2017/08/02 のコメントを読む・書く


03 (木)

%1 もくようび

夜、久しぶりに吉祥寺に原付で行ってみたら、武蔵野市の 2 時間無料の原付駐輪場が消えていた。 うへぇ。 そもそも不足気味だったのに撤去とは、何を考えているんだ。 一気に不便になった。

電気屋、電気屋、と頭の中で考えて、三鷹にコジマがあったのを思い出し、そっちに向かった。 営業時間は 21:00 までらしく、余裕もあったが、目的の電動歯ブラシの替えブラシは高かった... 高かったが気にせず買った...

そしてそこから笑えるくらい道に迷いながら SHIDAX に向かいメンズデーひとりカラオケ。 どのくらい迷ったかというと、中央道を調布市内で上から越えるところを初めて通ったし、国領に向かうべきなのに、なぜか柴崎駅前まで出てしまったw 頭の中で、調布、布田、国領と考えて、あれ、柴崎ってそのさらに隣かよ、と。 地図を見ていなかったからだが、国領と柴崎の間に野川が通っている、というような知識もなかったのも問題。 まー原付だとこういう回り道も楽しい。

帰りに、マニアックな品揃えで有名になった、電通大近くのセブンイレブンがどこにできたのかを確認。 よく見なかったけどひょっとして駐車場付き? 甲州街道のこっち側 (都心に近い側) はあまりコンビニが多くないので、駐車場あったら結構利用者いそう。 府中まで来ればファミリーマートがどっち方向にもあるし、日野だか八王子だかのあたりにもいろいろコンビニはあるし、比較的車にやさしいつくりになってくる。 もちろん道を曲がれば調布にだって駐車場付きコンビニはいっぱいあるのだが、甲州街道 (国道) 沿いにあるのは土地勘のない人にはポイント高いだろう。 そう思っていたら常総市ナンバーの原付 (4 ストロークエンジンのリターン式 MT、GS50 か?) が走っているのを見かけて驚いた。 ここは東京都だよ? まさか茨城県常総市から走ってきたのだろうか... すげぇな...

2017/08/03 のコメントを読む・書く


04 (金)

%1 Ryzen 遊び

ちょっとアグレッシブなアイディアを思いつき...

.macro hoge a,b,c,i,o:vararg
        undefhoge
        alignhoge \a,\b,\c
.L_hoge_\@ :
        stc
        sbb %r10,%r10
        test (%rsp),%rax
        xchg %r10,%rsp
        sub $.L_hoge_\@,%rsp
.L_hoge2_\@ :
        not %rsp
        cmp .L_hoge2_\@-4-.L_hoge_\@(%rsp),%esp
        sbb .L_hoge2_\@-4(%rip),%esp
        cmovne %rsp,%r10
        mov $.,%esp
        test (%r10),%rsp
        xchg %r10,%rsp
        \i \o
        defhoge .L_hoge_\@,\a,\b
.endm

これを試したら、あれ? cc1 じゃなくて gcc が一般保護例外起こしたぞ??

[   62.641443] traps: gcc[11902] general protection ip:442c3a sp:7ffd437abdc0 error:0
[   62.641448]  in gcc-5[400000+dd000]
[  190.980616] traps: gcc[19665] general protection ip:442c30 sp:7fffc3d0e2b0 error:0
[  190.980620]  in gcc-5[400000+dd000]
[  642.970249] traps: gcc[22760] general protection ip:442c45 sp:7ffd9085a370 error:0
[  642.970254]  in gcc-5[400000+dd000]
[  669.993371] traps: gcc[31838] general protection ip:442c30 sp:7ffd67371cb0 error:0
[  669.993375]  in gcc-5[400000+dd000]
[  685.618891] traps: gcc[5457] general protection ip:442c30 sp:7ffcd1c20640 error:0
[  685.618897]  in gcc-5[400000+dd000]
[  856.091573] traps: gcc[23889] general protection ip:442c30 sp:7ffe7fd44050 error:0
[  856.091578]  in gcc-5[400000+dd000]

さすがに %rsp に対する普通の足し算引き算以外の演算は最適化されていないんだろうなぁ。 おそらくそれで、パイプラインがストールするか何かして、問題が起こりにくくなるのかなと。 という風に考えれば、%rsp を変えてみるにしても単なる足し算引き算にとどめておくべきだろうなぁ。

%2 映画

テレビでやってた映画『ジュラシック・ワールド』(原題: Jurassic World)。2015 年のアメリカ映画。 字幕無し英語音声で見たので例によってよくわからないが、正直この『ジュラシック・パーク』シリーズというのはあまり細かいことわかんなくても楽しめる映画だよね。 難しいこと言っているシーンもあるんだけど、そこがわかんなくてもあまり問題無い。

先週見たシリーズ第一作 Jurassic Park を意識したとおぼしきシーンもちょくちょくあった。 何言ってるかよくわかんなかったけどおそらく昔使っていたところの跡地みたいな感じのところに紛れ込んで、昔使っていた車を見つけ出して逃げ出す時、たぶん走った道が同じっぽい気がするし、そこでシフトレバーを操作するあたりもそっくりな気が。 って、あの子はもしかして誰にも教わらずにいきなり MT を運転したのか?w あ、でも第一作はフォードだったっけ? 今回ジープと言っていたな。

コンピューターグラフィックスはそれはもう第一作と比べるまでもなくすばらしいのだが、まぁなんていうか観客としても今時はそれに見慣れてしまっているのでね... 第一作ほどの、こんなのを表現したいんだというような思いは伝わってこないというか、そのへんのアクション映画のひとつ、のようにも思えた。 おもしろかったけど。

%3 Nexus 10

特定のゲーム用に細々と使い続けている Nexus 10。 この前ミスってバッテリーを上がらせてしまい、充電しようとしたら充電マークを表示したままハングアップしやがったので電源ボタン長押しでリセット、そのまま充電して復活した、のはいいとして。 このところずっと、100% の時間が異様に長く、下がり始めると一気に (それこそ数分も持たずに) 落ちるという感じだったのが、この前のバッテリー上がりでやっと補正されたっぽい。 これまでにも何度かやっていたんだけどな、明らかに補正された感じっぽいのは今回が初めてだ。 しかし本当にバッテリーの寿命は近づいていると思う。PowerBook の時のように、補正されたと喜んで充放電を繰り返せばそのうち、ね。

2017/08/04 のコメントを読む・書く


05 (土)

%1 どようび

バイクで整形外科行って、帰って昼寝して、ちょっと Ryzen で遊んで、バイクで新ランド経由で新百合ヶ丘行って、旧ランド経由で帰って、オリジナル読んで、コナン見て、のんびり。

バイクは楽しい。GSR250 シリーズの低回転からもりもりトルクは単気筒っぽくて好き。 今日はまたがってメインスタンドをおろす時に、地面の傾きを忘れていて左に傾けてしまって少し焦った。 自分が下手クソだから、乗るたびに発見がある。

テレビアニメの名探偵コナンはオープニングテーマが大黒摩季になってたな。30 代から上の人にはなじみのある声だと思うが、今の子供達には新鮮だったりして?

今住んでいるところに引っ越してきてもう 8 年以上になるが、INAX の温水清浄便座の洗浄強さランプの点滅が始まってしまった。 一応強さの変更は引き続きできるようで、最初から点滅していたらそういう仕様だと思い込んでしまいそうだが、これは INAX の有名なお節介機能だ。 使用開始から 10 年前後で点滅することになっているが、実際のところたぶんまだ 9 年前後で、10 年は経っていないと思う。

スマートフォンと Nexus 10 の充電に使っていた USB ケーブルの被覆がいよいよ 2 か所切れて中の線が見えるようになってしまったので、取り替えた。 前はどの端末についてきたやつだったかな。 今度は ZenFone Max の付属品にした。PHS 端末にはケーブルは付属していなかったっぽいな。

古いバージョンの Skype for Linux は、今月プロセスを再起動したら普通にサインインできてしまった。 どうなってるの? 使えなくなったんじゃないの? もしかしてマジで P2P だから止められないの? でも認証や決済系統は P2P ではないのでは? つまり運営者は止められるはずなのに止めていないだけでは?

テレビでやってた映画は約 1 年 5 か月ぶりの『ボディガード』(原題: The Bodyguard)。1992 年のアメリカ映画。 日本語吹き替え版。 さすがに半分くらい覚えてるよ...

2017/08/05 のコメントを読む・書く


06 (日)

%1 レンタルカート

藤野。3 回乗ってベストタイムは 40.3 秒くらい。 自分遅っ

%2 にちようび

日曜日だけど中央道込んでたな。 やっぱ夏休みだからかな。 行きは小仏トンネルから 6km 渋滞に伸びたのを見て八王子で降りたが、第二出口を使うべきところを第一のほうから出てしまい、無駄に遠回りになった。 帰りは小仏トンネルから 1km 渋滞、登りで前があいてもちんたら走ってた車が降りでなぜか前を煽っているのは頭が吹っ飛んでいるのか。

国立府中で降りて給油。123 円/l。 燃費計算 19.2km/l。 燃費表示 18.1km/l。

2017/08/06 のコメントを読む・書く


07 (月)

%1

今日は天気が悪くなるというので、鉄道利用。 整形外科に行くため早く出て、乗換駅に着いたのはいいが、乗り換えたら混雑している時間帯なので、いつも歩いていたんだけど、日差しが強くて暑いので歩きたくないぞ... ということで、コミュニティバスを使ってみた。 実はタイミングが抜群で、駅到着後バス発車まで 8 分ほどの余裕があるので、混雑している朝の乗客がみんな降りた後からのんびり行っても十分間に合うし、ちょうど地下道の近くにバス停があるので、地下道を使っていけばそれで最初から歩いていくよりは 3 分ほど早く着く感じ。 良い。

%2

雨が降るといっていた割には降らないな、と思いながら帰宅。 途中あまり客が乗ってこないバス停で珍しくリア充な皆様がぞろぞろと乗ってきて、座りたくないだの何だのざわざわと... 邪魔... まーいいけど、漏れ聞こえてきた会話からすれば、京王線に乗るつもりだったのか? 本当にこの人達はこのバスの行き先がわかっているのか? 結局、系統唯一の西武線の駅前バス停を通過し、どこまで乗ったんだろうか (笑) 紛らわしいことに駅名と同じ名前のバス停があるので (地名なので)、そこが駅前だと思って降りていたとしたらおもしろい。 まぁ今時は電子デバイスのおかげで道に迷うことはないだろうし、リア充な皆様はわいわいいいながら移動したことだろう。

しかし、ほんと、もし京王線に乗り換えるとしたらどう乗るのが正解なのか。 西武線に乗る手はあるが、それも結局乗り換えは徒歩だ。 バスの行き先によってはローソン前のバス停まで乗ってしまえば、そこから京王線の駅まで徒歩 5 分くらいか。 あるいは、途中で降りて京王バスを待つ手もありか。 その場合は終点まで乗れば特急停車駅に出られる。

%3 乗り換えといえば

電車時刻表 - NAVITIME

これが、正式な路線名に基づいて情報を載せているみたいで興味深い。 例えば、千駄ヶ谷は「JR 中央本線 (東京-塩尻)」と出るし、鹿児島は「JR 鹿児島本線 (川内-鹿児島)」と「JR 日豊本線 (佐伯-鹿児島)」が出る。 それはもうその通りで一切何も間違っていないのだが、実際には千駄ヶ谷に行っても「中央・総武線 (各駅停車)」があるだけで「中央本線」の文字は見られないだろうし、鹿児島はあたかも日豊本線が鹿児島中央まであるかのように案内されていると思う。

えきから時刻表だと、これがもっと実態に即した名称・区切りで表現されるが、どちらがわかりやすいかと言えば難しいところではある。 もちろん、駅に行って迷わないのはえきから時刻表のほうだと思うが、例えば、鹿児島から鹿児島中央へ向かう列車の時刻表を見たいと思ったとき、えきから時刻表の方式だと日豊本線と鹿児島本線で別々になってしまうが、NAVITIME の方式であればひとつの時刻表として確認できる。 特にあのあたりは本数が多くないので、ひとつになっているほうが見やすい。 都内についても、例えば御茶ノ水の新宿方面行きの時刻表を NAVITIME で出せば、各駅停車も快速もまとめて見られる。 さすがに本数が多いのでごちゃごちゃするが、どれでもいいからこの時間に来るやつに乗りたいみたいな、そういうことであれば NAVITIME のやり方は適していると言える。 御茶ノ水だとあまりそういう需要ないかな、中野〜三鷹間あたりだと平日は快速も各駅停車なので、複々線のどっちでもいいというのはありそう。

2017/08/07 のコメントを読む・書く


08 (火)

%1 台風 5 号

鹿児島県の屋久島と本土と四国に立ち寄った (?) 台風はそのまま和歌山県に上陸してゴリゴリっと大雨を降らせながら日本海側に抜けたらしくて、関東は特に大きな影響無しといったところ。 今日なんか、雨予報が出ていたが雨が降る感じもなかったし、朝昼晩と外にいた間は一切降らなかった。 少し降った跡はあったけど。

%2 低気圧

きのうの夜は台風の影響で Nexus 10 を信じれば自宅あたりも 985hPa くらいにはなっていたっぽい。 なんか軽い頭痛がしていたけど関係があるのかどうかは謎。 だってこのくらいの気圧はちょっと標高の高いところに行けばすぐに経験できるからね。 国道 20 号線の大垂水峠だって標高 392m だから、980hPa くらいにはなってるよねぇ。

2017/08/08 のコメントを読む・書く


09 (水)

%1 すいようび

朝行った耳鼻科がとても空いていたし、昼の職場近くの駅もめちゃくちゃ人が少なかった。 もう世間は夏休みなのか? それとも、9 時台にすでに 30 度を超えていた気温にめげてみんな引きこもっていたか? なお、気象庁アメダスによれば、東京府中の最高気温は 37.6 度 (13:55) だったそうだ (;゜д゜)

ランチの時間も 35 度超えてたらしい... いつものように長袖で、ただし建物の日陰をなるべくたどって移動した。 そういえばランチに寄ったパスタ屋さんもいつになく空いていたな。

%2 券売機の操作方法の勉強

駅がガラガラだったので、JR の指定席券売機の操作を試した。 前に、鹿児島までの乗車券と博多までの新幹線特急券か何かを買おうとして、操作がわからなくて諦めた記憶がある。

まず、新幹線自由席、というのを選んだ場合。 その場合、どっち方面に行くかを選ばせられる。 例えばその中に東海道・山陽・九州新幹線がある。 選ぶと、行き先の新幹線停車駅の一覧っぽいのが出てくる。 全部出ていたのかな? よく見なかった。 そこで例えば鹿児島中央を選ぶと、鹿児島中央を目的地として経路が表示される。 その後、発駅・着駅の変更が可能なようなので、いったん新幹線でどこまで行くかを選ぶべきっぽい。 さらに、その後、往復にするかどうかの選択肢が出て、往復の場合は復路の特急券も買うかどうかも選択できる。 どうも最初に「新幹線自由席」を選んだ場合は、往路の特急券は買うのが前提なようだ。 後から気になったのは、例えば博多にして鹿児島中央行きの選択が可能なのか? これは試さなかった。 八代〜川内間が第三セクターの肥薩おれんじ鉄道になってしまっているので、どういう表示になるのか興味深いところだ。 肥薩線とか日豊本線大回りとかになったら笑い話である。

次に、乗車券、だっけ、経路検索、だっけ、そんな感じのところを選んだ場合。 これはまず駅名入力だ。 例えば「鹿児島」とか入れるわけだ。 そこに、新幹線を使う、みたいな選択肢があった気がする。 入れるとしばらく (10 秒くらい?) 待たされて、選択肢が出てくる。 新幹線を使うなら、当然、東海道・山陽・九州新幹線を使う経路が出てくる。 新幹線は、時間の関係だろうが新神戸乗り換えとかいう訳のわからない選択肢が出る。 これを選んで、その後の操作で往復の選択肢と、乗車券のみの選択肢も出てくる。 乗車券のみなら、新神戸乗り換えだろうが博多乗り換えだろうが関係はないはずだ。 特急券は面倒だが別途買えば良い。 もし、新幹線の途中下車のために特急券をわけるつもりなら、こっちの方法のほうがわかりやすそうだ。

前に諦めた時は、たぶん、新幹線を使わない、にしちゃったんだと思う。 新幹線を使わないので、八代〜川内の経路が出ず、肥薩線を使って隼人に出るか、日豊本線で宮崎経由か、になってしまったんだろう。 具体的にどんな表示になっていたかは覚えていない。 大事なのは、新幹線使うよ、使うよ、使うよ、と操作していって、でも特急券はいらないよ、と、後から不要なものを除外するインターフェイスだということ。 特急券を一緒に買う場合でも、新幹線でここまで行くよ、ここまで行くよ、でも乗車券はこっちまでにしてね、みたいな流れ。 なんか、もっとこう、経由地を順に指定していけるような、インターフェイスを用意してくれてもいいと思うけどねぇ。 長距離だと経路の選択肢も多いからねぇ。

2017/08/09 のコメントを読む・書く


Powered by Tomsoft Diary System 1.7.4

/var/log/hdk.log コメント一覧

トップ / 日記索引 / 日記 (2017 年 8 月上旬)

Hideki EIRAKU