[Ns-bugs] [Bug 159] New: Infinite loop in packet metadata code for large packets.
bugzilla-daemon@nsnam-www.ece.gatech.edu
bugzilla-daemon at nsnam-www.ece.gatech.edu
Thu Apr 3 11:52:19 PDT 2008
http://www.nsnam.org/bugzilla/show_bug.cgi?id=159
Summary: Infinite loop in packet metadata code for large packets.
Product: ns-3
Version: pre-release
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P3
Component: simulation core
AssignedTo: ns-bugs at isi.edu
ReportedBy: evensky at dancer.ca.sandia.gov
CC: evensky at dancer.ca.sandia.gov
I've attached a test case, but when creating large packets (size > 16383) with
Packet::EnableMetadata() there is a hang. If the EnableMetadata() is commented
out, then there is no hang. If you step in gdb through the code, it appears to
be stuck in an infinite loop.
\dae
Code---%<-------------------%<----------%<----------%<----------%<---------%<
#include "ns3/packet.h"
#include "ns3/ptr.h"
#include <iostream>
int main() {
int size[] = {10, 100, 1000, 16000, 16300, 16350, 16383, 16384, 16390, 16400,
100000,
0};
// note: comment this out, and there is no hang.
ns3::Packet::EnableMetadata();
for (int i = 0; size[i]; i++) {
std::cout << "creating packet of size=" << size[i] << "....";
ns3::Ptr<ns3::Packet> p = ns3::Create<ns3::Packet> (size[i]);
std::cout << "done." << std::endl;
}
}
Compiled as%<---------------%<----------%<----------%<----------%<---------%<
g++ -DNS3_ASSERT_ENABLE -DNS3_LOG_ENABLE -DDEBUG -Wall -Werror -g -O2
-I/.../ns-3-dev/build/debug -I/.../ns-3-dev/build/debug -I. -c -o
packet_too_big.o packet_too_big.cc
g++ -o packet_too_big packet_too_big.o -L/.../ns-3-dev/build/debug -lns3
-Wl,-rpath=/.../ns-3-dev/build/debug
gdb output---%<-------------%<----------%<----------%<----------%<---------%<
$ gdb packet_too_big
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) run
Starting program: /.../packet_too_big
creating packet of size=10....done.
creating packet of size=100....done.
creating packet of size=1000....done.
creating packet of size=16000....done.
creating packet of size=16300....done.
creating packet of size=16350....done.
creating packet of size=16383....done.
Program received signal SIGINT, Interrupt.
0x00002ad6f62a819e in ns3::PacketMetadata::AddSmall (this=0x61c598,
item=0x7fffb4def610) at ../src/common/packet-metadata.cc:458
458 if (end - start >= 8 &&
(gdb) where
#0 0x00002ad6f62a819e in ns3::PacketMetadata::AddSmall (this=0x61c598,
item=0x7fffb4def610) at ../src/common/packet-metadata.cc:458
#1 0x00002ad6f62a4a84 in ns3::PacketMetadata::DoAddHeader (this=0x61c598,
uid=0, size=16384) at ../src/common/packet-metadata.cc:722
#2 0x00002ad6f62a8493 in PacketMetadata (this=0x61c598, uid=7, size=16384) at
../src/common/packet-metadata.h:313
#3 0x00002ad6f62bdbb8 in Packet (this=0x61c570, size=16384) at
../src/common/packet.cc:84
#4 0x0000000000400e8f in ns3::Create<ns3::Packet, int> (a1=16384) at
/.../ns-3-dev/build/debug/ns3/ptr.h:231
#5 0x0000000000400dec in main () at packet_too_big.cc:17
--
Configure bugmail: http://www.nsnam.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the Ns-bugs
mailing list