-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a patch for scapy to fix fd leak issue in AsyncSniffer #20415
Merged
+48
−0
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bingwang-ms
requested review from
theasianpianist
and removed request for
lguohan
October 3, 2024 16:28
theasianpianist
approved these changes
Oct 3, 2024
/azpw ms_conflict |
1 similar comment
/azpw ms_conflict |
mssonicbld
pushed a commit
to mssonicbld/sonic-buildimage
that referenced
this pull request
Nov 6, 2024
…#20415) Why I did it This PR is to add a patch to fix potential fd leak issue in AsyncSniffer in scapy python library. There are two fd leak scenarios. When starting worker thread _run, if an interface is down, an OSError is thrown, and the sockets that have been created will be leaked as it never got a chance to be closed. When stopping the worker thread, same error can happen when calling close. The sockets not closed will be leaked. How I did it Catch OSError when creating sockets, and catch any exception when closing socket to ensure all sockets are closed. How to verify it Verified by the testing code above. No fd leak happened.
Cherry-pick PR to 202405: #20719 |
mssonicbld
pushed a commit
to mssonicbld/sonic-buildimage
that referenced
this pull request
Nov 6, 2024
…#20415) Why I did it This PR is to add a patch to fix potential fd leak issue in AsyncSniffer in scapy python library. There are two fd leak scenarios. When starting worker thread _run, if an interface is down, an OSError is thrown, and the sockets that have been created will be leaked as it never got a chance to be closed. When stopping the worker thread, same error can happen when calling close. The sockets not closed will be leaked. How I did it Catch OSError when creating sockets, and catch any exception when closing socket to ensure all sockets are closed. How to verify it Verified by the testing code above. No fd leak happened.
Cherry-pick PR to 202311: #20722 |
mssonicbld
pushed a commit
that referenced
this pull request
Nov 7, 2024
Why I did it This PR is to add a patch to fix potential fd leak issue in AsyncSniffer in scapy python library. There are two fd leak scenarios. When starting worker thread _run, if an interface is down, an OSError is thrown, and the sockets that have been created will be leaked as it never got a chance to be closed. When stopping the worker thread, same error can happen when calling close. The sockets not closed will be leaked. How I did it Catch OSError when creating sockets, and catch any exception when closing socket to ensure all sockets are closed. How to verify it Verified by the testing code above. No fd leak happened.
mssonicbld
added
Included in 202311 Branch
and removed
Created PR to 202311 Branch
labels
Nov 7, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why I did it
This PR is to add a patch to fix potential fd leak issue in
AsyncSniffer
inscapy
python library.There are two fd leak scenarios.
_run
, if an interface is down, anOSError
is thrown, and the sockets that have been created will be leaked as it never got a chance to be closed.close
. The sockets not closed will be leaked.Test code:
Run above code while toggling portchannels on the device. The opened fd is increasing.
Work item tracking
How I did it
Catch
OSError
when creating sockets, and catch any exception when closing socket to ensure all sockets are closed.How to verify it
Verified by the testing code above. No fd leak happened.
Which release branch to backport (provide reason below if selected)
Tested branch (Please provide the tested image version)
The change is tested on 202311 and 202405 branches.
Description for the changelog
fix potential fd leak issue in
AsyncSniffer
inscapy
python library.Link to config_db schema for YANG module changes
No config change.
A picture of a cute animal (not mandatory but encouraged)