undefined symbol: _dbd_parse_datetime

Bug #660990 reported by Laurent Vivier
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
libdbi-drivers (Ubuntu)
Fix Released
Medium
Clint Byrum
Nominated for Maverick by Clint Byrum

Bug Description

Full logs:
/usr/lib/dbd/libdbdpgsql.so: undefined symbol: _dbd_parse_datetime
libdbi: Failed to load driver: /usr/lib/dbd/libdbdpgsql.so

When libdbi loads the postgresql driver, the load fails because _dbd_parse_time is missing for /usr/lib/dbd/libdbdpgsql.so.
This symbol is normally provided by libdbi.so which is the loader:

$ objdump -T /usr/lib/libdbi.so.0.0.5|grep _dbd_parse_datetime
0000000000009570 g DF .text 00000000000002bc Base _dbd_parse_datetime

ProblemType: Bug
DistroRelease: Ubuntu 10.10
Package: libdbd-pgsql 0.8.3-1-0ubuntu1
ProcVersionSignature: Ubuntu 2.6.35-22.34-generic 2.6.35.4
Uname: Linux 2.6.35-22-generic x86_64
NonfreeKernelModules: nvidia
Architecture: amd64
Date: Fri Oct 15 09:51:10 2010
InstallationMedia: Ubuntu 10.10 "Maverick Meerkat" - Release amd64 (20101007)
ProcEnviron:
 LANG=fr_FR.utf8
 SHELL=/bin/bash
SourcePackage: libdbi-drivers

Related branches

Revision history for this message
Laurent Vivier (laurent-vivier) wrote :
Revision history for this message
Laurent Vivier (laurent-vivier) wrote :
Revision history for this message
Laurent Vivier (laurent-vivier) wrote :

Removing "--enable-dbi" from debian/rules actually corrects the issue.

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

Hi Laurent! Thanks for taking the time to file this bug report!

Can you provide a working repeatable test case? The full log above doesn't actually seem to have something I can run to show the failure (so I can also show the success of the fix).

I was just now able to run the libdbi-drivers test suite, which does not produce this issue, as well as use rrdtool's libdbi integration without problems, querying from sqlite3. So I'm a little confused as to what is broken.

It should be noted that we went ahead and kept the ABI incompatible libdbi 0.8.3 in Maverick, as none of the packages in Ubuntu were affected by the ABI issues. Is it possible that you are using a custom compiled application that was built against 0.8.2, and needs to be rebuilt against 0.8.3?

Marking Incomplete pending a repeatable test case and confirmation that this is not due to the ABI incompatibilities.

Changed in libdbi-drivers (Ubuntu):
status: New → Incomplete
Revision history for this message
Laurent Vivier (laurent-vivier) wrote :

Hi Clint,

I'm sorry but I can't provide a repeatable test case.

My application (in fact a plugin for another application) has been recompiled. It was working perfectly as is with ubuntu 10.04.
To make it working now, I've just to install a libdbd-pgsql built from a modified libdbi-drivers-0.8.3-1 (I've removed the --enable-libdbi from debian/rules).

Could you explain how to run libdbi-drivers test suite on my system ?

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

To run the test suite, install libdbi0-dev, extract the source for libdbi-drivers, and run

./configure
make tests/test_dbi
tests/test_dbi

Its really hard to justify publishing a fix without a repeatable test case. However, I think I have one. If a shared lib is loaded that is linked to libdbi.so.2, using dlopen() but not having RTLD_GLOBAL in the options, then I see this issue repeated.

Marking In Progress, and assigning to me. I have a fix ready and will be adding a regression test to make sure this doesn't happen again. I am working with the Debian maintainer to get 0.8.4 added and will make sure the linking happens properly in future releases.

Setting Importance to Medium. This only affects packages that dlopen() libdbi linked plugins, of which I am not aware there are any in Ubuntu itself, so this affects only 3rd party apps.

Changed in libdbi-drivers (Ubuntu):
status: Incomplete → In Progress
assignee: nobody → Clint Byrum (clint-fewbar)
importance: Undecided → Medium
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

I've submitted my tests for dlopen() capability upstream here:

https://sourceforge.net/tracker/?func=detail&aid=3089978&group_id=65979&atid=512948

and the bug about --enable-libdbi being reversed here:

https://sourceforge.net/tracker/?func=detail&aid=3089973&group_id=65979&atid=512945

Changed in libdbi-drivers (Ubuntu):
status: In Progress → Confirmed
tags: added: regression-release
Revision history for this message
Launchpad Janitor (janitor) wrote :

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

---------------
libdbi-drivers (0.8.3-1-0ubuntu2) natty; urgency=low

  [ Clint Byrum ]
  * --enable-dbi makes libdbi unloadable by dlopen() methods. (LP: #660990)
    - debian/buildtests -- test suite to verify drivers are usable when
      libdbi is loaded via dlopen()
    - debian/copyright -- adding copyright attribution for buildtests dir

  [ Colin Watson ]
  * Fix debian/buildtests/Makefile to use 'gcc -Wl,-soname,...' rather than
    'gcc -soname,...'.
  * Make sure buildtests don't fail if 'debian/rules binary' has already
    been run.
 -- Colin Watson <email address hidden> Mon, 29 Nov 2010 14:42:14 +0000

Changed in libdbi-drivers (Ubuntu):
status: Confirmed → Fix Released
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.