Skip to content

gh-52008: document that absolute paths can break use_errno=True in ct… - #146504

Closed
Das-Chinmay wants to merge 3 commits into
python:mainfrom
Das-Chinmay:fix-ctypes-use-errno-docs
Closed

Das-Chinmay wants to merge 3 commits into
python:mainfrom
Das-Chinmay:fix-ctypes-use-errno-docs

Conversation

@Das-Chinmay

@Das-Chinmay Das-Chinmay commented Mar 27, 2026 •

Copy link
Copy Markdown
Contributor

Loading a shared library via an absolute path (e.g. CDLL('/lib/libc.so.6'))
can cause use_errno=True to silently malfunction on Linux: dlopen may
return a separate instance of the library with its own errno variable, so
ctypes swaps the wrong one and get_errno() always returns 0.

Adds a .. note:: block to the use_errno parameter docs in
Doc/library/ctypes.rst warning about this and recommending the use of an
unqualified name or ctypes.util.find_library instead.

Fixes gh-52008

  • Base: python/cpython:main
  • Head: Das-Chinmay:fix-ctypes-use-errno-docs

📚 Documentation preview 📚: https://cpython-previews--146504.org.readthedocs.build/

… in ctypes

Loading a shared library via an absolute path (e.g. CDLL('/lib/libc.so.6'))
can cause use_errno=True to silently malfunction on Linux because dlopen may
return a separate library instance with its own errno variable.  Add a note
to the CDLL.use_errno parameter docs warning about this and recommending the
use of an unqualified name or ctypes.util.find_library instead.
@python-cla-bot

python-cla-bot Bot commented Mar 27, 2026 •

Copy link
Copy Markdown

All commit authors signed the Contributor License Agreement.

CLA signed

@github-actions

github-actions Bot commented May 9, 2026

Copy link
Copy Markdown

This PR is stale because it has been open for 30 days with no activity.

@github-actions github-actions Bot added the stale Stale PR or inactive for long period of time. label May 9, 2026
@ZeroIntensity

Copy link
Copy Markdown
Member

This issue isn't specific to absolute paths. The absolute paths problem was a symptom of older Ubuntu versions that shipped multiple libc libraries, which no longer happens.

The fundamental thing that we need to document is that use_errno only works if the library writes to the errno that ctypes can actually access (that is, the errno value from its own C runtime). I have a PR for this: #159239.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting review docs Documentation in the Doc dir skip news stale Stale PR or inactive for long period of time.

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

[doc] ctypes: use_errno=True does not work

2 participants