Re: mysterious "can"t connect" error message in our logs(2)
am 25.03.2004 05:38:30 von Sasha PachevJigal van Hemert wrote:
> The continuing saga:
>
>
>> Can't connect to MySQL server on '192.168.13.205' (4)
>
> Our sysadmin has been searching in the sources of the MySQL client and came
> up with this:
>
> The errormessage (4) is probably (only place where this error could be
> found) raised by this fragment in libmysql.c:
>
> if ((sock = (my_socket) socket(AF_INET,SOCK_STREAM,0)) == SOCKET_ERROR)
> {
> net->last_errno=CR_IPSOCK_ERROR;
> sprintf(net->last_error,ER(net->last_errno),socket_errno);
> goto error;
> }
>
> According to:
> http://www-users.cs.umn.edu/~bentlema/unix/syscalls_and_ipc. html
> this is what happens:
>
> 1) The MySQL client tries to create a new socket.
> 2) At that moment the thread is interupted by a signal. Control is passed to
> the signal handler.
> 3) After the signal handler has done his work, control goes back to the
> original thread. The socket() function notices that it was interupted and
> returns the error-code.
>
> If you look at the sample code in section 8.1 of the url above
>
> for (;;) {
> rmask = mask;
> nfound = select(FD_SETSIZE, &rmask, (fd_set *)0, (fd_set *)0,
> &timeout);
> if (nfound < 0) {
> if (errno == EINTR) {
> printf("interrupted system call\n");
> continue;
> }
> /* something is very wrong! */
> perror("select");
> exit(1);
> }
> (...)
>
> The client should try again if the EINTR error was returned.
>
> Did we do something wrong in the configuration of the server or is this a
> tiny bug?
>
> Regards, Jigal.
It's a bug. I would recommend to patch libmysql.c for now until MySQL developers
fix it.
--
Sasha Pachev
Create online surveys at http://www.surveyz.com/
--
MySQL Bugs Mailing List
For list archives: http://lists.mysql.com/bugs
To unsubscribe: http://lists.mysql.com/bugs?unsub=gcdmb-bugs@m.gmane.org