0

I have problems simulating release mode. I have a project referencing Inet, Veins, and simulte. The project works fine in the debug mode, the simulation ends, and the results are correctly saved both in Qtenv and Cmdenv. I'm using the IDE, and it suggests running the simulations in release mode to improve the simulation's speed. In that dialog window, I accept the suggestion, and the IDE starts building the projects in release mode; however, when the simulation starts, it freezes in the first event, and it crashes.

I want to use the release mode. By now, I've tried the following things to check if I can fix this:

  • Build each project in release mode, changing each configuration individually, and then building the projects.

  • I tested the examples in Inet, Veins, and Simulte, and each of these works in the release mode.

  • I created a new configuration (.ini) to check if there were a problem with the configuration. I include the .ini configuration

I want to fix or configure the project to be able to run it on release mode.

[General]

network = vru_hetnet.simulations.centralized_release.Manhattan

#########################
# CMDENV configurations #
#########################
cmdenv-express-mode = true
cmdenv-autoflush = true
#cmdenv-status-frequency = 1s
**.cmdenv-log-level = info

# Veins example configuration.
debug-on-errors  = true
print-undisposed = true

#########################
#   Time configuration  #
#########################

# Time of warm-up (statistics are not recorded).
# warmup-period = 20s

# Maximum simulation time.
sim-time-limit = 2000s

# Time to start the simulation.
*.veinsManager.firstStepAt = 200s
#########################
#  Statistic recording  #
#########################
# All recordings from @statistics can be enabled/disabled using this parameter.
**.statistic-recording = true

# Control of scalar and vector recording.
**.scalar-recording = true
**.vector-recording = true

# Output results files.
output-vector-file = "results/${configname}/${runid}.vec"
output-scalar-file = "results/${configname}/${runid}.sca"

#########################
# Simulation parameters #
#########################
**.debug = false
**.coreDebug = false
**.routingRecorder.enabled = false

*.playgroundSizeX = 2000m
*.playgroundSizeY = 2000m
*.playgroundSizeZ = 50m

# The number of random number's generators.
num-rngs = 4

##########################################################
#            VeinsManager parameters                     #
##########################################################
*.veinsManager.moduleType          = "bicycle=vru_hetnet.nodes.HetBici motorcycle=vru_hetnet.nodes.HetMoto *=vru_hetnet.nodes.HetCar"
*.veinsManager.moduleName          = "bicycle=BicycleNode motorcycle=MotorcycleNode *=CarNode"
*.veinsManager.moduleDisplayString = "bicycle='i=veins/node/bicycle;is=s' motorcycle='i=veins/node/bike;is=s' *='i=veins/node/car;is=s'"
*.veinsManager.PedmoduleType       = "vru_hetnet.nodes.HetPed"
*.veinsManager.PedmoduleName       = "PedestrianNode" 

#*.veinsManager.launchConfig = ${xmldoc("my_manhattanL.launchd.xml"), xmldoc("my_manhattanM.launchd.xml"), xmldoc("my_manhattanH.launchd.xml"), xmldoc("my_manhattanHP.launchd.xml")}
*.veinsManager.launchConfig   = xmldoc("L/my_manhattanL.launchd.xml") 
*.veinsManager.updateInterval = 0.1s

# Time to start the simulation.
#*.veinsManager.firstStepAt = 300s

# Veins example configuration.
*.veinsManager.host         = "localhost"
*.veinsManager.port         = 9999
*.veinsManager.autoShutdown =  true

##########################################################
# Annotation parameters                                  #
##########################################################
*.annotations.draw = true

##########################################################
# Obstacle parameters                                    #
##########################################################
#
*.obstacles.debug = false
# Select the obstacles file.
*.obstacles.obstacles = xmldoc("config.xml", "//AnalogueModel[@type='SimpleObstacleShadowing']/obstacles")
#
*.traci.mapper.rng-0 = 1

##########################################################
# Channel Control LTE                                    #
##########################################################
**.deployer.positionUpdateInterval = 0.01s

