#1095351 libdbd-odbc-perl: FTBFS: Failed 1/42 test programs. 5/1086 subtests failed.

#1095351#5
Date:
2025-02-07 12:11:43 UTC
From:
To:
Dear maintainer:

During a rebuild of all packages in unstable, your package failed to build:
--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean
   dh_clean
 debian/rules binary
dh binary
   dh_update_autotools_config
   dh_autoreconf
   debian/rules override_dh_auto_configure
make[1]: Entering directory '/<<PKGBUILDDIR>>'
PERL_DBD_ODBC_PREFER_UNIXODBC=1 DBD_ODBC_UNICODE=1 dh_auto_configure
	/usr/bin/perl Makefile.PL INSTALLDIRS=vendor "OPTIMIZE=-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "LD=x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro -Wl,-z,now"

**********
	Remember to actually *READ* the README file!

[... snipped ...]

ok 411 - row 4 p1 data
ok 412 - row 4 p2 data
# insert affected = 4, error = 0, commit = 0, raise = 1, tuple = ARRAY(0x561709c8a5c8), array_context = 1, sts = 5
ok 413 - no error in execute_array eval
ok 414 - execute_array returned 5 rows executed
ok 415 - total affected 4
ok 416 - no error captured
ok 417 - 5 rows in tuple_status
# $ArrayTupleStatus = [
#                       1,
#                       1,
#                       1,
#                       1,
#                       '0E0'
#                     ];
ok 418 - tuple status is an array
ok 419 - status arrays same size
ok 420 - row 0 tuple status
ok 421 - row 1 tuple status
ok 422 - row 2 tuple status
ok 423 - row 3 tuple status
ok 424 - row 4 tuple status
ok 425 - row 0 p1 data
ok 426 - row 0 p2 data
ok 427 - row 1 p1 data
ok 428 - row 1 p2 data
ok 429 - row 2 p1 data
ok 430 - row 2 p2 data
ok 431 - row 3 p1 data
ok 432 - row 3 p2 data
ok 433 - row 4 p1 data
ok 434 - row 4 p2 data
# insert raise = 1, affected = 5, error = 0, commit = 0, sts = 2, tuple = ARRAY(0x561709c98470), array_context = 1
ok 435 - no error in execute_array eval
ok 436 - execute_array returned 2 rows executed
ok 437 - total affected 5
ok 438 - no error captured
ok 439 - 2 rows in tuple_status
# $ArrayTupleStatus = [
#                       4,
#                       1
#                     ];
ok 440 - tuple status is an array
ok 441 - status arrays same size
ok 442 - row 0 tuple status
ok 443 - row 1 tuple status
ok 444 - row 0 p1 data
ok 445 - row 0 p2 data
ok 446 - row 1 p1 data
ok 447 - row 1 p2 data
ok 448 - row 2 p1 data
ok 449 - row 2 p2 data
ok 450 - row 3 p1 data
ok 451 - row 3 p2 data
ok 452 - row 4 p1 data
ok 453 - row 4 p2 data
# error tests notuplestatus = 1, array_context = 1, raise = 1
# Last row in error
# insert error = 1, affected = undef, raise = 1, tuple = ARRAY(0x561709c9b1b0), commit = 0, array_context = 1, sts = undef, notuplestatus = 1
# ***** error handler called *****
ok 454 - error in execute_array eval
ok 455 - error captured
ok 456 - row 0 p1 data
ok 457 - row 0 p2 data
ok 458 - row 1 p1 data
ok 459 - row 1 p2 data
ok 460 - row 2 p1 data
ok 461 - row 2 p2 data
ok 462 - row 3 p1 data
ok 463 - row 3 p2 data
# 2nd last row in error
# insert sts = undef, notuplestatus = 1, array_context = 1, commit = 0, tuple = ARRAY(0x561709c9f0f8), raise = 1, affected = undef, error = 1
# ***** error handler called *****
ok 464 - error in execute_array eval
ok 465 - error captured
ok 466 - row 0 p1 data
ok 467 - row 0 p2 data
ok 468 - row 1 p1 data
ok 469 - row 1 p2 data
ok 470 - row 2 p1 data
ok 471 - row 2 p2 data
ok 472 - row 3 p1 data
ok 473 - row 3 p2 data
# error tests array_context = 0, notuplestatus = 1, raise = 1
# Last row in error
# insert array_context = 0, notuplestatus = 1, sts = undef, commit = 0, tuple = ARRAY(0x561709c9fcc8), error = 1, affected = undef, raise = 1
# ***** error handler called *****
ok 474 - error in execute_array eval
ok 475 - error captured
ok 476 - row 0 p1 data
ok 477 - row 0 p2 data
ok 478 - row 1 p1 data
ok 479 - row 1 p2 data
ok 480 - row 2 p1 data
ok 481 - row 2 p2 data
ok 482 - row 3 p1 data
ok 483 - row 3 p2 data
# 2nd last row in error
# insert error = 1, affected = undef, raise = 1, tuple = ARRAY(0x561709c9ffa0), commit = 0, array_context = 0, sts = undef, notuplestatus = 1
# ***** error handler called *****
ok 484 - error in execute_array eval
ok 485 - error captured
ok 486 - row 0 p1 data
ok 487 - row 0 p2 data
ok 488 - row 1 p1 data
ok 489 - row 1 p2 data
ok 490 - row 2 p1 data
ok 491 - row 2 p2 data
ok 492 - row 3 p1 data
ok 493 - row 3 p2 data
# error tests notuplestatus = 1, array_context = 1, raise = 0
# Last row in error
# insert commit = 0, notuplestatus = 1, sts = undef, array_context = 1, raise = 0, error = 1, affected = undef, tuple = ARRAY(0x561709c85ac0)
# ***** error handler called *****
ok 494 - no error in execute_array eval
ok 495 - execute_array returned undef rows executed
ok 496 - total affected undef
ok 497 - row 0 p1 data
ok 498 - row 0 p2 data
ok 499 - row 1 p1 data
ok 500 - row 1 p2 data
ok 501 - row 2 p1 data
ok 502 - row 2 p2 data
ok 503 - row 3 p1 data
ok 504 - row 3 p2 data
# 2nd last row in error
# insert tuple = ARRAY(0x561709ca0b58), raise = 0, affected = undef, error = 1, notuplestatus = 1, sts = undef, array_context = 1, commit = 0
# ***** error handler called *****
ok 505 - no error in execute_array eval
ok 506 - execute_array returned undef rows executed
ok 507 - total affected undef
ok 508 - row 0 p1 data
ok 509 - row 0 p2 data
ok 510 - row 1 p1 data
ok 511 - row 1 p2 data
ok 512 - row 2 p1 data
ok 513 - row 2 p2 data
ok 514 - row 3 p1 data
ok 515 - row 3 p2 data
# error tests raise = 0, notuplestatus = 1, array_context = 0
# Last row in error
# insert error = 1, affected = undef, raise = 0, tuple = ARRAY(0x561709c9bac8), commit = 0, array_context = 0, sts = undef, notuplestatus = 1
# ***** error handler called *****
ok 516 - no error in execute_array eval
ok 517 - execute_array returned undef rows executed
ok 518 - row 0 p1 data
ok 519 - row 0 p2 data
ok 520 - row 1 p1 data
ok 521 - row 1 p2 data
ok 522 - row 2 p1 data
ok 523 - row 2 p2 data
ok 524 - row 3 p1 data
ok 525 - row 3 p2 data
# 2nd last row in error
# insert commit = 0, array_context = 0, notuplestatus = 1, sts = undef, affected = undef, error = 1, raise = 0, tuple = ARRAY(0x561709cadfc8)
# ***** error handler called *****
ok 526 - no error in execute_array eval
ok 527 - execute_array returned undef rows executed
ok 528 - row 0 p1 data
ok 529 - row 0 p2 data
ok 530 - row 1 p1 data
ok 531 - row 1 p2 data
ok 532 - row 2 p1 data
ok 533 - row 2 p2 data
ok 534 - row 3 p1 data
ok 535 - row 3 p2 data
# Table dropped
1..535
ok
t/70execute_array_native.t ... skipped: SQLite fails this test horribly - I can't find anywhere to report it
t/80_odbc_diags.t ............ skipped: sqlite core dumps with this test - I can't find anywhere to report it
t/82_table_info.t ............
ok 1 - table found
ok 2 - table only
ok 3 # skip SQLite is known to fail the next test because catalog, schema and table are returned as '' instead of undef
1..3
ok
t/87_odbc_lob_read.t ......... skipped: Not MS SQL Server
t/90_trace_flags.t ...........
ok 1 - odbcunicode
ok 2 - odbcconnection
ok 3 - parse_trace_flags
1..3
ok
t/odbc_describe_parameter.t ..
1..17
ok 1 - use ODBCTEST;
ok 2 - create test table with integer
ok 3 - prepare insert
ok 4 - execute ok
ok 5 - ParamTypes is a hash
ok 6 - one parameter
ok 7 - integer parameter
ok 8 - prepare insert
ok 9 - execute ok
ok 10 - ParamTypes is a hash
ok 11 - one parameter
ok 12 - char parameter (prepare)
ok 13 - prepare insert
ok 14 - execute ok
ok 15 - ParamTypes is a hash
ok 16 - one parameter
ok 17 - char parameter (connect)
ok
# Test::Pod::Coverage 1.04 required for testing POD coverage
t/pod-coverage.t .............
1..1
ok 1 - Pod::Coverage
ok
t/pod.t ......................
1..4
ok 1 # skip Test::Pod 1.00 required for testing POD
ok 2 # skip Test::Pod 1.00 required for testing POD
ok 3 # skip Test::Pod 1.00 required for testing POD
ok 4 # skip Test::Pod 1.00 required for testing POD
ok
t/rt_101579.t ................
ok 1 - use ODBCTEST;
ok 2 - Inserted 8295.6
ok 3 - Inserted 181161.8
ok 4 - Inserted 6514.15
1..4
ok
t/rt_38977.t .................
1..14
ok 1 - use ODBCTEST;
ok 2 - got DBMS name: SQLite
ok 3 - got DBMS version: 3.46.1
ok 4 - got DRIVER name: sqlite3odbc.so
ok 5 - got DRIVER version 0.99991
ok 6 # skip not SQL Server
ok 7 # skip not SQL Server
ok 8 # skip not SQL Server
ok 9 # skip not SQL Server
ok 10 # skip not SQL Server
ok 11 # skip not SQL Server
ok 12 # skip not SQL Server
ok 13 # skip not SQL Server
ok 14 # skip not SQL Server
ok
t/rt_39841.t .................
1..28
ok 1 - use ODBCTEST;
ok 2 - got DBMS name: SQLite
ok 3 - got DBMS version: 3.46.1
ok 4 # skip not SQL Server
ok 5 # skip not SQL Server
ok 6 # skip not SQL Server
ok 7 # skip not SQL Server
ok 8 # skip not SQL Server
ok 9 # skip not SQL Server
ok 10 # skip not SQL Server
ok 11 # skip not SQL Server
ok 12 # skip not SQL Server
ok 13 # skip not SQL Server
ok 14 # skip not SQL Server
ok 15 # skip not SQL Server
ok 16 # skip not SQL Server
ok 17 # skip not SQL Server
ok 18 # skip not SQL Server
ok 19 # skip not SQL Server
ok 20 # skip not SQL Server
ok 21 # skip not SQL Server
ok 22 # skip not SQL Server
ok 23 # skip not SQL Server
ok 24 # skip not SQL Server
ok 25 # skip not SQL Server
ok 26 # skip not SQL Server
ok 27 # skip not SQL Server
ok 28 # skip not SQL Server
ok
t/rt_39897.t .................
1..6
ok 1 - use ODBCTEST;
ok 2 - create test table with varchar
ok 3 - prepare insert
ok 4 - execute insert
ok 5 - issue select on test table
ok 6 - fetch varchar(100) from test table
ok
t/rt_43384.t .................
1..8
ok 1 - use ODBCTEST;
ok 2 # skip Microsoft Access tests not supported using SQLite
ok 3 # skip Microsoft Access tests not supported using SQLite
ok 4 # skip Microsoft Access tests not supported using SQLite
ok 5 # skip Microsoft Access tests not supported using SQLite
ok 6 # skip Microsoft Access tests not supported using SQLite
ok 7 # skip Microsoft Access tests not supported using SQLite
ok 8 # skip Microsoft Access tests not supported using SQLite
ok
t/rt_46597.t .................
1..6
ok 1 - use ODBCTEST;
ok 2 # skip Microsoft Access tests not supported using SQLite
ok 3 # skip Microsoft Access tests not supported using SQLite
ok 4 # skip Microsoft Access tests not supported using SQLite
ok 5 # skip Microsoft Access tests not supported using SQLite
ok 6 # skip Microsoft Access tests not supported using SQLite
ok
t/rt_50852.t .................
1..5
ok 1 - use ODBCTEST;
ok 2 # skip Microsoft SQL Server test not supported using SQLite
ok 3 # skip Microsoft SQL Server test not supported using SQLite
ok 4 # skip Microsoft SQL Server test not supported using SQLite
ok 5 # skip Microsoft SQL Server test not supported using SQLite
ok
#
# Some of these tests may fail for your driver - please let me know if they do along with the strings SQLite/sqlite3odbc.so
t/rt_57957.t .................
1..8
ok 1 - use ODBCTEST;
ok 2 - Prepare with trailing comment and named placeholder
ok 3 - Prepare with leading comment and named placeholder
ok 4 - Prepare with line comment named placeholder
ok 5 - Prepare with leading comment and ? placeholder
ok 6 - Prepare with line comment and ? placeholder
ok 7 - Prepare with ? placeholder in literal
ok 8 - Prepare with named placeholder in literal
ok
t/rt_59621.t .................
1..11
ok 1 - use ODBCTEST;
ok 2 - got DBMS name: SQLite
ok 3 - got DBMS version: 3.46.1
ok 4 - got DRIVER name: sqlite3odbc.so
ok 5 - got DRIVER version 0.99991
ok 6 # skip not SQL Server
ok 7 # skip not SQL Server
ok 8 # skip not SQL Server
ok 9 # skip not SQL Server
ok 10 # skip not SQL Server
ok 11 # skip not SQL Server
ok
t/rt_61370.t .................
ok 1 - use ODBCTEST;
ok 2 - got DBMS name: SQLite
ok 3 - got DBMS version: 3.46.1
ok 4 - got DRIVER name: sqlite3odbc.so
ok 5 - got DRIVER version 0.99991
# Not Microsoft SQL Server
1..5
ok
t/rt_62033.t .................
ok 1 - use ODBCTEST;
ok 2 - got DBMS name: SQLite
ok 3 - got DBMS version: 3.46.1
ok 4 - got DRIVER name: sqlite3odbc.so
ok 5 - got DRIVER version 0.99991
# Not Microsoft SQL Server
1..5
ok
t/rt_63550.t .................
ok 1 - use ODBCTEST;
ok 2 - Statement is defined
1..2
ok
t/rt_78838.t .................
ok 1 - use ODBCTEST;
ok 2 - got DBMS name: SQLite
# Not Microsoft SQL Server
1..2
ok
t/rt_79190.t ................. skipped: DBI_USER is undefined
t/rt_79397.t .................
ok 1 - use ODBCTEST;
ok 2 - got DBMS name: SQLite
ok 3 - got DBMS version: 3.46.1
ok 4 - got DRIVER name: sqlite3odbc.so
ok 5 - got DRIVER version 0.99991
# Not Microsoft SQL Server
1..5
ok
t/rt_81911.t .................
ok 1 - use ODBCTEST;
ok 2 - affected from execute insert
ok 3 - execute and odbc_rows agree on insert
ok 4 - affected from execute insert
ok 5 - execute and odbc_rows agree on insert 2
ok 6 - affected from execute update none
ok 7 - execute and odbc_rows agree on update none
ok 8 - affected from execute update 1
ok 9 - execute and odbc_rows agree on update 1
ok 10 - affected from execute update 2
ok 11 - execute and odbc_rows agree on update 2
1..11
ok
t/rt_null_nvarchar.t .........
1..8
ok 1 - got DBMS name: SQLite
ok 2 - got DBMS version: 3.46.1
ok 3 - got DRIVER name: sqlite3odbc.so
ok 4 - got DRIVER version 0.99991
ok 5 # skip not SQL Server
ok 6 # skip not SQL Server
ok 7 # skip not SQL Server
ok 8 # skip not SQL Server
ok

