NS3 --- ns-3.36.1 --- assert failed. cond="m_current >= delta"


# 错误

[root@ztg ns-3.36.1]# ./ns3 run scratch-paper2-lte-wifi

create nodes
assert failed. cond="m_current >= delta", +20.799092640s 9 file=/opt/ns3/ns-allinone-3.36.1/ns-3.36.1/build/include/ns3/buffer.h, line=865
terminate called without an active exception
Command 'build/scratch/ns3.36.1-scratch-paper2-lte-wifi-debug' died with <Signals.SIGABRT: 6>.

# 解决方法:

gedit ./src/network/model/packet-metadata.cc

    PacketMetadata::ItemIterator::Next (void)
    {
    //ztg
      int delta;

    //ztg
    //          item.current.Prev (m_buffer.GetSize () - (m_offset + smallItem.size));
    //----------------------------------------------------------------------------------------------------
          delta = m_buffer.GetSize () - (m_offset + smallItem.size);
    //          std::cout << "m_buffer.GetSize (): " << m_buffer.GetSize () << " m_offset: " << m_offset << " smallItem.size: " << smallItem.size <<std::endl;
    //          std::cout << "m_buffer.GetSize () - (m_offset + smallItem.size) delta: " << delta <<std::endl;
                            //m_buffer.GetSize (): 102 m_offset: 118 smallItem.size: 4
                            //m_buffer.GetSize () - (m_offset + smallItem.size) delta: 4294967276
          if (delta > 0) item.current.Prev (delta);
          else item.current.Prev (0);
    //----------------------------------------------------------------------------------------------------
    }


gedit build/include/ns3/buffer.h

    void
    Buffer::Iterator::Prev (uint32_t delta)
    {

    //  std::cout << "m_current: " << m_current << " delta: " << delta <<std::endl;
      
      NS_ASSERT (m_current >= delta);
      m_current -= delta;
    }
posted @ 2022-06-27 18:45  张同光  阅读(381)  评论(1编辑  收藏  举报