libdbi0: ABI breakage without package name change

Bug #625882 reported by Clint Byrum
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Release Notes for Ubuntu
Fix Released
Undecided
Thierry Carrez
collectd (Ubuntu)
Fix Released
Undecided
Unassigned
Maverick
Won't Fix
Undecided
Unassigned
gammu (Ubuntu)
Fix Released
Undecided
Unassigned
Maverick
Won't Fix
Undecided
Unassigned
icinga (Ubuntu)
Fix Released
Undecided
Unassigned
Maverick
Won't Fix
Undecided
Unassigned
libapache-mod-log-sql (Ubuntu)
Fix Released
Undecided
Unassigned
Maverick
Won't Fix
Undecided
Unassigned
libdbi (Debian)
Fix Released
Unknown
libdbi (Ubuntu)
Fix Released
High
Clint Byrum
Maverick
Won't Fix
High
Clint Byrum
libdbi-drivers (Ubuntu)
Fix Released
Undecided
Clint Byrum
Maverick
Won't Fix
Undecided
Clint Byrum
rrdtool (Ubuntu)
Fix Released
High
Clint Byrum
Maverick
Won't Fix
High
Clint Byrum
syslog-ng (Ubuntu)
Fix Released
Undecided
Unassigned
Maverick
Won't Fix
Undecided
Unassigned

Bug Description

RELEASE NOTE FOR MAVERICK

===

The version of libdbi (0.8.3) has a known ABI incompatibility with earlier versions of libdbi that have been distributed with past versions of Ubuntu and Debian. As such, any software linked against libdbi.so.0 may give unexpected results if they utilize the 'dbi_error_flag' enum. Recompiling these applications will resolve this issue.

===

This was found in Debian this past week, and affects our 0.8.3 package as well.

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=594607

From the debian bug report:

The diff between libdbi 0.8.2 and 0.8.3 includes this:

 /* other type definitions */
 typedef enum {
- DBI_ERROR_USER = -1, DBI_ERROR_NONE = 0, DBI_ERROR_DBD, DBI_ERROR_BADOBJECT,
- DBI_ERROR_BADTYPE, DBI_ERROR_BADIDX, DBI_ERROR_BADNAME, DBI_ERROR_UNSUPPORTED
,
- DBI_ERROR_NOCONN, DBI_ERROR_NOMEM, DBI_ERROR_BADPTR
+ DBI_ERROR_USER = -10, /* must be the first in the list */
+ DBI_ERROR_DBD = -9,
+ DBI_ERROR_BADOBJECT,
+ DBI_ERROR_BADTYPE,
+ DBI_ERROR_BADIDX,
+ DBI_ERROR_BADNAME,
+ DBI_ERROR_UNSUPPORTED,
+ DBI_ERROR_NOCONN,
+ DBI_ERROR_NOMEM,
+ DBI_ERROR_BADPTR,
+ DBI_ERROR_NONE = 0,
+ DBI_ERROR_CLIENT
 } dbi_error_flag;

which changes the values of various error constants. That's an
incompatible ABI change, and should therefore have come with a SONAME
change, AFAICT.

Revision history for this message
Clint Byrum (clint-fewbar) wrote :

Marking High, this ABI incompatibility will cause broken error messages.

Changed in libdbi (Ubuntu):
importance: Undecided → High
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

v0.8.4 was sort of released (see debian bug report for more info) and appears to correct the problem by bumping soname.

Adding rrdtool now, and will add other affected reverse dependencies that will need to be rebuilt after this is uploaded.

Changed in libdbi (Ubuntu):
status: New → In Progress
assignee: nobody → Clint Byrum (clint-fewbar)
Revision history for this message
Serge Hallyn (serge-hallyn) wrote :

17:38 < SpamapS> These are pretty low hanging, easy bugs so it would be cool if some aspiring
                 community members picked them up and fixed them. :)

AIUI, this bug will require some simple, but non-zero work for each affected project. Clint
will likely be adding more affected projects (to the current two) over the next few days.

Changed in rrdtool (Ubuntu):
status: New → Triaged
importance: Undecided → High
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

I've added all of the packages that depend on libdbi0 as bug tasks.

Once libdbi is fixed, each one of them will need to be rebuilt against the new version.

Since the ABI changed, the -dev library needs to be named libdbi-dev, not libdbi0-dev.

In the process of doing this, I've found that the library archive files were in libdbi0, instead of libdbi0-dev, so libdbi-dev will have to Break/Replace not only libdbi0-dev, but libdbi0 as well.

I will post more information on how to fix all of the dependencies once libdbi is uploaded.

Changed in libdbi (Ubuntu):
status: In Progress → Confirmed
Changed in libdbi-drivers (Ubuntu):
status: New → In Progress
assignee: nobody → Clint Byrum (clint-fewbar)
Changed in rrdtool (Ubuntu):
status: Triaged → In Progress
assignee: nobody → Clint Byrum (clint-fewbar)
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

In grepping the source packages, none of the affected packages actually use the broken bits of the ABI (dbi_error_flag).

That said, its still important to provide a consistent ABI for upgrades in case somebody has written something that does use libdbi.

I've tested building rrdtool and libdbi-drivers with the proposed 0.8.4-0ubuntu1 from the merge proposal, so far no problems and rrdtool works fine w/ its DBI mode, libdbi-drivers passes all of its internal test suite.