#   Failed test 'ivok bind integer'
#   at t/sql_type_cast.t line 151.
SV = PV(0x55bd58899810) at 0x55bd5889f820
  REFCNT = 2
  FLAGS = (POK,pPOK)
  PV = 0x55bd58aacfd0 "100"\0
  CUR = 3
  LEN = 16

#   Failed test 'ivok bind integer discard'
#   at t/sql_type_cast.t line 167.
SV = PV(0x55bd58899810) at 0x55bd5889f820
  REFCNT = 2
  FLAGS = (POK,pPOK)
  PV = 0x55bd58aacfd0 "100"\0
  CUR = 3
  LEN = 16

#   Failed test 'not PV bind integer discard'
#   at t/sql_type_cast.t line 168.
SV = PV(0x55bd58899810) at 0x55bd5889f820
  REFCNT = 2
  FLAGS = (POK,pPOK)
  PV = 0x55bd58aacfd0 "100"\0
  CUR = 3
  LEN = 16

#   Failed test 'ivok bind integer discard'
#   at t/sql_type_cast.t line 184.
SV = PV(0x55bd589cc580) at 0x55bd58aca340
  REFCNT = 1
  FLAGS = (POK,pPOK)
  PV = 0x55bd58ac6080 "100"\0
  CUR = 3
  LEN = 16

