Hello,
I am encountering a reproducible abort in the ns-3 Wi-Fi model when simulating several concurrent UDP flows over a shared IEEE 802.11 ad hoc network.
I reproduced the issue in both:
The abort in ns-3.47 is:
aborted. cond="it == niIt->second.end()", +1033.501526475s file=.../ns-3.47/src/wifi/model/interference-helper.cc, line=465 NS_FATAL, terminating terminate called without an active exception
The corresponding code in InterferenceHelper::CalculateNoiseInterferenceW() is:
it = niIt->second.find(event->GetStartTime()); NS_ABORT_IF(it == niIt->second.end());
My understanding is that the Wi-Fi PHY is evaluating a reception event, but the corresponding interference-history entry for the event start time cannot be found.
Simulation configuration
Node positions are updated in ns-3 according to externally generated time-stamped position traces, while UDP traffic is simulated over a multi-hop IEEE 802.11n ad hoc network.Relevant configuration:
Propagation configuration:
The aggregate offered application load is approximately 8 Mbit/s. Before the abort, the routes remain stable and packets are delivered normally. There is no obvious routing failure or link disconnection at the time of the crash.
The abort becomes more reproducible when all four flows are active and both multi-hop paths operate near each other on the same Wi-Fi channel. Changing the random seed, traffic start-time offsets, or node geometry can change whether and when the abort occurs, but does not consistently eliminate it.
The simulation uses the standard single-threaded discrete-event simulator. Node positions are updated from externally generated traces, but all packet traffic is generated by ns-3 applications. TAP devices and real-time simulation are not used.
I previously encountered a different Wi-Fi PHY assertion in a smaller test using MinstrelHtWifiManager:
NS_ASSERT failed, cond="!m_wifiPhy->m_currentEvent", file=src/wifi/model/phy-entity.cc, line=493
Changing to IdealWifiManager or ConstantRateWifiManager prevented that assertion in the smaller test. However, the later InterferenceHelper abort occurs while using IdealWifiManager.
My questions are:
I can provide a minimal reproducer, position traces, routing configuration, and the exact ns-3 commit hashes if needed.
Thank you for any advice.
Best regards,
Tomáš