ToDo:
tDiaryスタイルはいまいち書きにくいし、Hiki v0.8を使いはじめたので Wiki系のフォーマットの方が嬉しい
と言うわけで、Wikiスタイルを導入
練習も兼ねて、古い日記をWikiスタイルに変換...
うは、.td2更新しても cache/*.parserを飛ばさないと 再パースしてくれないのね orz
ケーブル整理のため amsad 5号機を停止して、再起動したら 電源ボタンロゴが出てリブートするように言われる
しかも、リブートしたら MacOS Xの立ち上げ画面でプログレスバーが 伸びたまま、先に進まなくなる
ICMP echo requestに答えてくれるが、TCP/UDP系のサービスは停止状態で 手が出せない orz
なんか変なので、TechTool Proを借りて来て調査開始、 エラーが出た項目は、File System関係のみで、 HDDは無事なようなので、インストールDVDから立ち上げて fsck_hfsによる修復を試みるが、Index Key Lengthが合わないとか 言って fsck_hfsが仕事してくれない orz
amsad5にしかないインストールメモは回収して他のマシンに配ったので 最悪1日かけて再インストールすれば、良いのだが...
インストールDVDを入れたついでに、AHTを実行したら... メモリにエラーが有るそうです orz (TechTool Proのメモリテストは信用できないということか)
27日の日記でLLVM-GCCを使ってコンパイルしたSADだが、 common block回りの不具合原因が判明。
ここで問題です、次の Fortranコードを llvm-gfrotranで コンパイルした場合、どんな結果が出力されるでしょう?
implicit none integer*4 i logical*4 flags(64),flag1,flag2,flag3 common /tflags/flags equivalence (flag2,flags(2)) equivalence (flag3,flags(3)) do i=1,64 flags(i)=.false. enddo write(*,*)'Clear:' write(*,*)'flags(1)=',flags(1) write(*,*)'flag1=',flag1 write(*,*)'flags(2)=',flags(2) write(*,*)'flag2=',flag2 write(*,*)'flags(3)=',flags(3) write(*,*)'flag3=',flag3 flag2=.true. write(*,*)'After: flag2=.true.' write(*,*)'flags(1)=',flags(1) write(*,*)'flag1=',flag1 write(*,*)'flags(2)=',flags(2) write(*,*)'flag2=',flag2 write(*,*)'flags(3)=',flags(3) write(*,*)'flag3=',flag3 do i=1,64 flags(i)=.false. enddo write(*,*)'Clear:' write(*,*)'flags(1)=',flags(1) write(*,*)'flag1=',flag1 write(*,*)'flags(2)=',flags(2) write(*,*)'flag2=',flag2 write(*,*)'flags(3)=',flags(3) write(*,*)'flag3=',flag3 flags(1)=.true. write(*,*)'After: flags(1)=.true.' write(*,*)'flags(1)=',flags(1) write(*,*)'flag1=',flag1 write(*,*)'flags(2)=',flags(2) write(*,*)'flag2=',flag2 write(*,*)'flags(3)=',flags(3) write(*,*)'flag3=',flag3 flag1=.false. write(*,*)'After: flag1=.false.' write(*,*)'flags(1)=',flags(1) write(*,*)'flag1=',flag1 write(*,*)'flags(2)=',flags(2) write(*,*)'flag2=',flag2 write(*,*)'flags(3)=',flags(3) write(*,*)'flag3=',flag3 end
Subversion resporitory revision 48818での結果は、以下の通り。
Clear: flags(1)= F flag1= F flags(2)= F flag2= F flags(3)= F flag3= F After: flag2=.true. flags(1)= T flag1= F flags(2)= F flag2= T flags(3)= F flag3= T Clear: flags(1)= F flag1= F flags(2)= F flag2= F flags(3)= F flag3= F After: flags(1)=.true. flags(1)= T flag1= F flags(2)= F flag2= T flags(3)= F flag3= T After: flag1=.false. flags(1)= T flag1= F flags(2)= F flag2= T flags(3)= F flag3= T
要するに、EQUIVALENCE文に配列を添字付きで与えた場合、 添字の部分が無視されているようです。
バグ 1971でも EQUIVALENCEの不具合が報告されている模様です。
SADは、common blockとEQUIVALENCEを多用してるので このバグが直らない限り、LLVM-GCCを使うのは絶望的です。
SADの CVS repositoryから調査用に変換生成した Subversion repositoryを あさってみると...
といったことが、分かりました。
開発形態は、少数精鋭による典型的な伽藍モデルのようです。
あとは、CVS repository導入直後から現代までのコード行数の変遷でも 調べて見るべきか?
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記
_ Y氏 [バグ1971は直ったようですね。]