Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34k
Closed
Labels
3.11only security fixesonly security fixes3.12only security fixesonly security fixes3.13bugs and security fixesbugs and security fixestopic-ctypestype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
The problem:
ctypes.util.find_library() raises an exception on certain inputs when it cannot find it.
Expected behavior:
No exception, return None as advertised if it cannot find the library.
Reproducer:
# on python 3.10, but same deal on other versions too>>>importctypes.util>>>ctypes.util.find_library('libgomp') Traceback (mostrecentcalllast): File"<stdin>", line1, in<module>File"/path/to/lib/python3.10/ctypes/util.py", line351, infind_library_get_soname(_findLib_gcc(name)) or_get_soname(_findLib_ld(name)) File"/path/to/lib/python3.10/ctypes/util.py", line148, in_findLib_gccifnot_is_elf(file): File"/path/to/lib/python3.10/ctypes/util.py", line100, in_is_elfwithopen(filename, 'br') asthefile: FileNotFoundError: [Errno2] Nosuchfileordirectory: b'liblibgomp.a'Note that the crash does not occur if you put nonsense in:
find_library('asdadsas')-> OKfind_library('libasdasdasd')-> OK
The problem appears to be a bit more contrived. Python is attempting to parse the output from gcc, which in this case is:
/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o /usr/bin/ld: cannot find -llibgomp: No such file or directory /usr/bin/ld: note to link with /usr/lib/gcc/x86_64-linux-gnu/12/libgomp.a use -l:libgomp.a or rename it to liblibgomp.a /usr/lib/gcc/x86_64-linux-gnu/12/libgcc.a /usr/lib/gcc/x86_64-linux-gnu/12/libgcc_s.so /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libgcc_s.so.1 /usr/lib/gcc/x86_64-linux-gnu/12/libgcc.a collect2: error: ld returned 1 exit status But then the parser is getting confused trying to parse the useful diagnostic message mentioning libgomp.a.
Machine details (from platform.uname())
uname_result(system='Linux', node='iblis', release='6.5.0-14-generic', version='#14~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 20 18:15:30 UTC 2', machine='x86_64') CPython versions tested on:
3.10, 3.11, 3.12
Operating systems tested on:
Linux
Linked PRs
Metadata
Metadata
Assignees
Labels
3.11only security fixesonly security fixes3.12only security fixesonly security fixes3.13bugs and security fixesbugs and security fixestopic-ctypestype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error