**.channelControl.pMax = 10W
**.channelControl.alpha = 1.0
**.channelControl.carrierFrequency = 6000e+6Hz

**.lteNic.phy.channelModel = xmldoc("config_channel.xml")
**.feedbackComputation = xmldoc("config_channel.xml")
**.rbAllocationType = "localized"
**.feedbackType = "ALLBANDS"
**.feedbackGeneratorType = "IDEAL"
**.maxHarqRtx = 0
**.deployer.ruRange = 50
**.deployer.ruTxPower = "50,50,50;"
**.deployer.antennaCws = "2;" # !!MACRO + RUS (numRus + 1)
**.deployer.numRbDl = 51
**.deployer.numRbUl = 48
**.numBands = 48
**.fbDelay = 1

**.macDelayDl.statistic-recording = false
**.macThroughputDl.statistic-recording = false
**.macDelayUl.statistic-recording = false
**.macThroughputUl.statistic-recording = false
**.macDelayD2D.statistic-recording = false
**.macThroughputD2D.statistic-recording = false
**.macCellThroughputUl.statistic-recording = false
**.macCellThroughputDl.statistic-recording = false
**.macCellThroughputD2D.statistic-recording = false
**.macCellPacketLossDl.statistic-recording = false
**.macCellPacketLossUl.statistic-recording = false
**.macCellPacketLossD2D.statistic-recording = false
**.macPacketLossUl.statistic-recording = false
**.macPacketLossDl.statistic-recording = false
**.macPacketLossD2D.statistic-recording = false
**.macBufferOverFlowDl.statistic-recording = false
**.macBufferOverFlowUl.statistic-recording = false
**.macBufferOverFlowD2D.statistic-recording = false
**.harqErrorRateUl.statistic-recording = false
**.harqErrorRateDl.statistic-recording = false
**.harqErrorRateD2D.statistic-recording = false
**.harqErrorRate_1st_Ul.statistic-recording = false
**.harqErrorRate_1st_Dl.statistic-recording = false
**.harqErrorRate_1st_D2D.statistic-recording = false
**.harqErrorRate_2nd_Ul.statistic-recording = false
**.harqErrorRate_2nd_D2D.statistic-recording = false
**.harqErrorRate_3rd_Ul.statistic-recording = false
**.harqErrorRate_3rd_Dl.statistic-recording = false
**.harqErrorRate_3rd_D2D.statistic-recording = false
**.harqErrorRate_4th_Ul.statistic-recording = false
**.harqErrorRate_4th_Dl.statistic-recording = false
**.harqErrorRate_4th_D2D.statistic-recording = false
**.receivedPacketFromUpperLayer.statistic-recording = false
**.receivedPacketFromLowerLayer.statistic-recording = false
**.sentPacketToUpperLayer.statistic-recording = false
**.sentPacketToLowerLayer.statistic-recording = false
**.measuredItbs.statistic-recording = false
**.pdcpdrop0.statistic-recording = false
**.pdcpdrop1.statistic-recording = false
**.pdcpdrop2.statistic-recording = false
**.pdcpdrop3.statistic-recording = false
**.averageCqiD2D.statistic-recording = false
**.averageCqiDl.statistic-recording = false
**.averageCqiUl.statistic-recording = false

##########################################################
# Connection Manager Control                             #
##########################################################

*.connectionManager.sendDirect = true
*.connectionManager.maxInterfDist = 2600m
*.connectionManager.drawMaxIntfDist = false

##########################################################
#                      Mobility                          #
##########################################################
# Type of mobility
**.veinsMobilityType = "org.car2x.veins.modules.mobility.traci.TraCIMobility"
# Disable the debug
**.veinsmobility.x = 0
**.veinsmobility.y = 0
**.veinsmobility.z = 0
**.veinsmobility.setHostSpeed = false

