From Fedora Project Wiki
Line 16: Line 16:


= Dealing with Result=
= Dealing with Result=
Outcome of abicheck task run can be PASSED, FAILED or NEEDS_INSPECTION. Depending upon outcome, following action should be taken:
The outcome of the abicheck task run can be PASSED, FAILED or NEEDS_INSPECTION. Depending on the outcome, either one of the following actions should be taken:
* '''PASSED:''' No ABI changes found. No review of ABI diff logs required
 
* '''FAILED:''' Incompatible ABI changes has been found in one or more libraries. Having these changes may break other dependent packages.Thorough review of incompatible ABI changes are required. Please provide justification for these ABI changes or fix such changes and update a new build with fix.
* '''PASSED:''' No ABI change has been found. No review of the ABI change report logs is thus required.
* '''NEEDS_INSPECTION:''' ABI changes exist which may or may not break other packages. Recommended to look into ABI diff log and verify same.
 
* '''FAILED:''' Incompatible ABI changes have been found in one or more libraries contained in the package. These changes will almost certainly break applications or libraries that depend on this package. A thorough review of the ABI changes reported in the logs is thus required. Please provide a relevant justification for these ABI changes or come with a new build that fixes those changes.
 
* '''NEEDS_INSPECTION:''' Some ABI changes have been found.  As a result, the ABI of the package might or might not be incompatible with its previous version. It is thus highly recommended to look into the log containing the ABI change report and verify that the ABI changes are harmless.  If the changes are harmful, then please submit new version of the package that fixes the issue.


= Getting Help =
= Getting Help =

Revision as of 08:28, 28 May 2016

Introduction

The abicheck task helps verify that the Application Binary Interface (a.k.a. ABI) of newer versions of Fedora C and C++ shared libraries stays compatible with previous versions. This task is executed when a new Fedora package update is submitted.

How does abicheck task work?

For each new Koji build, all sub-packages for all architectures (armv7hl, i686 and x86_64) are downloaded along with their debug info packages. Sub-packages of the previous latest stable corresponding build available in koji are downloaded along with their debug info packages as well.

The task then invokes the abipkgdiff tool to compare the ABIs of each new sub-package against its previous stable counterpart. The ABI comparison is only performed on shared libraries presents in those packages.

Known deficiencies

Comparing the ABI of two shared libraries involves performing a deep static analysis of the binaries and their debug information. Information about (possibly all) types and declarations present in the binaries are loaded in main memory and analyzed. The bigger the library and its debug information, the more memory is needed to perform the analysis.

The amount of memory needed by the abipkgdiff tool can vary from a few Kilobytes for small libraries to many Gigabytes for huge libraries.

Right now, taskotron executes the abicheck task on a system with 6GB of RAM. This task will fail to run if the amount of memory required for ABI comparison is greater than 6 GB.

Dealing with Result

The outcome of the abicheck task run can be PASSED, FAILED or NEEDS_INSPECTION. Depending on the outcome, either one of the following actions should be taken:

  • PASSED: No ABI change has been found. No review of the ABI change report logs is thus required.
  • FAILED: Incompatible ABI changes have been found in one or more libraries contained in the package. These changes will almost certainly break applications or libraries that depend on this package. A thorough review of the ABI changes reported in the logs is thus required. Please provide a relevant justification for these ABI changes or come with a new build that fixes those changes.
  • NEEDS_INSPECTION: Some ABI changes have been found. As a result, the ABI of the package might or might not be incompatible with its previous version. It is thus highly recommended to look into the log containing the ABI change report and verify that the ABI changes are harmless. If the changes are harmful, then please submit new version of the package that fixes the issue.

Getting Help

For further help on understanding ABI diff logs, Subscribe to libabigail Mailing List and send an email to <libabigail@sourceware.org>. You can also ask us on IRC channel by joining #libabigail on OFTC

If you see any issue in generated ABI diff log, please report a bug to libabigail's bugzilla

For any feature request, create an issue at pagure

Additional Information

  • Browse abicheck taskotron task source code at pagure