変数初期化の重要性
とある(比較的広く使われている)C言語のプログラムをデバッグしていたのだけれど、なんか初期化されていない変数を使っていそうな感じの箇所が多い。
そこで、全体をgcc -Wmaybe-uninitialized
でチェックしてみると、結構出てきた。
(デバッグの話はこれで終わり。)
もっとも、maybeだけあって、必ず妥当な警告を出すわけではなくて、
とある(比較的広く使われている)C言語のプログラムをデバッグしていたのだけれど、なんか初期化されていない変数を使っていそうな感じの箇所が多い。
そこで、全体をgcc -Wmaybe-uninitialized
でチェックしてみると、結構出てきた。
(デバッグの話はこれで終わり。)
もっとも、maybeだけあって、必ず妥当な警告を出すわけではなくて、
「Waves 全部入り」だったはずの Mercury、今となっては入ってないのが結構あって、
https://www.minet.jp/brand/waves/mercury/
にも「*以下のバンドルおよびプラグインはMercuryには収録されていません。」とか書いてあるんだけど、更新されてなくて他にも入ってないのがあるという話題。
(まあ、私はL3しか持ってないんだけど。)
…
PyTorchというか、torchvisionを使おうとしただけで、こんなエラーが:
ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'
Pillow 7.0.0でPILLOW_VERSION
が削除されたのが原因らしい。
PILLOW_VERSION has been removed. Use __version__ instead.
https://pillow.readthedocs.io/en/stable/releasenotes/7.0.0.html
とはいえ、ライブラリ内で使われているし、いろいろ理由があってライブラリのバージョンを下げたりライブラリを直接修正するのもできない。
で、
import PIL
PIL.PILLOW_VERSION = PIL.__version__
from torchvision import ...
とかいうアレなworkaroundを思いついた(動く)んだけど、これでいいのかPython。
特定のコードを特定のコンパイルオプションつきでコンパイルするとこんなのが出る
warning: argument 1 value '18446744073709551615' exceeds maximum object size 9223372036854775807 [-Walloc-size-larger-than=]
例えば NetBSD の src/lib/libc/gen/asysctl.c を -O3 で(というか -O2 -fsplit-paths でも)コンパイルすると出る。
通常は -O2 なので出ない。
…
NetBSD/amd64 8.0_STABLE(以下 8.0)
NetBSD/amd64 8.1_STABLE(8.1)
NetBSD/amd64 9.0_BETA(9.0)
こんな感じの、中からの通信はプロトコルを問わないけれど、外からはsshだけ受け付ける npf.conf
:
$ext_if = "bge0" # or "re0" or ...
$ext_v4 = inet4($ext_if)
group "external" on $ext_if {
pass stateful out final all # rule (1)
pass in final proto tcp to $ext_v4 port ssh # rule (2)
}
default {
pass final on lo0 all
block all # rule (3)
}
だけど、8.1, 9.0 だと外から ssh で接続できない。
…
Kindle Oasis 旧型の安売りで手に入れた。
一番安いモデルでもいいかと思ったけど、不満で乗り換えて……を繰り返すよりはいいかなと。
(Amazon側の話と出版社側の話とか、ハードとソフトとか、ごっちゃになってるけどわざとだよ。)
…
追記:2020年5月頃からTSCまわりのコードが大幅に改善され,ここで示している cpu_counter_serializing()
などのコードは取り除かれています。
timecounter “TSC” の続き
…
追記:2020年5月頃からTSCまわりのコードが大幅に改善され,この症状はなくなりました。
NetBSD/amd64 on ECS LIVA Z の続き
sysctl
で kern.timecounter.hardware
を TSC 以外にしてやれば、時計の狂いはなくなるのだけれど、全部が解決したわけでもないらしい。
…