憂鬱な午後のひととき

4月30日_

address sanitizer

clangのASanはdlopen時にRTLD_DEEPBIND指定すると駄目らしい. 昔はまったのはこれかなあ(当時は警告も出ずに落ちていた). gccのASanは動いてる模様. ちなみにclangのメッセージにtypoが(incompatibe→incompatible).

shared library with RTLD_DEEPBIND flag which is incompatibe with sanitizer runtime
4月29日_

ゆるバグ開催

結局28人参加でLTも4名。楽しんでもらえたようでよかった. 調子に乗ってゆるバグ2も.

4月27日_

大学のゼミ

とある大学のゼミで私の暗号の本を使ってくれてるらしい. ありがたい.

4月26日_

回数券

当分使えないので払い戻ししてもらった. メトロのはそこまでいくのが面倒なので手元にあるまま.

4月25日_

Travis-cis on Linuxでだけ落ちるバグ

Xgoでもbuild errorになるという報告. 試そうとしたけどXgo自体を動かせなかった.

4月24日_

ゆるバグ

フル在宅勤務になってもう2カ月になるのでちょっと雑談したくなった. ゆるバグをしてみることにした.

4月23日_

wasm for clang

wasm-ldに渡すスタックサイズのオプションは--stack-size=ではなく-z --stack-size=だった. clangでまとめて複数ファイルをbuildしたものは落ちなくなった. しかしclangでobjファイルを作り、wasm-ldでlinkしたものは落ちる. なんでかなあ.

とりあえずベンチマーク.

emscripten vs. clans
emscripten clang
pure C++ 4.4654.924
with llvm bitcode 4.617 4.887

なんとemscripten + pure C++が一番速いという結果に. 同じ-O3オプションなのになぜだろう. もっといろいろリンカオプション試さないといけないのか. でも疲れた. emscriptenでCライブラリなしバージョンを作る方法を調べる方がよいか.

4月22日_

wasm for clang

emscriptenとclangの違い. exportされる関数にアンダースコアがつくかつかないか. WebAssembly.instantiateされたinstance.exportsにメンバーはふやせない. HEAP8やHEAP32はexportsに追加する. clangは__memory_baseや__stack_pointerはみてくれない???

blsInitはできるようになったけどスタックが約65KBでGLVメソッドが動かない. それ以外は大丈夫な模様. あと一息か.

4月21日_

wasm for clang

malloc/freeをstackのalloca/releaseに置き換える準備としてmallocとfreeが正しく入れ子になってるか確認する. 一カ所ミスっていたので修正. やっぱり目視じゃだめだな.
その他いろいろ.

シンボルなどをみるにはllvm-objdump -full-contents -section-headers
llvm-8から--export-dynamicをつけないとexportされない.

4月15日_

clang vs gcc

mclが何故かgccでbuildするとclangより15%ほど遅くて何が悪いのかよく分からなかったのだけどずっと放置していた. ちゃんと調べようとJITプロファイルをとる. asm化されているのは差がない(当たり前)なかでsqrFp4と関数だけ結構違いがあった.

asmコードを見比べるとgccはfs:40にアクセスしにいってる. スタックオーバーフロー検知が有効になっていた. -fno-stack-protectorで無効化する. しかし1%ほどしか速くならず.

もう一度asmコードをよく読むと不要なはずの配列の初期化が走ってる模様. デフォルトcstrは空のはずなんだけどと自分のコードを見直すと、FpDblクラスだけ配列の初期化が入っていた.

FpDblT() : v_()
{
}

うっかりいれちゃっていた模様. 削除するとgcc-7.5で13%高速化. おおこいつのせいだったのか. それでもclang-8より4%ほど遅いけど気がすっきりした. でも配列の初期化で1割変わるというのは(clangは速いだけに)何か変なことしてるのかな.

clangはxmmレジスタ使ってstackをクリアしてたけどgccはrep stosqを使ってたからその差か. 小さい配列なので(高速化されてる)rep stosbだと互角だったかもしれない.

4月13日_

clangでwasm

昔触ったときは中途半端だったけど, 最近はだいぶよくなっているようだ. emscriptenからclangに移行できるか試してみる.

4月12日_

楕円曲線演算

昔からのec.hppと新しいmapto関数で重複コードがあったのでがんばってリファクタリング. 微妙に高速化も.

4月11日_

8割おじさん

私の知らないところで諮問委員会の資料の数値が書き換えられていたのです. (snip) なぜそんな嘘が出回っているのだろうと考えた時に, 背後にどういう人がこういう仕掛けをしているか, 罠のようなものまで見えてきたのです. そこで, 自分で打ち消す発信を始めました.

空気を吸うように嘘をつく政府をまわりが必死に取り繕っていたけど, しがらみのない人はさくっと反論するということだろうな.

私も含めて, 専門家はほぼみんな無報酬でこの仕事をしています. 謝金を受け取れるのかもしれませんが, 専門家として政府や国からの独立性を保つ意味もあります.

(西浦さんがどうこうというのではなく)専門家に仕事をしてもらっているのだから国は正しく対価を払わなければならない. そして, お金をもらったから独立性が保たれない, 国の思惑に従わなければならないというおかしな風潮はなくさなければならない.

4月10日_

マクロ

#define AAA aaa

#if AAA == aaa
void foo() {}
#endif

#undef AAA
#define AAA bbb

#if AAA == aaa
void foo() {}
#endif

二つ目のifでわざわざAAAをundefしてbbbにしてるのに中に入ってfoo()が二重定義になってしまう. なんでかなとしばらく悩んだけどaaaもbbbも定義されていないのでどちらも0だから等号成立するのであった. マクロ難しい.

4月9日_

MS-Teams

Zoomの脆弱性が話題で少しTeamsを使ってみる. uservoiceに改良点のアイデアを提案.

4月8日_

本屋休館

図書館も休館. 予約資料の受け取りぐらいなら継続できないかなと思うけれども残念だが仕方がない.

4月7日_

モバイルディスプレイ

どうも不安定で時々画面がくずれたり, 消えたりする. ノートPCからtype Cでの給電でなく, ACアダプタに直接つないだら安定した. 電源不足だったか.

4月6日_

TypeScript

勉強始めたけど, 最初の環境構築がめんどいな.

4月3日_

IEICEの氏名和文検索

全文一致で「姓名」, 「姓 名」(半角スペース),「姓 名」(全角スペース)でヒットせず, 部分一致で「姓名」もヒットしないのなんとかならんのか. 正解は「姓 名」か「姓 名」で部分一致を選択. ここって電子情報通信学会だよね.

「全文一致の場合は, 半角と全角の空白は区別されません」は区別せずヒットしないという意味なのか.

4月2日_

multi aggregate signature

ハッシュ関数を適当に決めて実装した.

会社でよく使うマシンがAVX-512対応になった.

4月1日_

マスク2枚

冗談は内輪だけにしてほしい.


御意見は光成滋生<herumi@nifty.com>までお願いします