Hi Tim, all!

Sorry, but I have to start with a negative remark:
Why, oh why, don't you mention the version number you are using?

I hope it is some roughly current 5.1, but I'd rather like you to tell it.


Tim Gustafson wrote:
> I have three mySQL server, all of which are SSL-enable and all of which are 
> generally accessible from remote clients over SSL.
> 
> However, one of my FreeBSD mySQL clients is having problems connecting to any 
> of the servers.  Running mySQL under truss reports the following:
> 

Looking at this output tells something went terribly wrong:
file descriptor 2 is mishandled.

> ----------
> clock_gettime(13,{1298593067.000000000 })      = 0 (0x0)
> open("/dev/urandom",O_RDONLY,00)               = 4 (0x4)
> read(4,"\a\^V\M-)\^C\M-L{`\M^O\M^@\M-v"...,32)         = 32 (0x20)
> sendto(2,"\^V\^C\^A\0Y\^A\0\0U\^C\^A\M-m"...,94,0x0,NULL,0x0) = 94 (0x5e)
> recvfrom(2,"\^V",1,0x2,NULL,0x0)               = 1 (0x1)
> ioctl(2,FIONREAD,0xffffd784)                   = 0 (0x0)
> recvfrom(2,"\^V\^C\^A\0J\^B\0\0F\^C\^AMf\M-u"...,1819,0x0,NULL,0x0) = 1819 
> (0x71b)

In the above lines, socket calls 'sendto()' and 'recvfrom()' are applied
to FD 2. Whatever the transmitted data may be, this should not be done:
FD 2 is "standard error", so it is a file and no socket, and "receiving"
from it doesn't make any sense at all.

As the problem happens only for one of your combinations, I suspect that
 for some unknown reason FD 2 was closed in that run, and then this
number got returned when a socket was to be created.
Again, this should not happen: The only reason to close FD 2 should be
to re-open standard error to some other destination, which is unlikely
for the client to do.

> [[...]]
> shutdown(2,SHUT_RDWR)                          = 0 (0x0)
> close(2)                                       = 0 (0x0)

So FD 2 is closed now.

> fstat(1,{ mode=crw--w---- ,inode=113,size=0,blksize=4096 }) = 0 (0x0)
> ioctl(1,TIOCGETA,0xffffe390)                   = 0 (0x0)
> write(2,"ERROR 2026 (HY000): ",20)             ERR#9 'Bad file descriptor'
> write(2,"SSL connection error",20)             ERR#9 'Bad file descriptor'
> write(2,"\n",1)                                        ERR#9 'Bad file 
> descriptor'

... but with a closed FD 2 there is no chance to output an error message.
(The operations on FD 1 also look suspicious to me.)

> write(1,"\a",1)                                        = 1 (0x1)
> close(4)                                       = 0 (0x0)
> process exit, rval = 1
> ----------
> 
> Can anyone tell me, based on the truss output above, what might be going 
> wrong?  I'm using the exact same command line options and ssl-ca file that I 
> am using on other clients, which can connect successfully.

I can't really tell what happened. It might be that file descriptor 2
(and probably also 1) were closed without good reason, and then creating
a socket (or opening some file) returned these descriptors.

You might check the preceding "truss" output for a "close(2)", IMO that
would likely be an error - but I have no idea why it happened.

> 
> (As an aside: feature request: better SSL connection debugging, please!)

I assume your SSL problems might just be a consequence of inappropriate
actions on FDs 1 and 2. Did you do any redirection, are you running into
"disk full", or is there any similar rsk on your stdout and stderr?


HTH,
Jörg

-- 
Joerg Bruehe,  MySQL Build Team,  joerg.bru...@oracle.com
ORACLE Deutschland B.V. & Co. KG,   Komturstrasse 18a,   D-12099 Berlin
Geschaeftsfuehrer: Juergen Kunz, Marcel v.d. Molen, Alexander v.d. Ven
Amtsgericht Muenchen: HRA 95603


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to