GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Fix leaking sockets (and ResourceWarnings) by CristiFati · Pull Request #291 · python-xlib/python-xlib

Conversation

@CristiFati

@CristiFati CristiFati commented Jul 7, 2026

Copy link
Copy Markdown

After socket creation, if connecting fails the created socket is leaked (remains opened until at a later point when will be garbage collected).
In some cases the problem becomes visible in the form of ResourceWarning(s) that pop out of the blue.

Encountered it when running tests on CristiFati/pycfutils (which doesn't use python-xlib), plus the perfect storm:

  1. Linux OS
  2. No XServer running
  3. DISPLAY set
  4. Python with python-xlib installed
(py_pc064_03.10_test0) [cfati@cfati-5510-0:/mnt/e/Work/Dev/Repos/GitHub/CristiFati/pycfutils/src]> DISPLAY=":69" python -m unittest discover pycfutils/tests
...s.........Path does not exist
Path does not exist
proc_raise_ni
flt_proc_raise_ni
MiscellaneousTestCase.test_process_items_in_path.<locals>.flt_trav_raise_ni_noarg() takes 1 positional argument but 2 were given
flt_trav_raise_ni
proc_raise_ni_kwarg
Callable has no parameter named 'notexisting'
Callable path argument index out of range
Callable path argument target must be str, int, or None
No valid argument found for path
MiscellaneousTestCase.test_process_items_in_path.<locals>.proc_args() missing 1 required positional argument: 'file_list'
proc_args
proc_args
........<frozen importlib._bootstrap>:188: ResourceWarning: unclosed <socket.socket fd=5, family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0>
ResourceWarning: Enable tracemalloc to get the object allocation traceback
<frozen importlib._bootstrap>:188: ResourceWarning: unclosed <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('0.0.0.0', 44024)>
ResourceWarning: Enable tracemalloc to get the object allocation traceback
<frozen importlib._bootstrap>:188: ResourceWarning: unclosed <socket.socket fd=7, family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0>
ResourceWarning: Enable tracemalloc to get the object allocation traceback
<frozen importlib._bootstrap>:188: ResourceWarning: unclosed <socket.socket fd=8, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('0.0.0.0', 44028)>
ResourceWarning: Enable tracemalloc to get the object allocation traceback
.......
----------------------------------------------------------------------
Ran 28 tests in 15.834s

OK (skipped=1)
  • One of the test files is loaded (as a side effect). That file has an import pynput statement at module level, which triggers an XServer probe (a call to get_socket). On python with no python-xlib installed the file would simply and silently fail to import - the problem not hit
  • Another test file (that happened to run after the previous one) spawn processes (via multiprocessing) and the warning is issued

I eventually worked around the issue: CristiFati/pycfutils@e9eccf0, but still it has to be fixed as it might have unpredictable consequences.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
CristiFati added 2 commits July 7, 2026 22:18
@CristiFati
test: leaking sockets
503f6e8
@CristiFati
fix(unix_connect): leaking sockets on failed connection
4ea5d0e
Avasam pushed a commit to Avasam/python-xlib that referenced this pull request Oct 30, 2026
@CristiFati @Avasam
fix(unix_connect): leaking sockets on failed connection
244da6a
After socket creation, if connecting fails the created socket is leaked until garbage collected, which can surface as unexpected `ResourceWarning`s. Close the socket in `_get_tcp_socket` and `_get_unix_socket` when `connect` raises, and add a regression test.

Squashed from python-xlib#291.
Avasam pushed a commit to Avasam/python-xlib that referenced this pull request Oct 30, 2026
@CristiFati @Avasam
fix(unix_connect): leaking sockets on failed connection
eb947d6
After socket creation, if connecting fails the created socket is leaked until garbage collected, which can surface as unexpected `ResourceWarning`s. Close the socket in `_get_tcp_socket` and `_get_unix_socket` when `connect` raises, and add a regression test.

Squashed from python-xlib#291.
Avasam pushed a commit to Avasam/python-xlib that referenced this pull request Oct 31, 2026
@CristiFati @Avasam
fix(unix_connect): leaking sockets on failed connection
82ba1aa
After socket creation, if connecting fails the created socket is leaked until garbage collected, which can surface as unexpected `ResourceWarning`s. Close the socket in `_get_tcp_socket` and `_get_unix_socket` when `connect` raises, and add a regression test.

Squashed from python-xlib#291.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@CristiFati
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.