[Bug Report]
-----------------------------
Category: Run Time - Segmentation Fault
Package: ns 2.31
OS: windowsXP
Environment Variables:
export PATH=$NS_HOME/tcl8.4.14/unix:$NS_HOME/tk8.4.14/unix:$NS_HOME/bin:$PATH
export
LD_LIBRARY_PATH=$NS_HOME/tcl8.4.14/unix:$NS_HOME/tk8.4.14/unix:$NS_HOME/otcl-1.13:$NS_HOME/lib:$LD_LIBRARY_PATH
export TCL_LIBRARY=$NS_HOME/tcl8.4.14/library
-----------------------------
Description:
Description of Problem:
When the topo contains both wired nodes and wireless node, this scrip will lead
a Segmentation Fault in common/simulator.cc:186 & 255,
the author didn't check wheather "nodelist_[i] == NULL"
also it seems that the codes "i++" in line 182 and 212 of simulator.cc are
redundant
The error information "
Program received signal SIGSEGV, Segmentation fault.
0x0054bb70 in Simulator::node_id_by_addr(int) ()
"
How Easily Reproducible:
(e.g. every time, intermittent, once only, etc.)
every time
Steps to Reproduce:
(describe the minimal set of steps necessary to trigger the bug)
1. run the following scrips:
###############################################################
# test for the bug
# SeaSon from HIT
set ns_ [new Simulator]
$ns_ node-config -addressType hierarchical
Node set useFhmip_ true
AddrParams set domain_num_ 5
lappend cluster_num 2 1 1 2 2
AddrParams set cluster_num_ $cluster_num
lappend eilastlevel 1 1 2 1 1 1 1 1
AddrParams set nodes_num_ $eilastlevel
# to show ack number, header flags, header length
# Note: only useful though if using tcpfull
#Trace set show_tcphdr_ 1
set tracefd [open traffic.tr w]
# $ns_ use-newtrace
$ns_ trace-all $tracefd
set topo [new Topography]
$topo load_flatgrid 1000 1000
set god_ [create-god 1]
##############
# NODE SETUP #
##############
# Wired nodes => CH, MAP, N1, N2, N3
#
#CH - 0
set CN [$ns_ node 0.0.0]
#MAP - 1
set MAP [$ns_ node 2.0.0]
#N1 - 2
set N1 [$ns_ node 0.1.0]
#N2 - 3
set N2 [$ns_ node 3.0.0]
#N3 - 4
set N3 [$ns_ node 4.0.0]
# NOAH nodes (wireless+wired) => HA, PAR, NAR
# MN is a special node (i.e. a NOAH node with wiredrouting turned off)
set chan_ [new Channel/WirelessChannel]
$ns_ node-config -mobileIP ON \
-adhocRouting AODV \
-llType LL \
-macType Mac/802_11 \
-ifqType Queue/DropTail/PriQueue \
-ifqLen 50 \
-antType Antenna/OmniAntenna \
-propType Propagation/TwoRayGround \
-phyType Phy/WirelessPhy \
-channel $chan_ \
-topoInstance $topo \
-wiredRouting ON \
-agentTrace ON \
-routerTrace OFF \
-macTrace ON
#HA - 5
set HA [$ns_ node 1.0.0]
# [$HA set regagent_] priority 3
#MN - 6
$ns_ node-config -wiredRouting OFF
set MN [$ns_ node 1.0.1]
[$MN set regagent_] set home_agent_ [AddrParams addr2id [$HA node-addr]]
$ns_ node-config -wiredRouting ON
#PAR - 7
set PAR [$ns_ node 3.1.0 2.0.0]
# [$PAR set regagent_] priority 3
#NAR - 8
set NAR [$ns_ node 4.1.0 2.0.0]
# [$NAR set regagent_] priority 4
#####################
# PLACEMENT of NODE #
#####################
$CN set X_ 80.0
$CN set Y_ 5.0
$N1 set X_ 120.0
$N1 set Y_ 10.0
$HA set X_ 160.0
$HA set Y_ 5.0
$MN set X_ 160.0
$MN set Y_ 5.1
$MAP set X_ 120.0
$MAP set Y_ 15.0
$N2 set X_ 85.0
$N2 set Y_ 60.0
$N3 set X_ 155.0
$N3 set Y_ 60.0
$PAR set X_ 85.0
$PAR set Y_ 135.0
$NAR set X_ 155.0
$NAR set Y_ 135.0
##############
# LINK SETUP #
##############
# droptail = (FIFO), RED = Random Early Detection
$ns_ duplex-link $CN $N1 100Mb 2ms RED ;# Since consitiute a domain, so
we simplify it by just use 100M and keep the delay of 2ms constant
$ns_ duplex-link $HA $N1 100Mb 2ms RED ;# same as above
$ns_ duplex-link $MAP $N1 100Mb 50ms RED ;# We increase the dealy to 50ms
to show the advantange of MAP
$ns_ duplex-link $N2 $MAP 10Mb 2ms RED ;# All nodes below MAP belongs
to a single domain, therefore we keep the delay at constant 2ms and vary the
$ns_ duplex-link $N3 $MAP 10Mb 2ms RED ;# bandwidth in a decreasing
order, i.e. from 100M to 10M to 1M.
$ns_ duplex-link $PAR $N2 1000Kb 2ms DropTail
$ns_ duplex-link $NAR $N3 1000Kb 2ms DropTail
#####################
# APPLICATION SETUP #
#####################
# RCH Attaching the MAP agent.
# $ns_ attach-mapagent $MAP ;# Need to enable MAP_MODE in mip-reg.cc
set tcp_(1) [$ns_ create-connection TCP $CN TCPSink $MN 1]
$tcp_(1) set window_ 32
$tcp_(1) set packetSize_ 512
# RCH Setting connection monitor - to compensate the non existance of
frequency jumping in 802.11.
# $ns_ connection-monitor 1 $MN
#trace all congestion window (cwnd) value for this TCP connection
set cwndtrace [open all.cwnd w]
$tcp_(1) trace cwnd_
$tcp_(1) attach $cwndtrace
set ftp_(1) [new Application/FTP]
$ftp_(1) attach-agent $tcp_(1)
$ns_ at 5.0 "$ftp_(1) start"
$ns_ at 80.0 "$ftp_(1) stop"
############
# SCENARIO #
############
# $ns_ at 6.0 "$MN set X_ 85.0"
# $ns_ at 6.0 "$MN set Y_ 135.1"
$ns_ at 10.0 "$MN setdest 155.0 135.1 1"
for {set t 10} {$t < 80} {incr t 10} {
$ns_ at $t "puts stderr \"completed through $t/80 secs...\""
}
$ns_ at 0.0 "puts stderr \"Simulation started...\""
$ns_ at 80.0001 "puts stderr \"Simulation finished\""
$ns_ at 80.0002 "close $tracefd"
$ns_ at 80.0003 "$ns_ halt"
$ns_ run
####################################################################
2.
3.
Actual Results:
(describe what the application did after performing the above steps)
Expected Results:
(describe what the application should have done, were the bug not present)
Additional Information:
(the following infomation is helpful to debug:
1. simulation script, detailed output files, packet trace
2. patch file if you modify some source code
3. a backtrace from gdb if you get a segment fault
If they are big files, PLEASE put them in your web space and
include the URL here.)