Thierry Carrez (ttx)
tags: added: server-mrs
Mathias Gug (mathiaz)
Changed in libdbi-drivers (Ubuntu):
status: In Progress → Triaged
Changed in rrdtool (Ubuntu):
status: In Progress → Triaged
Changed in libdbi (Ubuntu):
status: Confirmed → Triaged
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

After discussing this at length with Mathias Gug today, we've agreed that this is too much change for very little benefit this close to the release.

The only risk is that developers who compile 3rd party apps on lucid, apps that use the error enums, may get unexpected results on maverick, and vice versa.

As such, well be leaving libdbi 0.8.3 in Maverick, and suggesting a release note be added so developers can be informed of the issue.

description: updated
Mathias Gug (mathiaz)
Changed in ubuntu-release-notes:
assignee: nobody → Thierry Carrez (ttx)
tags: removed: server-mrs
Thierry Carrez (ttx)
Changed in ubuntu-release-notes:
status: New → Fix Released
Changed in libdbi (Debian):
status: Unknown → Fix Released
Revision history for this message
Andreas Moog (ampelbein) wrote :

Icinga is fixed in oneiric.

Changed in icinga (Ubuntu):
status: New → Fix Released
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

The Debian package is now at version 0.8.4, which no longer has this problem. I requested a sync in bug #812026 which, once synced, should kick off rebuilds of all reverse-depends of libdbi, closing this bug for each of them.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package rrdtool - 1.4.3-3.1ubuntu2

---------------
rrdtool (1.4.3-3.1ubuntu2) oneiric; urgency=low

  * Build-depend on libdbi-dev rather than libdbi0-dev (LP: #625882).
 -- Colin Watson <email address hidden> Tue, 23 Aug 2011 03:56:10 +0100

Changed in rrdtool (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package collectd - 4.10.1-2.1ubuntu4

---------------
collectd (4.10.1-2.1ubuntu4) oneiric; urgency=low

  * Build-depend on libdbi-dev rather than libdbi0-dev (LP: #625882).
 -- Colin Watson <email address hidden> Tue, 23 Aug 2011 10:15:02 +0100

Changed in collectd (Ubuntu):
status: New → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package libapache-mod-log-sql - 1.100-14ubuntu1

---------------
libapache-mod-log-sql (1.100-14ubuntu1) oneiric; urgency=low

  * Build-depend on libdbi-dev rather than libdbi0-dev (LP: #625882).
 -- Colin Watson <email address hidden> Tue, 23 Aug 2011 10:17:38 +0100

Changed in libapache-mod-log-sql (Ubuntu):
status: New → Fix Released
Revision history for this message
Colin Watson (cjwatson) wrote :

gammu (1.30.0-1) unstable; urgency=low

  * New stable upstream version, upload to unstable.
  * Build depend on libdbi-dev instead of libdbi0-dev (Closes: #634570).
  * Use linux-any instead of listing non-linux arches.
  * Add build-arch and build-indep targets.

 -- Michal Čihař <email address hidden> Tue, 19 Jul 2011 11:55:35 +0200

Changed in gammu (Ubuntu):
status: New → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package libdbi-drivers - 0.8.3-1-0ubuntu4

---------------
libdbi-drivers (0.8.3-1-0ubuntu4) oneiric; urgency=low

  * Backport from Debian (Thomas Goirand, LP: #625882):
    - Removed explicit dependency on libdbi0 (gosh, I don't get even how it
      could be there, since it should be computed by shlibs...).
    - Build-Depends on libdbi-dev (>= 0.8.4-5).
 -- Colin Watson <email address hidden> Tue, 23 Aug 2011 10:45:44 +0100

Changed in libdbi-drivers (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package syslog-ng - 3.2.4-1ubuntu1

---------------
syslog-ng (3.2.4-1ubuntu1) oneiric; urgency=low

  * Build-depend on libdbi-dev rather than libdbi0-dev (LP: #625882).
 -- Colin Watson <email address hidden> Tue, 23 Aug 2011 10:49:08 +0100

Changed in syslog-ng (Ubuntu):
status: New → Fix Released
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

libdbi 0.8.4 is in Oneiric, marking libdbi task Fix Released.

Changed in libdbi (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

At this point I can't see us going back and changing anything with libdbi in Maverick. Closing all maverick tasks as Won't Fix.

Changed in collectd (Ubuntu Maverick):
status: New → Won't Fix
Changed in gammu (Ubuntu Maverick):
status: New → Won't Fix
Changed in icinga (Ubuntu Maverick):
status: New → Won't Fix
Changed in libapache-mod-log-sql (Ubuntu Maverick):
status: New → Won't Fix
Changed in libdbi (Ubuntu Maverick):
status: Triaged → Won't Fix
Changed in libdbi-drivers (Ubuntu Maverick):
status: Triaged → Won't Fix
Changed in rrdtool (Ubuntu Maverick):
status: Triaged → Won't Fix
Changed in syslog-ng (Ubuntu Maverick):
status: New → Won't Fix
Revision history for this message
Matt Joyce (matt-nycresistor) wrote :

I see this issue on Oneiric Ubuntu synced mirror today Jan 12 2012.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.