[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

good news; bad news

The good news is that the patch in itself worked and allowed the build.
The bad news is that the tests failed.

Using suites: main,sys_vars,binlog,federated,rpl,innodb,perfschema
Collecting tests...
 - adding combinations for binlog
 - adding combinations for rpl
vardir: /home/periapt/mysql-5.5-5.5.20/builddir/mysql-test/var
Removing old var directory...
Creating var directory
mysql-test-run: *** ERROR: Socket path '/tmp/wXM23NFbaV' too long, it
would be  truncated and thus not possible to use for connection to
MySQL Server. Set a shorter with --tmpdir=<path> option
make[4]: *** [mysql-test/CMakeFiles/test-force] Error 1
make[4]: Leaving directory `/home/periapt/mysql-5.5-5.5.20/builddir'
make[3]: *** [mysql-test/CMakeFiles/test-force.dir/all] Error 2
make[3]: Leaving directory `/home/periapt/mysql-5.5-5.5.20/builddir'
make[2]: *** [mysql-test/CMakeFiles/test-force.dir/rule] Error 2
make[2]: Leaving directory `/home/periapt/mysql-5.5-5.5.20/builddir'
make[1]: *** [test-force] Error 2
make[1]: Leaving directory `/home/periapt/mysql-5.5-5.5.20/builddir'
touch testsuite-stamp

The finction that has come to this conclusion is

sub check_socket_path_length {
  my ($path)= @_;

  return 0 if IS_WINDOWS;
  # This may not be true, but we can't test for it on AIX due to Perl bug
  # See Bug #45771
  return 0 if ($^O eq 'aix');

  require IO::Socket::UNIX;

  my $truncated= undef;

  # Create a tempfile name with same length as "path"
  my $tmpdir = tempdir( CLEANUP => 0);
  my $len = length($path) - length($tmpdir) - 1;
  my $testfile = $tmpdir . "/" . "x" x ($len  > 0 ? $len : 1);
  my $sock;
  eval {
    $sock= new IO::Socket::UNIX
       Local => $testfile,
       Listen => 1,
    $truncated= 1; # Be negatvie

    die "Could not create UNIX domain socket: $!"
      unless defined $sock;

    die "UNIX domain socket path was truncated"
      unless ($testfile eq $sock->hostpath());

    $truncated= 0; # Yes, it worked!


  die "Unexpected failure when checking socket path length: $@"
    if $@ and not defined $truncated;

  $sock= undef;  # Close socket
  rmtree($tmpdir); # Remove the tempdir and any socket file created
  return $truncated;

The crucial error is from inside the eval:
Bad arg length for Socket::unpack_sockaddr_un, length is 3, should be
110 at /usr/lib/perl/5.14/Socket.pm line 278.

This can be reduced down to the attached a.pl if you run it on

use lib qw(/home/periapt/mysql-5.5-5.5.20/builddir/mysql-test/lib);
use My::Platform;

my $path = '/tmp/wXM23NFbaV';
my $truncated = check_socket_path_length($path);
print $truncated ? "BAD\n" : "GOOD\n";

Reply to: