[yocto] rpmdeps buffer overflow

Marc Ferland marc.ferland at gmail.com
Thu Aug 9 11:34:28 PDT 2018


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)

Any idea of what might be causing this?

Marc


More information about the yocto mailing list