#   Failed test 'not PV bind integer discard'
#   at t/sql_type_cast.t line 185.
SV = PV(0x55bd589cc580) at 0x55bd58aca340
  REFCNT = 1
  FLAGS = (POK,pPOK)
  PV = 0x55bd58ac6080 "100"\0
  CUR = 3
  LEN = 16
# Looks like you failed 5 tests of 16.
t/sql_type_cast.t ............
1..16
ok 1 - use ODBCTEST;
ok 2 - create test table with integer
ok 3 - insert into table
ok 4 - correct value returned
ok 5 - ! ivok no bind
ok 6 - correct value returned Bind
ok 7 - ! ivok bind
ok 8 - correct value returned SQL_NUMERIC
not ok 9 - ivok bind integer
ok 10 - PV bind integer
ok 11 - correct value returned SQL_NUMERIC|DiscardString
not ok 12 - ivok bind integer discard
not ok 13 - not PV bind integer discard
ok 14 - correct value returned SQL_NUMERIC|DiscardString
not ok 15 - ivok bind integer discard
not ok 16 - not PV bind integer discard
Dubious, test returned 5 (wstat 1280, 0x500)
Failed 5/16 subtests

Test Summary Report
-------------------
t/sql_type_cast.t          (Wstat: 1280 (exited 5) Tests: 16 Failed: 5)
  Failed tests:  9, 12-13, 15-16
  Non-zero exit status: 5
