Package: libtdb1
Version: 1.1.2~git20080615-1
Severity: serious
Justification: ABI breakage.

Hello,

so, while checking whether #510886 applies to the testing version as
well, I've discovered that it broke the ABI without a SONAME bump.
Here's how I found that:
| wget -q 
http://ftp.ee.debian.org/debian/pool/main/t/tdb/libtdb1_1.0.6-13_amd64.deb
| wget -q 
http://ftp.es.debian.org/debian/pool/main/t/tdb/libtdb1_1.1.2~git20080615-1_amd64.deb
| dpkg -x libtdb1_1.0.6-13_amd64.deb etch
| dpkg -x libtdb1_1.1.2\~git20080615-1_amd64.deb lenny
| nm -D etch/usr/lib/libtdb.so.1|cut -b 18-|sort > etch.list
| nm -D lenny/usr/lib/libtdb.so.1|cut -b 18-|sort > lenny.list
| diff -u etch.list lenny.list > tdb-symbols.diff

(If you want to look at the i386 binaries, I think you want “cut -b
10-”, though it's been a while since I last checked that.)

Also, I'm attaching the diff, just in case.

We don't care about 'U' ones, of course. Checking which ones got away:
| grep ^-T tdb-symbols.diff
| -T tdb_clear_spinlocks
| -T tdb_create_rwlocks
| -T tdb_logging_function
| -T tdb_set_lock_alarm
| -T tdb_spinlock
| -T tdb_spinunlock

That *might* not be the problem if they are not exposed through the API.
But both tdb_logging_function and tdb_set_lock_alarm are exposed.

I'm going to have a look at the packages that depend on this library, to
see how things looks like. I'm in contact with a release manager as well
(hello dato).

Mraw,
KiBi.
--- etch.list   2009-01-06 17:39:44.000000000 +0100
+++ lenny.list  2009-01-06 17:39:53.000000000 +0100
@@ -2,57 +2,139 @@
 A _edata
 A _end
 B tdb_null
+T dummy_snprintf
 T _fini
 T _init
+T rep_getpass
+T replace_dummy
+T rep_strlcat
+T rep_strlcpy
+T tdb_add_flags
+T tdb_allocate
+T tdb_alloc_read
 T tdb_append
+T tdb_brlock
+T tdb_brlock_upgrade
 T tdb_chainlock
+T tdb_chainlock_mark
+T tdb_chainlock_nonblock
 T tdb_chainlock_read
+T tdb_chainlock_unmark
 T tdb_chainunlock
 T tdb_chainunlock_read
-T tdb_clear_spinlocks
 T tdb_close
-T tdb_create_rwlocks
+T tdb_convert
 T tdb_delete
+T tdb_do_delete
 T tdb_dump_all
+T tdb_enable_seqnum
 T tdb_error
 T tdb_errorstr
 T tdb_exists
+T tdb_expand
+T tdb_fd
 T tdb_fetch
+T tdb_find_lock_hash
 T tdb_firstkey
+T tdb_free
+T tdb_freelist_size
+T tdb_get_flags
+T tdb_get_logging_private
+T tdb_get_seqnum
+T tdb_hash_size
+T tdb_increment_seqnum_nonblock
+T tdb_io_init
+T tdb_lock
 T tdb_lockall
-T tdb_logging_function
+T tdb_lockall_mark
+T tdb_lockall_nonblock
+T tdb_lockall_read
+T tdb_lockall_read_nonblock
+T tdb_lockall_unmark
+T tdb_lock_nonblock
+T tdb_lock_record
+T tdb_log_fn
+T tdb_map_size
+T tdb_mmap
+T tdb_munmap
+T tdb_name
 T tdb_nextkey
+T tdb_ofs_read
+T tdb_ofs_write
 T tdb_open
 T tdb_open_ex
+T tdb_parse_data
+T tdb_parse_record
 T tdb_printfreelist
+T tdb_rec_free_read
+T tdb_rec_read
+T tdb_rec_write
+T tdb_remove_flags
 T tdb_reopen
 T tdb_reopen_all
-T tdb_set_lock_alarm
-T tdb_spinlock
-T tdb_spinunlock
+T tdb_setalarm_sigptr
+T tdb_set_logging_function
+T tdb_set_max_dead
 T tdb_store
+T tdb_transaction_cancel
+T tdb_transaction_commit
+T tdb_transaction_lock
+T tdb_transaction_recover
+T tdb_transaction_start
+T tdb_transaction_unlock
 T tdb_traverse
+T tdb_traverse_read
+T tdb_unlock
 T tdb_unlockall
+T tdb_unlockall_read
+T tdb_unlock_record
+T tdb_validate_freelist
+T tdb_wipe_all
+T tdb_write_lock_record
+T tdb_write_unlock_record
 U calloc
 U close
 U __errno_location
+U exit
+U fclose
 U fcntl
+U fflush
+U fgets
+U fileno
+U fopen
+U fputc
+U fputs
 U free
+U fsync
 U ftruncate
 U __fxstat
+U getpagesize
 U lseek
 U malloc
 U memcpy
 U memset
 U mmap
+U msync
 U munmap
 U open
+U pread
 U printf
 U puts
+U pwrite
 U read
 U realloc
+U select
+U setvbuf
+U signal
+U stderr
+U stdin
+U stdout
 U __strdup
 U strerror
+U strlen
+U tcgetattr
+U tcsetattr
+U utime
 U write
 w __cxa_finalize
 w __gmon_start__

Reply via email to