[Bug 1995362] Re: ldd / ld-linux-x86-64.so.2 crashes with SIGSEGV when ran against certain shared libraries

Simon Chopin 1995362 at bugs.launchpad.net
Wed May 31 09:47:26 UTC 2023


** Description changed:

+ [Impact]
+ 
  On Ubuntu 22.04.1 LTS, `ldd` (or rather, the underlying `/lib64/ld-
  linux-x86-64.so.2`) crashes when ran against some of the python
  extension modules from PySide6 PyPI wheels for linux. This does not
  happen under 20.04 nor 22.10, and neither does it happen under Fedora 36
  (which nominally uses the glibc of same version, 2.35).
  
  When running jammy docker container, the crash does not happen as long
  as glib2 libraries are not installed (are unresolvable).
  
  The problem was encountered when freezing a PySide6-based python
  application using pyinstaller, which uses `ldd` to perform binary
  analysis (and in cases like this, comes up empty, resulting in missing
  libraries).
  
  Original bug report:
  https://github.com/pyinstaller/pyinstaller/issues/7197
  
  The problem (at least in PyInstaller + PySide6 context) might become
  more widespread as `ubuntu-22.04` CI runners become more prevalent on
  the GitHub actions.
  
- Steps to reproduce (in docker container):
+ It has been fixed upstream in the following patch:
+ https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=10fe3cd309b32c003a6b98e08928e7d6007caecf
  
- 0. docker run --rm -ti ubuntu:jammy bash
+ [Test Plan]
  