Files=42, Tests=1086,  3 wallclock secs ( 0.09 usr  0.03 sys +  1.56 cusr  0.47 csys =  2.15 CPU)
Result: FAIL
Failed 1/42 test programs. 5/1086 subtests failed.
make[2]: *** [Makefile:1002: test_dynamic] Error 5
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_test: error: make -j2 test TEST_VERBOSE=1 returned exit code 2
make[1]: *** [debian/rules:17: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:10: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:

https://people.debian.org/~sanvila/build-logs/202502/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:libdbd-odbc-perl, so that this is still
visible in the BTS web page for this package.

Thanks.

#1095351#14
Date:
2026-06-07 16:04:33 UTC
From:
To:
On Fri, 05 Jun 2026 11:37:02 +0200, Patrik Schindler wrote:

(moving to the discussion list debian-perl@lists.debian.org)

Hi Patrik,

The reason is https://bugs.debian.org/1095351
The package started to fail its build (test failures) in Februar
2025; this bug was not fixed, so it was removed from testing and
didn't become part of the trixie release.

The same test failure still happens in today's unstable,
unfortunately …


Cheers,
gregor

#1095351#19
Date:
2026-06-08 07:35:42 UTC
From:
To:
Hello Gregor,

thanks.

I meanwhile pulled the package from the upcoming Debian Forky repository. It installs fine and works, as far as I'm aware. At least in the scenarios I'm using: Mostly IBM i ODBC connections.

Do I see this correctly, that the error is mostly confined to the usage of SQLite in combination to typecasting int vs. string?

:wq! PoC

#1095351#24
Date:
2026-06-11 19:22:04 UTC
From:
To:
The package is not in testing/forky either, so either you pulled it
from oldstable/bookworm or from unstable/sid. [0]
(And it won't migrate from unstable to testing unless the bug is
fixed.)

But good to hear that it works for you!
area, but apparently noone (upstream or in Debian) has investigated
what's going on.


Cheers,
gregor



[0]

% rmadison libdbd-odbc-perl
libdbd-odbc-perl | 1.61-1        | oldoldstable   | source
libdbd-odbc-perl | 1.61-1+b1     | oldoldstable   | amd64, arm64, armhf, i386
libdbd-odbc-perl | 1.61-2        | oldstable      | source
libdbd-odbc-perl | 1.61-2+b2     | oldstable      | amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
libdbd-odbc-perl | 1.61-4        | unstable       | source
libdbd-odbc-perl | 1.61-4        | unstable-debug | source
libdbd-odbc-perl | 1.61-4+b1     | unstable       | armhf
libdbd-odbc-perl | 1.61-4+b2     | unstable       | amd64, arm64, i386, ppc64el, riscv64, s390x

Or the left side of https://tracker.debian.org/pkg/libdbd-odbc-perl