08/06/16 20:56:24
OpenBSDでClispをビルドすると
なぜか実行ファイル作成機能が壊れてしまうので
ソースを追ってみたのですが
とても不思議な現象に遭遇しました。
実行ファイルを指すファイルディスクリプタから
readで読み込む部分の前に
読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと
EFAULTが起こります。
読み込み先メモリに4000バイト間隔で1バイトの読み込みOR書き込みを行ってから
readすれば正常に動作します。
なぜでしょう?
ちなみに4000バイト・EFAULTというのはi386プロセッサの場合で
armプロセッサの場合はそれぞれ3999バイト・EACCESになります。