DBD-mysql icon indicating copy to clipboard operation
DBD-mysql copied to clipboard

Undefined values (SSL) due to incorrect setting/detection of HAVE_SSL_MODE

Open Tux opened this issue 7 years ago • 11 comments
trafficstars

.cpan/build/DBD-mysql-4.045 513 > make test
Running Mkbootstrap for mysql ()
chmod 644 "mysql.bs"
"/data/pro/bin/perl5.26.0" -MExtUtils::Command::MM -e 'cp_nonempty' -- mysql.bs blib/arch/auto/DBD/mysql/mysql.bs 644
cc -c  -I/pro/lib/perl5/site_perl/5.26.0/x86_64-linux-thread-multi-ld/auto/DBI -I/usr/include/mysql -I/usr/include/mysql/mariadb -DDBD_MYSQL_WITH_SSL -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2   -DVERSION=\"4.045\" -DXS_VERSION=\"4.045\" -fPIC "-I/pro/lib/perl5/5.26.0/x86_64-linux-thread-multi-ld/CORE"   dbdimp.c
dbdimp.c: In function ‘mysql_dr_connect’:
dbdimp.c:1987:22: error: ‘SSL_MODE_PREFERRED’ undeclared (first use in this function); did you mean ‘SO_PEERCRED’?
           ssl_mode = SSL_MODE_PREFERRED;
                      ^~~~~~~~~~~~~~~~~~
                      SO_PEERCRED
dbdimp.c:1987:22: note: each undeclared identifier is reported only once for each function it appears in
dbdimp.c:1989:19: error: ‘SSL_MODE_VERIFY_IDENTITY’ undeclared (first use in this function); did you mean ‘SSL_MODE_PREFERRED’?
        ssl_mode = SSL_MODE_VERIFY_IDENTITY;
                   ^~~~~~~~~~~~~~~~~~~~~~~~
                   SSL_MODE_PREFERRED
dbdimp.c:1991:19: error: ‘SSL_MODE_VERIFY_CA’ undeclared (first use in this function); did you mean ‘SSL_MODE_VERIFY_IDENTITY’?
        ssl_mode = SSL_MODE_VERIFY_CA;
                   ^~~~~~~~~~~~~~~~~~
                   SSL_MODE_VERIFY_IDENTITY
dbdimp.c:1993:19: error: ‘SSL_MODE_REQUIRED’ undeclared (first use in this function); did you mean ‘SSL_MODE_PREFERRED’?
        ssl_mode = SSL_MODE_REQUIRED;
                   ^~~~~~~~~~~~~~~~~
                   SSL_MODE_PREFERRED
