New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test failures with MariaDB 10.3.9 #275
Comments
This is one of bugs which cannot be (easily) fixed for MariaDB in DBD::mysql. |
The issue with switching to DBD:MariaDB is that Arch Linux packages applications that hard code the user of DBD::mysql such as xtrabackup and perconna-toolkit [1]. Currently Arch is packaging MariaDB 10.1.36 but ideally it would package the latest stable release. Could DBD::MariaDB provide compatibility support for DBD::mysql? |
DBD::MariaDB is DBI driver, so applications which uses DBI API and do not depend on internals, driver specific or undocumented features should work. DBD::MariaDB fixed lot of DBD::mysql bugs (Unicode, SSL, security, MariaDB related), but some applications depend on those bugs -- so these parts are for obvious reason not backward compatible. |
We're seeing this in Debian as well: https://bugs.debian.org/917303 |
Testing with MariaDB 10.3 was disabled: Maybe MariaDB 10.3 is not supported by DBD::mysql at all? |
I'll try to fix both this issue and see if we can work-around the issue that prevented testing from working. |
Update:
Commits are in https://github.com/dveeden/DBD-mysql/commits/issue_275 |
|
Looks like the segfault happens when libmariadb was build against GnuTLS (either dynamic or static) and not if it was build against OpenSSL. |
Looks like the segfault happens when libmariadb was build against GnuTLS (either dynamic or static) and not if it was build against OpenSSL.
Thanks for all your work!
libmariadb3 in Debian is built/linked against OpenSSL but t/15reconnect.t
still fails. - Cf. https://bugs.debian.org/917303
I've now built the package locally 4 times; two times I got the same
failure, but two times t/15reconnect.t ended after the 6th test:
```
t/15reconnect.t .........................
1..16
ok 1 - Connected to database
ok 2 - checking for active handle
ok 3 - enabling reconnect
ok 4 - enabling autocommit
ok 5 - disconnecting active handle
ok 6 - checking for inactive handle
Failed 10/16 subtests
```
|
Just checked https://github.com/dveeden/DBD-mysql/commits/issue_275 all tests are now passing. |
On reconnect mysql->extension gets uses while it isn't safe. To ensure this doesn't happen let's set it to NULL. From a valgrind run: ==21888== Invalid read of size 8 ==21888== at 0xC6941DF: mariadb_reconnect (mariadb_lib.c:1595) ==21888== by 0xC69118C: mthd_my_send_cmd (mariadb_lib.c:365) ==21888== by 0xC6A494B: mysql_stmt_prepare (mariadb_stmt.c:1616) ==21888== by 0xC661432: XS_DBD__mysql__db_do (mysql.xs:334) ==21888== by 0xBE40028: XS_DBI_dispatch (in /usr/lib64/perl5/vendor_perl/auto/DBI/DBI.so) ==21888== by 0x496EB08: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x4964CF4: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x48E193E: perl_run (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x109349: ??? (in /usr/bin/perl) ==21888== by 0x4DC3412: (below main) (in /usr/lib64/libc-2.28.so) ==21888== Address 0xc47e560 is 0 bytes inside a block of size 120 free'd ==21888== at 0x4839A0C: free (vg_replace_malloc.c:540) ==21888== by 0xC69557A: mysql_close (mariadb_lib.c:1947) ==21888== by 0xC657FDA: mysql_db_disconnect (dbdimp.c:2409) ==21888== by 0xC66438A: XS_DBD__mysql__db_disconnect (mysql.xsi:342) ==21888== by 0xBE40028: XS_DBI_dispatch (in /usr/lib64/perl5/vendor_perl/auto/DBI/DBI.so) ==21888== by 0x496EB08: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x4964CF4: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x48E193E: perl_run (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x109349: ??? (in /usr/bin/perl) ==21888== by 0x4DC3412: (below main) (in /usr/lib64/libc-2.28.so) ==21888== Block was alloc'd at ==21888== at 0x483AB1A: calloc (vg_replace_malloc.c:762) ==21888== by 0xC692692: mysql_init (mariadb_lib.c:996) ==21888== by 0xC655175: mysql_dr_connect (dbdimp.c:1688) ==21888== by 0xC657B62: my_login (dbdimp.c:2235) ==21888== by 0xC657C9F: mysql_db_login (dbdimp.c:2285) ==21888== by 0xC664C0A: XS_DBD__mysql__db__login (mysql.xsi:126) ==21888== by 0x496EB08: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x4964CF4: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x48D95EC: Perl_call_sv (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0xBE41188: XS_DBI_dispatch (in /usr/lib64/perl5/vendor_perl/auto/DBI/DBI.so) ==21888== by 0x496EB08: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.1) ==21888== by 0x4964CF4: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.1) ==21888== Related: - perl5-dbi/DBD-mysql#275 - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=917303 Thanks to @ericherman for helping with this.
I think |
Looks like |
A new fix: 667d63c If this passes w/o issues on Travis and when there are no objections then I will merge this and release a new version. |
Previous versions of the mentioned failed to build when using the client library derived from this mariadb-10.3 source package, but have started working since. The purpose of this Breaks is to smoothen upgrades and transitions in Debian unstable -> testing. For pam-mysql see details in Debian#918367 and for libdbd-mysql-perl see perl5-dbi/DBD-mysql#275 and Debian#917303.
If you encounter this extract from above:
Try |
Are these failures expected?
The text was updated successfully, but these errors were encountered: