看板 PttCurrent 關於我們 聯絡資訊
※ 引述《[email protected] (於是我開始等妳)》之銘言: : 確實, check_newpost() 中不該動到 lastposttime[] 的 : 可是 code 會這樣寫似乎是預防記憶體爛掉, SHM 裡的東西總是... 這樣子說, 不是太怪了嗎? lastposttime 被動到的情況很有限, 要不是被 set 作 0 , 就是 setbtotal 的場合 : SHM->lastposttime[bid - 1] = (time_t) atoi(&genbuf[2]); 如果要爛掉, 似乎有三個可能, a) 外部因素, 比如其他地方出現 buffer overflow, 或 mbbsd 以外的東西爆炸. b) 內部因素, 比如 &genbuf[2] 讀入一堆奇怪的數字 c) check_newpost 時 set 了做莫名其妙的東西. 當中, 以 c 發生的機率最高. : 我在實際 log 不少資料後發現, ftime > now 時, : 大部份的情況下 ftime 和 now 的差距在十以下, 等一下, 我得提醒你, include.h/var.h: extern time_t now; 也不是善男信女乖小孩, ctime(&now) 雖然不時有被 call, 但有有時不知 是個甚麼. 其他程序也太濫用 now 了. : 但是少數情況卻高達一百多, 這就不像單純 innbbsd 的問題了 例如站內轉信, 又例如某些變態的內部 post 文方法. (我常被罵引用 util 的怪東西..) : 所以我會這樣改的想法是, 十以下算常見的 case, 我們也知道那是正確的 : 所以就讓他過去, 但是其他情況下當他是爛的. 試試開一個 stat 統計一下爛掉 (ftime > now) 的頻率 ? 但必須注意 now 到底是甚麼. 如果 ftime 很乖, 但 now 是一個死小孩, 那很容易會殺錯良民. -- ※ 發信站: 香港地(hkday.net) ◆ From: 61.238.143.229