- 1. apt update
- 2. apt install -y python3 python3-venv
- 3. python3 -m venv venv
- 4. . venv/bin/activate
- 5. pip install pyside6
- 6. Call the equivalent of `ldd venv/lib64/python3.10/site-packages/PySide6/QtQml.abi3.so˙:
+ The patch includes tests for this. However, it's fairly easy to test on
+ an installed system:
  
- ```
- LD_TRACE_LOADED_OBJECTS=1 /lib64/ld-linux-x86-64.so.2 venv/lib64/python3.10/site-packages/PySide6/QtQml.abi3.so
- ```
+ $ sudo apt install -y python3 python3-venv libglib2.0-0
+ $ python3 -m venv venv
+ $ . venv/bin/activate
+ $ pip install pyside6
+ $ LD_TRACE_LOADED_OBJECTS=1 /lib64/ld-linux-x86-64.so.2 venv/lib64/python3.10/site-packages/PySide6/QtQml.abi3.so
  
- This gives the expected output:
- ```
- (venv) root at d7fd69601f0d:/# LD_TRACE_LOADED_OBJECTS=1 /lib64/ld-linux-x86-64.so.2 venv/lib64/python3.10/site-packages/PySide6/QtQml.abi3.so
- 	linux-vdso.so.1 (0x00007ffe2fbcf000)
- 	libpyside6qml.abi3.so.6.4 => /venv/lib64/python3.10/site-packages/PySide6/libpyside6qml.abi3.so.6.4 (0x00007f43c109a000)
- 	libQt6Qml.so.6 => /venv/lib64/python3.10/site-packages/PySide6/Qt/lib/libQt6Qml.so.6 (0x00007f43c0b31000)
- 	libpyside6.abi3.so.6.4 => /venv/lib64/python3.10/site-packages/PySide6/libpyside6.abi3.so.6.4 (0x00007f43c0af3000)
- 	libshiboken6.abi3.so.6.4 => not found
- 	libQt6Network.so.6 => /venv/lib64/python3.10/site-packages/PySide6/Qt/lib/libQt6Network.so.6 (0x00007f43c0948000)
- 	libQt6Core.so.6 => /venv/lib64/python3.10/site-packages/PySide6/Qt/lib/libQt6Core.so.6 (0x00007f43c02c8000)
- 	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f43c009e000)
- 	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f43bffb7000)
- 	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f43bff97000)
- 	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f43bff92000)
- 	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f43bfd6a000)
- 	/lib64/ld-linux-x86-64.so.2 (0x00007f43c114b000)
- 	libshiboken6.abi3.so.6.4 => not found
- 	libshiboken6.abi3.so.6.4 => not found
- 	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f43bfd63000)
- 	libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f43bfd0f000)
- 	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f43bfcf3000)
- 	libicui18n.so.56 => /venv/lib64/python3.10/site-packages/PySide6/Qt/lib/libicui18n.so.56 (0x00007f43bf800000)
- 	libicuuc.so.56 => /venv/lib64/python3.10/site-packages/PySide6/Qt/lib/libicuuc.so.56 (0x00007f43bf400000)
- 	libicudata.so.56 => /venv/lib64/python3.10/site-packages/PySide6/Qt/lib/libicudata.so.56 (0x00007f43bda00000)
- 	libglib-2.0.so.0 => not found
- 	libgthread-2.0.so.0 => not found
- 	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f43bfcec000)
- 	libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f43bd935000)
- 	libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f43bfcbb000)
- 	libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f43bfcb5000)
- 	libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f43bfca7000)
- 	libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f43bfca0000)
- 	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f43bf7ec000)
- ```
+ That last command should *NOT* segfault.
  
- 7. Now, install glib so that `libglib-2.0.so.0` and
- `libgthread-2.0.so.0` become resolvable:
+ [Regression potential]
  
- ```
- apt install -y libglib2.0-0
- ```
- 
- 8. Try obtaining imports again:
- 
- (venv) root at d7fd69601f0d:/# LD_TRACE_LOADED_OBJECTS=1 /lib64/ld-linux-x86-64.so.2 venv/lib64/python3.10/site-packages/PySide6/QtQml.abi3.so
- Segmentation fault (core dumped)
- 
- ProblemType: Crash
- DistroRelease: Ubuntu 22.04
- Package: libc6 2.35-0ubuntu3.1
- ProcVersionSignature: Ubuntu 5.15.0-50.56-generic 5.15.60
- Uname: Linux 5.15.0-50-generic x86_64
- ApportVersion: 2.20.11-0ubuntu82.1
- Architecture: amd64
- CasperMD5CheckResult: pass
- CurrentDesktop: ubuntu:GNOME
- Date: Tue Nov  1 12:14:02 2022
- ExecutablePath: /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
- InstallationDate: Installed on 2022-04-21 (193 days ago)
- InstallationMedia: Ubuntu 22.04 LTS "Jammy Jellyfish" - Release amd64 (20220419)
- LocalLibraries: /home/rok/venv/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Network.so.6 /home/rok/venv/lib/python3.10/site-packages/PySide6/libpyside6.abi3.so.6.4 /home/rok/venv/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Qml.so.6 /home/rok/venv/lib/python3.10/site-packages/PySide6/Qt/lib/libicui18n.so.56 /home/rok/venv/lib/python3.10/site-packages/PySide6/QtQml.abi3.so /home/rok/venv/lib/python3.10/site-packages/PySide6/Qt/lib/libicudata.so.56 /home/rok/venv/lib/python3.10/site-packages/PySide6/Qt/lib/libicuuc.so.56 /home/rok/venv/lib/python3.10/site-packages/PySide6/Qt/lib/libQt6Core.so.6 /home/rok/venv/lib/python3.10/site-packages/PySide6/libpyside6qml.abi3.so.6.4
- ProcCmdline: /lib64/ld-linux-x86-64.so.2 venv/lib64/python3.10/site-packages/PySide6/QtQml.abi3.so
- SegvAnalysis:
-  Segfault happened at: 0x7f16cce8a480:	add    %ah,-0x19(%rax)
-  PC (0x7f16cce8a480) in non-executable VMA region: 0x7f16cce8a000-0x7f16cce8c000 rw-p None
-  source "%ah" ok
-  destination "-0x19(%rax)" (0x7fff9a2e3f57) ok
- SegvReason: executing writable VMA None
- Signal: 11
- SourcePackage: glibc
- StacktraceTop:
-  ?? ()
-  ?? ()
-  ?? ()
-  ?? ()
-  ?? ()
- Title: ld-linux-x86-64.so.2 crashed with SIGSEGV
- UpgradeStatus: No upgrade log present (probably fresh install)
- UserGroups: adm cdrom dip lpadmin lxd plugdev sambashare sudo
- mtime.conffile..etc.apport.crashdb.conf: 2022-11-01T12:12:40.406888
- separator:
+ We're touching a fairly sensible part of the system here. Besides "ldd
+ is totally broken"-type scenarios, there could be more subtle breakage
+ due to changes in the load order of dynamic libraries (unlikely given
+ the nature of the patch, though)

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to glibc in Ubuntu.
https://bugs.launchpad.net/bugs/1995362

Title:
  ldd / ld-linux-x86-64.so.2 crashes with SIGSEGV when ran against
  certain shared libraries

Status in glibc package in Ubuntu:
  Fix Released
Status in glibc source package in Jammy:
  In Progress

Bug description:
  [Impact]

  On Ubuntu 22.04.1 LTS, `ldd` (or rather, the underlying `/lib64/ld-
  linux-x86-64.so.2`) crashes when ran against some of the python
  extension modules from PySide6 PyPI wheels for linux. This does not
  happen under 20.04 nor 22.10, and neither does it happen under Fedora
  36 (which nominally uses the glibc of same version, 2.35).

  When running jammy docker container, the crash does not happen as long
  as glib2 libraries are not installed (are unresolvable).

  The problem was encountered when freezing a PySide6-based python
  application using pyinstaller, which uses `ldd` to perform binary
  analysis (and in cases like this, comes up empty, resulting in missing
  libraries).

  Original bug report:
  https://github.com/pyinstaller/pyinstaller/issues/7197

  The problem (at least in PyInstaller + PySide6 context) might become
  more widespread as `ubuntu-22.04` CI runners become more prevalent on
  the GitHub actions.

  It has been fixed upstream in the following patch:
  https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=10fe3cd309b32c003a6b98e08928e7d6007caecf

  [Test Plan]

  The patch includes tests for this. However, it's fairly easy to test
  on an installed system:

  $ sudo apt install -y python3 python3-venv libglib2.0-0
  $ python3 -m venv venv
  $ . venv/bin/activate
  $ pip install pyside6
  $ LD_TRACE_LOADED_OBJECTS=1 /lib64/ld-linux-x86-64.so.2 venv/lib64/python3.10/site-packages/PySide6/QtQml.abi3.so

  That last command should *NOT* segfault.

  [Regression potential]

  We're touching a fairly sensible part of the system here. Besides "ldd
  is totally broken"-type scenarios, there could be more subtle breakage
  due to changes in the load order of dynamic libraries (unlikely given
  the nature of the patch, though)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1995362/+subscriptions




More information about the foundations-bugs mailing list