[yocto] rpmdeps buffer overflow
Marc Ferland
marc.ferland at gmail.com
Fri Aug 10 07:50:09 PDT 2018
On Thu, Aug 9, 2018 at 2:34 PM, Marc Ferland <marc.ferland at gmail.com> wrote:
> Hi,
>
> I'm creating a recipe for a precompiled SDK. This SDK contains various
> precompiled libraries and executables. When I get to the packaging
> step bitbake aborts with the following error:
>
> ERROR: pylon-5.0.12-r0 do_package: Error executing a python function
> in exec_python_func() autogenerated:
>
> The stack trace of python calls that resulted in this exception/failure was:
> File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
> 0001:
> *** 0002:package_do_filedeps(d)
> 0003:
> File: '/vagrant/yocto/poky/meta/classes/package.bbclass', lineno:
> 1484, function: package_do_filedeps
> 1480: continue
> 1481: for files in chunks(pkgfiles[pkg], 100):
> 1482: pkglist.append((pkg, files, rpmdeps, pkgdest))
> 1483:
> *** 1484: processed = oe.utils.multiprocess_exec( pkglist,
> oe.package.filedeprunner)
> 1485:
> 1486: provides_files = {}
> 1487: requires_files = {}
> 1488:
> File: '/vagrant/yocto/poky/meta/lib/oe/utils.py', lineno: 240,
> function: multiprocess_exec
> 0236: mapresult = pool.map_async(function, commands,
> error_callback=failures)
> 0237:
> 0238: pool.close()
> 0239: pool.join()
> *** 0240: results = mapresult.get()
> 0241: except KeyboardInterrupt:
> 0242: pool.terminate()
> 0243: pool.join()
> 0244: raise
> File: '/usr/lib/python3.6/multiprocessing/pool.py', lineno: 644, function: get
> 0640: raise TimeoutError
> 0641: if self._success:
> 0642: return self._value
> 0643: else:
> *** 0644: raise self._value
> 0645:
> 0646: def _set(self, i, obj):
> 0647: self._success, self._value = obj
> 0648: if self._callback and self._success:
> Exception: subprocess.CalledProcessError: Command
> '['/home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/recipe-sysroot-native/usr/lib/rpm/rpmdeps',
> '--alldeps', '/home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/packages-split/pylon/opt/pylon5/lib64/libpylon_TL_bcon-5.0.12.so',
>
> REMOVED FOR BREVITY
>
> '/home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/packages-split/pylon/opt/pylon5/bin/platforms/libqxcb.so']'
> died with <Signals.SIGABRT: 6>.
>
> Subprocess output:
> *** buffer overflow detected ***:
> /home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/recipe-sysroot-native/usr/lib/rpm/rpmdeps
> terminated
>
> ERROR: pylon-5.0.12-r0 do_package: Function failed: package_do_filedeps
> ERROR: Logfile of failure stored in:
> /home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/temp/log.do_package.30101
> ERROR: Task (/vagrant/yocto/meta-telops/recipes-basler/pylon5/pylon_5.0.12.bb:do_package)
> failed with exit code '1'
>
> Digging a little deeper, it looks like certain files cause rpmdeps to
> blowup. For example, issuing:
>
> rpmdeps --alldeps
> /home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/packages-split/pylon/opt/pylon5/bin/libQt5Core.so.5.6.2
>
> I get the expected:
> 0 /home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/packages-split/pylon/opt/pylon5/bin/libQt5Core.so.5.6.2
> P libQt5Core.so.5(Qt_5_PRIVATE_API)(64bit)
> P libQt5Core.so.5(Qt_5)(64bit)
> P libQt5Core.so.5(Qt_5.0)(64bit)
> P libQt5Core.so.5(Qt_5.0)(64bit)
> ....
>
> But running rpmdeps on one of their proprietary lib:
> rpmdeps --alldeps
> /home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/packages-split/pylon/opt/pylon5/bin/libPylonQtBase.so.1.0.0
> *** buffer overflow detected ***:
> /home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/recipe-sysroot-native/usr/lib/rpm/rpmdeps
> terminated
> Aborted (core dumped)
>
Got a little bit further by disabling filedeps with
SKIP_FILEDEPS_${PN} = "1". Now I get a buffer overflow from rpmbuild:
ERROR: pylon-5.0.12-r0 do_package_write_rpm: Function failed:
BUILDSPEC (log file is located at
/home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/temp/log.do_package_write_rpm.32236)
ERROR: Logfile of failure stored in:
/home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/temp/log.do_package_write_rpm.32236
Log data follows:
| DEBUG: Executing python function sstate_task_prefunc
| DEBUG: Python function sstate_task_prefunc finished
| DEBUG: Executing python function extend_recipe_sysroot
| NOTE: Direct dependencies are
['virtual:native:/vagrant/yocto/poky/meta/recipes-devtools/pseudo/pseudo_1.8.2.bb:do_populate_sysroot',
'virtual:native:/vagrant/yocto/poky/meta/recipes-devtools/rpm/rpm_git.bb:do_populate_sysroot']
| NOTE: Installed into sysroot: []
| NOTE: Skipping as already exists in sysroot: ['pseudo-native',
'rpm-native', 'dbus-native', 'popt-native', 'bzip2-native',
'db-native', 'gnu-config-native', 'quilt-native', 'autoconf-native',
'xz-native', 'elfutils-native', 'automake-native', 'python3-native',
'gettext-minimal-native', 'nss-native', 'pkgconfig-native',
'file-native', 'libarchive-native', 'libtool-native', 'expat-native',
'm4-native', 'texinfo-dummy-native', 'zlib-native', 'sqlite3-native',
'openssl-native', 'readline-native', 'nspr-native', 'lzo-native',
'e2fsprogs-native', 'pigz-native', 'makedepend-native',
'cryptodev-linux-native', 'ncurses-native', 'util-linux-native',
'attr-native', 'util-macros-native', 'xproto-native']
| DEBUG: Python function extend_recipe_sysroot finished
| DEBUG: Executing python function do_package_write_rpm
| DEBUG: Executing python function read_subpackage_metadata
| DEBUG: Python function read_subpackage_metadata finished
| DEBUG: Executing python function do_package_rpm
| DEBUG: Executing python function write_specfile
| NOTE: Creating EMPTY RPM Package for pylon-dbg
| NOTE: Not creating empty RPM package for pylon-staticdev
| NOTE: Creating RPM package for pylon-dev
| NOTE: Creating RPM package for pylon-doc
| NOTE: Not creating empty RPM package for pylon-locale
| NOTE: Creating RPM package for pylon
| NOTE: Creating RPM package for pylon
| DEBUG: Python function write_specfile finished
| DEBUG: PKGWRITEDIR:
/home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/deploy-rpms/aarch64
| DEBUG: Executing shell function BUILDSPEC
| Building target platforms: aarch64-poky-linux
| Building for target aarch64-poky-linux
| Processing files: pylon-5.0.12-r0.aarch64
| *** buffer overflow detected ***:
/home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/recipe-sysroot-native/usr/bin/rpmbuild
terminated
| Aborted (core dumped)
| WARNING: exit code 134 from a shell command.
| DEBUG: Python function do_package_rpm finished
| DEBUG: Python function do_package_write_rpm finished
| ERROR: Function failed: BUILDSPEC (log file is located at
/home/vagrant/build/tmp/work/aarch64-poky-linux/pylon/5.0.12-r0/temp/log.do_package_write_rpm.32236)
ERROR: Task (/vagrant/yocto/meta-telops/recipes-basler/pylon5/pylon_5.0.12.bb:do_package_write_rpm)
failed with exit code '1'
Any help appreciated!
Regards,
Marc
More information about the yocto
mailing list