dbdimp.c:1994:30: error: ‘MYSQL_OPT_SSL_MODE’ undeclared (first use in this function); did you mean ‘MYSQL_OPT_SSL_CRL’?
      if (mysql_options(sock, MYSQL_OPT_SSL_MODE, &ssl_mode) != 0) {
                              ^~~~~~~~~~~~~~~~~~
                              MYSQL_OPT_SSL_CRL
dbdimp.c:2072:30: error: ‘SSL_MODE_DISABLED’ undeclared (first use in this function); did you mean ‘SSL_MODE_REQUIRED’?
      unsigned int ssl_mode = SSL_MODE_DISABLED;
                              ^~~~~~~~~~~~~~~~~
                              SSL_MODE_REQUIRED
dbdimp.c: In function ‘mysql_describe’:
dbdimp.c:3971:22: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
       buffer->is_null= (my_bool*) &(fbh->is_null);
                      ^
dbdimp.c:3972:20: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
       buffer->error= (my_bool*) &(fbh->error);
                    ^
make: *** [Makefile:353: dbdimp.o] Error 1
$ rpm -qf /usr/include/mysql/mysql.h
libmariadb-devel-3.0.2-4.2.x86_64

Changing define to undef in dbdimp.h here:

#if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50711 && MYSQL_VERSION_ID != 60000
#undef HAVE_SSL_MODE
#endif

Made all build, so there is some mismatch there These tests still fail:

Test Summary Report
-------------------
t/15reconnect.t                       (Wstat: 139 Tests: 14 Failed: 0)
  Non-zero wait status: 139
  Parse errors: Bad plan.  You planned 16 tests but ran 14.
t/rt118977-zerofill.t                 (Wstat: 256 Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 1
Files=73, Tests=2156, 53 wallclock secs ( 0.70 usr  0.14 sys +  5.46 cusr  0.72 csys =  7.02 CPU)
Result: FAIL
Failed 2/73 test programs. 1/2156 subtests failed.

Tux avatar Feb 08 '18 09:02 Tux

$ rpm -ql libmariadb-devel | grep '\.h$' | xargs grep define.*VERSION
/usr/include/mysql/errmsg.h:#define CR_VERSION_ERROR    2007
/usr/include/mysql/mariadb_com.h:#define SERVER_VERSION_LENGTH 60
/usr/include/mysql/mariadb_version.h:#define PROTOCOL_VERSION           10
/usr/include/mysql/mariadb_version.h:#define MARIADB_CLIENT_VERSION_STR "10.2.6"
/usr/include/mysql/mariadb_version.h:#define MARIADB_VERSION_ID         100206
/usr/include/mysql/mariadb_version.h:#define MYSQL_VERSION_ID           100206
/usr/include/mysql/mariadb_version.h:#define MARIADB_PACKAGE_VERSION "3.0.2"
/usr/include/mysql/mysql/client_plugin.h:#define MYSQL_CLIENT_AUTHENTICATION_PLUGIN_INTERFACE_VERSION  0x0100
/usr/include/mysql/mysql/client_plugin.h:#define MARIADB_CLIENT_REMOTEIO_PLUGIN_INTERFACE_VERSION 0x0100
/usr/include/mysql/mysql/client_plugin.h:#define MARIADB_CLIENT_PVIO_PLUGIN_INTERFACE_VERSION 0x0100
/usr/include/mysql/mysql/client_plugin.h:#define MARIADB_CLIENT_TRACE_PLUGIN_INTERFACE_VERSION 0x0100
/usr/include/mysql/mysql/client_plugin.h:#define MARIADB_CLIENT_CONNECTION_PLUGIN_INTERFACE_VERSION 0x0100
/usr/include/mysql/mysql_version.h:#define PROTOCOL_VERSION             10
/usr/include/mysql/mysql_version.h:#define MARIADB_CLIENT_VERSION_STR   "10.2.6"
/usr/include/mysql/mysql_version.h:#define MARIADB_VERSION_ID           100206
/usr/include/mysql/mysql_version.h:#define MYSQL_VERSION_ID             100206
/usr/include/mysql/mysql_version.h:#define MARIADB_PACKAGE_VERSION "3.0.2"
/usr/include/mysql/mysqld_error.h:#define ER_SLAVE_CONVERSION_FAILED 1677
/usr/include/mysql/mysqld_error.h:#define ER_SLAVE_CANT_CREATE_CONVERSION 1678

or more to the point

$ rpm -ql libmariadb-devel | grep '\.h$' | xargs grep MARIADB_BASE_VERSION
Exit 123
$ rpm -ql libmariadb-devel | grep '\.h$' | xargs grep MYSQL_VERSION_ID
/usr/include/mysql/mariadb_version.h:#define MYSQL_VERSION_ID           100206
/usr/include/mysql/mysql_version.h:#define MYSQL_VERSION_ID             100206

Tux avatar Feb 09 '18 13:02 Tux

Inserting this

#ifdef  MARIADB_CLIENT_VERSION_STR
#ifndef MARIADB_BASE_VERSION
#define MARIADB_BASE_VERSION MARIADB_CLIENT_VERSION_STR
#endif
#endif

on line dbdimp.h#86 fixes the ifdef fail, but, as MARIADB_BASE_VERSION is now defined,

#if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709
        /* MariaDB 10 is not MySQL source level compatible so this
           only applies to MySQL*/

in mysql.xs#822 will cause havoc:

#     Error:  Can't load '/data/home/merijn/.cpan/build/DBD-mysql-4.046-0/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: /data/home/merijn/.cpan/build/DBD-mysql-4.046-0/blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: net_buffer_length at /pro/lib/perl5/5.26.0/x86_64-linux-thread-multi-ld/DynaLoader.pm line 193.
#  at t/00base.t line 15.

Tux avatar Feb 09 '18 13:02 Tux

And for the two warning cases, they silence with

      buffer->is_null= (char*) &(fbh->is_null);
      buffer->error= (char*) &(fbh->error);

Tux avatar Feb 09 '18 13:02 Tux

I am having a hard time reproducing this issue and get my own. I spun up the only instance I could seem to find on AWS (openSUSE-Leap-42.3-v20180116-hvm-ssd-x86_64-5535c495-72d4-4355-b169-54ffa874f849-ami-23614c59.4 (ami-c3ea58bb))

perl Makefile.PL --testuser=root --testpassword=new-password --mysql_config=/usr/bin/mariadb_config
/usr/bin/mariadb_config: unrecognized option '--embedded'
I will use the following settings for compiling and testing:

  cflags        (mysql_config ) = -I/usr/include -I/usr/include/mariadb -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -DNDEBUG -Wunused -Wno-uninitialized
  embedded      (guessed      ) = 
  ldflags       (guessed      ) = 
  libs          (mysql_config ) = -L/usr/lib64/mariadb -lmariadb -lssl -ldl -lm -lpthread
  mysql_config  (Users choice ) = /usr/bin/mariadb_config
  nocatchstderr (default      ) = 0
  nofoundrows   (default      ) = 0
  nossl         (default      ) = 0
  testdb        (default      ) = test
  testhost      (default      ) = 
  testpassword  (User's choice) = new-password
  testport      (default      ) = 
  testsocket    (default      ) = 
  testuser      (User's choice) = root

To change these settings, see 'perl Makefile.PL --help' and
'perldoc DBD::mysql::INSTALL'.

Checking if your kit is complete...
Looks good
Using DBI 1.628 (for perl 5.018002 on x86_64-linux-thread-multi) installed in /usr/lib/perl5/vendor_perl/5.18.2/x86_64-linux-thread-multi/auto/DBI/
Writing Makefile for DBD::mysql
Wide character in print at /usr/lib/perl5/5.18.2/ExtUtils/MakeMaker.pm line 1034.
Wide character in print at /usr/lib/perl5/5.18.2/ExtUtils/MakeMaker.pm line 1034.
Writing MYMETA.yml and MYMETA.json
ip-172-31-44-89:~/DBD-mysql # make
cp lib/Bundle/DBD/mysql.pm blib/lib/Bundle/DBD/mysql.pm
cp lib/DBD/mysql/GetInfo.pm blib/lib/DBD/mysql/GetInfo.pm
cp lib/DBD/mysql/INSTALL.pod blib/lib/DBD/mysql/INSTALL.pod
cp lib/DBD/mysql.pm blib/lib/DBD/mysql.pm
cc -c  -I/usr/lib/perl5/vendor_perl/5.18.2/x86_64-linux-thread-multi/auto/DBI -I/usr/include -I/usr/include/mariadb -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -DNDEBUG -Wunused -Wno-uninitialized -DDBD_MYSQL_WITH_SSL -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe   -DVERSION=\"4.046\" -DXS_VERSION=\"4.046\" -fPIC "-I/usr/lib/perl5/5.18.2/x86_64-linux-thread-multi/CORE"   dbdimp.c
dbdimp.c: In function ‘mysql_dr_connect’:
dbdimp.c:1940:19: warning: unused variable ‘ssl_mode’ [-Wunused-variable]
      unsigned int ssl_mode;
                   ^
/usr/bin/perl -p -e "s/~DRIVER~/mysql/g" /usr/lib/perl5/vendor_perl/5.18.2/x86_64-linux-thread-multi/auto/DBI/Driver.xst > mysql.xsi
/usr/bin/perl /usr/lib/perl5/5.18.2/ExtUtils/xsubpp  -typemap /usr/lib/perl5/5.18.2/ExtUtils/typemap  mysql.xs > mysql.xsc && mv mysql.xsc mysql.c
Warning: duplicate function definition 'do' detected in mysql.xs, line 249
Warning: duplicate function definition 'rows' detected in mysql.xs, line 670
cc -c  -I/usr/lib/perl5/vendor_perl/5.18.2/x86_64-linux-thread-multi/auto/DBI -I/usr/include -I/usr/include/mariadb -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -DNDEBUG -Wunused -Wno-uninitialized -DDBD_MYSQL_WITH_SSL -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe   -DVERSION=\"4.046\" -DXS_VERSION=\"4.046\" -fPIC "-I/usr/lib/perl5/5.18.2/x86_64-linux-thread-multi/CORE"   mysql.c
mysql.c: In function ‘XS_DBD__mysql__db__login’:
mysql.c:288:7: warning: variable ‘attribs’ set but not used [-Wunused-but-set-variable]
  SV * attribs;
       ^
Running Mkbootstrap for DBD::mysql ()
chmod 644 mysql.bs
rm -f blib/arch/auto/DBD/mysql/mysql.so
LD_RUN_PATH="/usr/lib64:/lib64" cc  -shared -L/usr/local/lib64 -fstack-protector dbdimp.o mysql.o  -o blib/arch/auto/DBD/mysql/mysql.so 	\
   -L/usr/lib64/mariadb -lmariadb -lssl -ldl -lm -lpthread  	\
  
chmod 755 blib/arch/auto/DBD/mysql/mysql.so
cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs
chmod 644 blib/arch/auto/DBD/mysql/mysql.bs
Manifying blib/man3/Bundle::DBD::mysql.3pm
Manifying blib/man3/DBD::mysql.3pm
Manifying blib/man3/DBD::mysql::INSTALL.3pm

ip-172-31-44-89:~/DBD-mysql # make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00base.t .............................. 1/6 # Driver version is 4.046
t/00base.t .............................. ok   
t/05dbcreate.t .......................... 1/2 # Database 'test' accessible
t/05dbcreate.t .......................... ok   
t/10connect.t ........................... 1/? # mysql_clientinfo is: 5.5.1
# mysql_clientversion is: 50501
# mysql_serverversion is: 100033
# mysql_hostinfo is: Localhost via UNIX socket
# mysql_serverinfo is: 10.0.33-MariaDB
# mysql_stat is: Uptime: 573  Threads: 1  Questions: 13  Slow queries: 0  Opens: 0  Flush tables: 1  Open tables: 63  Queries per second avg: 0.022
# mysql_protoinfo is: 10
# SQL_DBMS_VER is 10.0.33-MariaDB
# Default storage engine is: InnoDB
t/10connect.t ........................... ok    
t/15reconnect.t ......................... ok     
t/16dbi-get_info.t ...................... ok   
t/20createdrop.t ........................ ok   
t/25lockunlock.t ........................ ok     
t/29warnings.t .......................... ok     
t/30insertfetch.t ....................... ok    
t/31insertid.t .......................... ok     
t/32insert_error.t ...................... ok   
t/35limit.t ............................. ok       
t/35prepare.t ........................... ok     
t/40bindparam.t ......................... ok     
t/40bindparam2.t ........................ ok     
t/40bit.t ............................... ok     
t/40blobs.t ............................. ok     
t/40catalog.t ........................... ok     
t/40keyinfo.t ........................... ok   
t/40listfields.t ........................ ok     
t/40nulls.t ............................. ok     
t/40nulls_prepare.t ..................... ok    
t/40numrows.t ........................... ok     
t/40server_prepare.t .................... ok     
t/40server_prepare_crash.t .............. 1/39 DBD::mysql::st execute failed: MySQL server has gone away at t/40server_prepare_crash.t line 32.
DBD::mysql::st execute failed: MySQL server has gone away at t/40server_prepare_crash.t line 32.
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle test at t/40server_prepare_crash.t line 32.
# Looks like you planned 39 tests but ran 12.
# Looks like your test exited with 11 just after 12.
t/40server_prepare_crash.t .............. Dubious, test returned 11 (wstat 2816, 0xb00)
Failed 27/39 subtests 
t/40server_prepare_error.t .............. ok   
t/40types.t ............................. ok     
t/41bindparam.t ......................... ok     
t/41blobs_prepare.t ..................... ok     
t/41int_min_max.t ....................... ok       
t/42bindparam.t ......................... ok     
t/43count_params.t ...................... ok     
t/50chopblanks.t ........................ ok     
t/50commit.t ............................ ok     
t/51bind_type_guessing.t ................ ok     
t/52comment.t ........................... ok     
t/53comment.t ........................... ok    
t/55utf8.t .............................. ok     
t/55utf8mb4.t ........................... ok   
t/56connattr.t .......................... skipped: performance schema not enabled
t/60leaks.t ............................. skipped: Skip $ENV{EXTENDED_TESTING} is not set
t/65segfault.t .......................... ok   
t/65types.t ............................. ok     
t/70takeimp.t ........................... ok     
t/71impdata.t ........................... ok     
t/75supported_sql.t ..................... ok     
t/76multi_statement.t ................... ok     
t/80procs.t ............................. ok     
t/81procs.t ............................. ok     
t/85init_command.t ...................... ok   
t/86_bug_36972.t ........................ ok     
t/87async.t ............................. Can't locate Test/Deep.pm in @INC (you may need to install the Test::Deep module) (@INC contains: /root/DBD-mysql/blib/lib /root/DBD-mysql/blib/arch /usr/lib/perl5/site_perl/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.18.2 /usr/lib/perl5/vendor_perl/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.18.2 /usr/lib/perl5/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/5.18.2 /usr/lib/perl5/site_perl .) at t/87async.t line 4.
BEGIN failed--compilation aborted at t/87async.t line 4.
t/87async.t ............................. Dubious, test returned 2 (wstat 512, 0x200)
No subtests run 
t/88async-multi-stmts.t ................. ok   
t/89async-method-check.t ................ ok       
t/90no-async.t .......................... skipped: Async support was built into this version of DBD::mysql
t/91errcheck.t .......................... ok   
t/92ssl_backronym_vulnerability.t ....... ok   
t/92ssl_optional.t ...................... ok   
t/92ssl_riddle_vulnerability.t .......... ok   
t/99_bug_server_prepare_blob_null.t ..... ok     
t/manifest.t ............................ skipped: these tests are for release testing
t/pod.t ................................. skipped: Test::Pod 1.00 required for testing POD
t/rt118977-zerofill.t ................... 1/8 
#   Failed test at t/rt118977-zerofill.t line 22.
#          got: '1'
#     expected: '00001'
# Looks like you failed 1 test of 8.
t/rt118977-zerofill.t ................... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/8 subtests 
t/rt25389-bin-case.t .................... ok   
t/rt50304-column_info_parentheses.t ..... ok   
t/rt61849-bind-param-buffer-overflow.t .. ok   
t/rt75353-innodb-lock-timeout.t ......... ok   
t/rt83494-quotes-comments.t ............. ok   
t/rt85919-fetch-lost-connection.t ....... ok   
t/rt86153-reconnect-fail-memory.t ....... skipped: $ENV{EXTENDED_TESTING} is not set
t/rt88006-bit-prepare.t ................. ok    
t/rt91715.t ............................. ok   
t/version.t ............................. ok   

Test Summary Report
-------------------
t/40server_prepare_crash.t            (Wstat: 2816 Tests: 12 Failed: 0)
  Non-zero exit status: 11
  Parse errors: Bad plan.  You planned 39 tests but ran 12.
t/87async.t                           (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/rt118977-zerofill.t                 (Wstat: 256 Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 1
Files=73, Tests=2035, 23 wallclock secs ( 0.32 usr  0.08 sys +  2.65 cusr  0.36 csys =  3.41 CPU)
Result: FAIL
Failed 3/73 test programs. 1/2035 subtests failed.
Makefile:1145: recipe for target 'test_dynamic' failed
make: *** [test_dynamic] Error 255
ip-172-31-44-89:~/DBD-mysql # rpm -ql libmariadb-devel | grep '\.h$' | xargs grep MARIADB_BASE_VERSION
ip-172-31-44-89:~/DBD-mysql # rpm -ql libmariadb-devel | grep '\.h$' | xargs grep MYSQL_VERSION_ID/usr/include/mariadb/mysql_version.h:#define MYSQL_VERSION_ID		50501
ip-172-31-44-89:~/DBD-mysql # 
ip-172-31-44-89:~/DBD-mysql # uname -a
Linux ip-172-31-44-89 4.4.104-39-default #1 SMP Thu Jan 4 08:11:03 UTC 2018 (7db1912) x86_64 x86_64 x86_64 GNU/Linux

CaptTofu avatar Feb 10 '18 17:02 CaptTofu

MARIADB_BASE_VERSION was added in MariaDB 10.2.9. If you want to support versions < 10.2.9 perl should check if MARIADB_VERSION_ID is defined.

commit ba8310e82dac659482f04cd2e270e666da072f95
Author: Sergei Golubchik <[email protected]>
Date:   Fri Sep 15 01:06:05 2017 +0200

    define MARIADB_BASE_VERSION in mariadb_version.h
    
    this is the only define that could've been used
    to distinguish MariaDB from MySQL, so third-party
    clients use it for this purpose.

9EOR9 avatar Feb 10 '18 22:02 9EOR9

With this still applied to enable compilation:

#ifdef  MARIADB_CLIENT_VERSION_STR
#ifndef MARIADB_BASE_VERSION
#define MARIADB_BASE_VERSION MARIADB_CLIENT_VERSION_STR
#endif
#endif

Make passes on c41f1c097300cc0b3cb3970b1a270884c7c7795b but make test fails with

"/pro/bin/perl5.26.0" -MExtUtils::Command::MM -e 'cp_nonempty' -- mysql.bs blib/arch/auto/DBD/mysql/mysql.bs 644
PERL_DL_NONLAZY=1 "/pro/bin/perl5.26.0" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00base.t .............................. 1/6
#   Failed test 'use DBD::mysql;'
#   at t/00base.t line 15.
#     Tried to use 'DBD::mysql'.
#     Error:  Can't load '/pro/3gl/CPAN/DBD-mysql-git/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: /pro/3gl/CPAN/DBD-mysql-git/blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: net_buffer_length at /pro/lib/perl5/5.26.0/x86_64-linux-thread-multi-ld/DynaLoader.pm line 193.
#  at t/00base.t line 15.
# Compilation failed in require at t/00base.t line 15.
# BEGIN failed--compilation aborted at t/00base.t line 15.
Bailout called.  Further testing stopped:  Unable to load DBD::mysql
FAILED--Further testing stopped: Unable to load DBD::mysql
Makefile:1214: recipe for target 'test_dynamic' failed

Tux avatar Feb 23 '18 08:02 Tux

I fixed the net_buffer_length issue in https://github.com/perl5-dbi/DBD-mysql/commit/0f0cebe87fab335873fd3701bc304922da826940 which is now in master.

mbeijen avatar Feb 24 '18 19:02 mbeijen

Yes, you did! 👍 current result with my SSL defines still in place:

Test Summary Report
-------------------
t/15reconnect.t                       (Wstat: 139 Tests: 14 Failed: 0)
  Non-zero wait status: 139
  Parse errors: Bad plan.  You planned 16 tests but ran 14.
t/rt118977-zerofill.t                 (Wstat: 256 Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 1
Files=74, Tests=2292, 92 wallclock secs ( 0.51 usr  0.08 sys +  6.80 cusr  0.72 csys =  8.11 CPU)
Result: FAIL
Failed 2/74 test programs. 1/2292 subtests failed.

Tux avatar Feb 25 '18 10:02 Tux

Hello,

Has this issue been fixed ?

I am still having trouble to install DBD-mysql...

Thanks

Z-Zen avatar Jan 25 '19 16:01 Z-Zen

Could you supply some details like OS, Perl, MySQL and GCC versions? What error do you get?

On 25 January 2019 17:49:08 Alaa Badreddine [email protected] wrote:

Hello, Has this issue been fixed ? I am still having trouble to install DBD-mysql... Thanks — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

dveeden avatar Jan 26 '19 06:01 dveeden

Hello,

I am running Linux 4.9.0-7-amd64 #1 SMP Debian 4.9.110-3+deb9u2. My perl version is v5.24.1. As for MySQL, Ver 15.1 Distrib 10.1.37-MariaDB. And my GCC version (Debian 6.3.0-18+deb9u1) 6.3.0 20170516.

The error I am getting occurs during the installation of DBD-mysql through cpanm.

Particularly, the following test:

t/40server_prepare_crash.t .............. 1/39 DBD::mysql::st execute failed: MySQL server has gone away at t/40server_prepare_crash.t line 26.
DBD::mysql::st execute failed: MySQL server has gone away at t/40server_prepare_crash.t line 26.
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle test at t/40server_prepare_crash.t line 26.
# Looks like your test exited with 11 just after 7.
t/40server_prepare_crash.t .............. Dubious, test returned 11 (wstat 2816, 0xb00)
Failed 32/39 subtests

The second one is the following:

t/rt118977-zerofill.t ................... 1/8
#   Failed test at t/rt118977-zerofill.t line 22.
#          got: '1'
#     expected: '00001'
# Looks like you failed 1 test of 8.
t/rt118977-zerofill.t ................... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/8 subtests

And the test summary reports:

Test Summary Report
-------------------
t/40server_prepare_crash.t            (Wstat: 2816 Tests: 7 Failed: 0)
  Non-zero exit status: 11
  Parse errors: Bad plan.  You planned 39 tests but ran 7.
t/rt118977-zerofill.t                 (Wstat: 256 Tests: 8 Failed: 1)
  Failed test:  8
  Non-zero exit status: 1
Files=73, Tests=2285, 93 wallclock secs ( 0.51 usr  0.13 sys + 11.60 cusr  0.97 csys = 13.21 CPU)
Result: FAIL
Failed 2/73 test programs. 1/2285 subtests failed.
Makefile:1189 : la recette pour la cible « test_dynamic » a échouée
make: *** [test_dynamic] Erreur 255
  DVEEDEN/DBD-mysql-4.050.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports DVEEDEN/DBD-mysql-4.050.tar.gz

Could you help me figure out what's happening and why its not able to connect to mysql with the test ?

Thanks !

Z-Zen avatar Jan 28 '19 09:01 Z-Zen

The SSL/TLS code has been cleaned and is now much simpler, which should also fix this issue.

dveeden avatar Aug 23 '23 15:08 dveeden