ns2 segment fault

完成了一个发送beacon的程序,但是出现segment fault了,调试到最后发现是channel.cc中在更新节点的时候链表出问题了。再仔细一看,发现是原来的逻辑是需要链表是有序的,结果几次调用之后居然无序了,有一些节点的值进行变化,但是节点链表中的顺序始终不变,导致问题出现了。
再深入看一下,原来是TransV1.2中竟然手动设置节点的位置,而不是调用set_destination函数:
// set node exactly to old destination
node->X_ = node->destX_;
node->Y_ = node->destY_;
// move node to position
// velocity = space / time
if (destTime > now)
{
speed = sqrt((node->X_ – x)*(node->X_ – x) + (node->Y_ – y)*(node->Y_ – y)) / (destTime – now);
// set_destination returns 0 on success
if ( node->set_destination(x, y, speed) )

奇怪的是作者一边手动赋值,一边又调用函数,真得不知道怎么想的,sigh

给我的感觉是ns2跟其他的扩展结合的太紧密了,很容易就出错啊……

Leave a Reply

Your email address will not be published. Required fields are marked *