##########################################################
# Nic LTE                                                #
##########################################################
**.d2dCapable = true
**.mode4D2D = true
**.amcMode = "D2D"
**.nicTypeMode4 = "LteNicVUeMode4"
**.lteNic.d2dCapable = true
**.lteNic.pdcpRrc.ipBased = false
**.lteNic.rlc.ipBased = false
**.lteNic.mac.subchannelSize = 16
**.lteNic.mac.numSubchannels = 3
**.lteNic.mac.probResourceKeep = 0.4
**.lteNic.mac.useCBR = true
**.lteNic.mac.crLimit = false
**.lteNic.mac.rriLookup = false
**.lteNic.mac.dccMechanism = false
**.lteNic.mac.packetDropping = false
**.lteNic.mac.reselectAfter = 1
**.lteNic.mac.adjacencyPSCCHPSSCH = true
**.lteNic.rlc.um.scenario3gpp = false
**.lteNic.phy.subchannelSize = 16
**.lteNic.phy.numSubchannels = 3
**.lteNic.phy.selectionWindowStartingSubframe = 1
**.lteNic.phy.adjacencyPSCCHPSSCH = true
**.lteNic.phy.pStep = 100
**.lteNic.phy.thresholdRSSI = 10
**.ueTxPower = 23
**.lteNic.phy.d2dTxPower = 23

**.usePreconfiguredTxParams = true
**.lteNic.mac.txConfig = xmldoc("sidelink_configuration.xml")

##########################################################
#            11p specific parameters                     #
#                    NIC-Settings                        #
##########################################################


*.**.dsrcNic.mac1609_4.useServiceChannel = false

**.dsrcNic.mac1609_4.txPower = 20mW # Alexis, "300mW en base a TrAD."
**.dsrcNic.mac1609_4.bitrate = 6Mbps
**.dsrcNic.phy80211p.minPowerLevel = -110dBm

**.dsrcNic.phy80211p.useNoiseFloor = true
**.dsrcNic.phy80211p.noiseFloor = -98dBm

**.dsrcNic.phy80211p.decider = xmldoc("config.xml")
**.dsrcNic.phy80211p.analogueModels = xmldoc("config.xml")
**.dsrcNic.phy80211p.usePropagationDelay = true

**.dsrcNic.phy80211p.antenna = xmldoc("antenna.xml", "/root/Antenna[@id='monopole']")
**.dsrcNic.phy80211p.antennaOffsetY = 0 m
**.dsrcNic.phy80211p.antennaOffsetZ = 1.895 m

##########################################################
##################  CONFIGURACIONES  #####################
##########################################################

[Config DSRC]
# DSRC
**.generator.viaDSRC = true
# CV2X
**.generator.viaCV2X = false
# CHOOSE
**.generator.chooseNetwork = false

[Config CV2X]
# DSRC
**.generator.viaDSRC       = false
# CV2X
**.generator.viaCV2X       = true
# CHOOSE
**.generator.chooseNetwork = false

[Config CHOOSE]
# DSRC
**.generator.viaDSRC       = false
# CV2X
**.generator.viaCV2X       = false
# CHOOSE
**.generator.chooseNetwork = true
  • 1
    You say that "when the simulation starts, it freezes in the first event, and it crashes" - it is very unlikely that this is caused by building your C++ code in release mode. Rather, I would speculate that your code is, in fact, erroneous, but the errors are only showing up when it's compiled for speed instead of for robustness. My suggestion would be to run the code (in debug mode) on another Linux machine and/or observe its execution with valgrind's memcheck tool (built into OMNeT++, if I recall correcrtly) and/or run it through static code analysis (like clang's scan-build tool) – Christoph Sommer Feb 24 '21 at 11:01
  • Thank you, your answer helps me to focus my attention on that. I manage to solve it by fixing some c++ errors and .ini configurations. I also had problems that [this](https://stackoverflow.com/questions/35021264/veins-attempted-to-read-past-end-of-byte-buffer-error) post solved. – Tomás Lara Feb 25 '21 at 15:54

0 Answers0