作者:
ric2k1 (Ric)
2012-12-31 15:38:21哈哈,果然是一個 bug,跟大家分享一下。
原因有兩個:
1. 其實我從 HW#6 把 deleteCircuit() copy 過來之後
忘記把 sim 以及 fraig 的 reset 加進來,
所以在某修狀況下會有些東西沒有被清乾淨。
(不過這個不是造成 crash 的原因)
2. 真正造成 crash 的原因是我忘記 reset 我的 _const0 了。
我的 _const0 是個 static data member, 在電路 reset 或是 delete 之後
_const0 仍然會存在,但是 _const0 裏頭存的一些關於 sim 或是 fraig 的資料
其實已經無效,所以會造成 crash!
(reportGate() 以為還有 FEC data)
修正過的 fraig-{32,64} 已放到 ceiba 的公布欄上,
作業區的 fraig.tgz 也一併更新。
※ 引述《pochih ()》之銘言:
: 我對老師的ref program輸入以下指令
: fraig> cirr tests.fraig/sim07.aag -r
: fraig> cirsim -r
: MAX_FAILS = 14
: 512 patterns simulated.
: fraig> cirr a.aag -r
: Note: original circuit is replaced...
: fraig> cirg 0
: ==================================================
: = CONST(0), line 0 =
: 程式記憶體區段錯誤 (core dumped)
: 竟然就crash了
: 其中a.aag就是spec裡command cirsweep的那個例子
: aag 10 3 0 1 6
: 2
: 4
: 6
: 8
: 8 4 6
: 10 3 4
: 14 12 10
: 16 10 8
: 18 14 16
: 20 14 16