Bug 2776

Summary: MacLow::StartTransmission ends up in segmentation fault
Product: ns-3 Reporter: Akin Soysal <akinsoysal>
Component: wifiAssignee: sebastien.deronne
Status: RESOLVED FIXED    
Severity: major CC: ns-bugs
Priority: P2    
Version: ns-3-dev   
Hardware: All   
OS: All   
Attachments: proposed mac_low_fix.

Description Akin Soysal 2017-08-21 04:58:29 UTC
Created attachment 2905 [details]
proposed mac_low_fix.

Hello,

I have discovered and fixed a nasty bug. It came up in changeset 12571.

When MacLow::StartTransmission is called, first m_currentDca = dca; assignment is done and then CancelAllEvents (); is called. However, if there is any active timer exists, CancelAllEvents() empties the member m_currentDca inside. Since the assignment of dca is done before CancelAllEvents(), new dca is also emptied and whenever MacLow() calls its member m_currentDca, segmentation fault is thrown. Bug can be fixed by moving the assignment after the CancelAllEvents() function call.

I am not sure about the frequency of this bug but its severity is high and I have encountered it when I have applied our new fading channel.

After this fix, our curves seemed a lot smoother, it is also possible that it does not cause segmentation fault but also other problems, so I think this should be fixed ASAP!

Bugfix is in the attachment.

Regards,
Akın
Comment 1 sebastien.deronne 2017-08-23 16:48:52 UTC
Thanks Akin for the fix.
Pushed in changeset 13050:969140f099bb.