tarosukeの日記: [talos]ネットワーク
日記 by
tarosuke
原因判明。自前のdeleteが腐ってた。newでは確保した領域の先頭にサイズを書いて、その次の位置を返すのでdeleteでは一つ前の場所にサイズが書いてあるものとしなければならない所をdeleteでその場から「サイズ」を拾って解放してた。タコミスって奴だ。んで、今はARPエントリを探してからmacアドレスをコピーするまでの間にエントリが削除されてしまう場合についてデバグ。要はarpテーブルをLOCKすりゃいいんだが、別ブロックなのでどうしたものかと...。
同じheapを使いながらパケットバッファの確保/解放で死ななかったのは、パケットバッファはサイズがわかっているのと確保するサイズがクラスのサイズより大きいので独自のnew/deleteを使い、heapからは「サイズがわかってるブロック用」のGet/Relでバッファを管理してたためこのバグには引っかからなかった。
[talos]ネットワーク More ログイン