DBI errors for Authentication protocol and old_password segfaults

"Musolino, Peter" <[email protected]> Thu, 27 Mar 2008 14:08:16 -0000
Newsgroups gmane.comp.db.mysql.perl
Message-ID <[email protected]>
Hi,
I have been working on a problem relating to Request Tracker.  I have been scouring the web for answers to questions, but instead of answers, I just get new questions.
A bit about the environment, the modules, and the app:

RHEL 4.0 Update 6
Apache 2.0.52-38
MySQL-client-standard 5.0.24a-0
MySQL-devel-standard-5.0.24a-0
MySQL-server-standard-5.0.24a-0
MySQL-shared-compat-5.0.24a-0
mod_perl 2.0.1
DBD::mysql 4.006
DBI 1.604
RT 3.6.6
DBIx::SearchBuilder-1.51

We were first getting the following error in the apache error logs:

DBI connect('dbname=rt3;host=localhost','rt',...) failed: Client does not support authentication protocol requested by server; consider upgrading MySQL client at /usr/lib/perl5/site_perl/5.8.5/DBIx/SearchBuilder/Handle.pm line 106
[Wed Mar 26 09:47:11 2008] [error] [client 10.20.1.102] Connect Failed Client does not support authentication protocol requested by server; consider upgrading MySQL client\n at /opt/rt3/lib/RT.pm line 220\n

I checked and there would be no reason that the DBD::mysql would not be using anything but the latest mysql client libraries, so I am not sure why it is still trying to use the older protocol and choking on the new long password scheme.  So I took the second of the more suggested routes and changed the password of that user with the old_password method.  Instead of that error, I started to get segfaults.

[Tue Mar 25 12:26:40 2008] [notice] child pid 25271 exit signal Segmentation fault (11)

There were no errors in the mysql err logs nor the system logs.

I decided to do an strace against the running apache process and saw the following:

connect(1, {sa_family=AF_FILE, path="/var/lib/mysql/mysql.sock"}, 110) = 0
setsockopt(1, SOL_IP, IP_TOS, [8], 4)   = -1 EOPNOTSUPP (Operation not supported)
setsockopt(1, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
read(1, ">\0\0\0", 4)                   = 4
read(1, "\n5.0.24a-standard\0\304\224\0\0-gCVdwJK\0,"..., 62) = 62
open("/usr/share/mysql/charsets/Index", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
write(1, "\24\0\0\1\217 \0\0\0rt\0P[XJIQKK\0rt3", 24) = 24
read(1, "\5\0\0\2", 4)                  = 4
read(1, "\0\0\0\2\0", 5)                = 5
fcntl64(1, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
read(1, 0xc0977b8, 8192)                = -1 EAGAIN (Resource temporarily unavailable)
fcntl64(1, F_SETFL, O_RDWR)             = 0
write(1, "\21\0\0\0\3set autocommit=1", 21) = 21
read(1, "\5\0\0\1", 4)                  = 4
read(1, "\0\0\0\2\0", 5)                = 5
time(NULL)                              = 1206447319
time(NULL)                              = 1206447319
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
chdir("/etc/httpd")                     = 0
rt_sigaction(SIGSEGV, {SIG_DFL}, {SIG_DFL}, 8) = 0
kill(5043, SIGSEGV)                     = 0
sigreturn()                             = ? (mask now [])
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 5043 detached

The Index error is for missing files which can be found in mysql 3.0.  I copied the Index files and relevant .conf files into the charsets directory and the Index error and replaced with 

open("/usr/share/mysql/charsets/Index", O_RDONLY|O_LARGEFILE) = 36
fstat64(36, {st_mode=S_IFREG|0755, st_size=549, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e63000
read(36, "# sql/share/charsets/Index\n#\n# T"..., 4096) = 549
read(36, "", 4096)                      = 0
close(36)                               = 0
munmap(0xb7e63000, 4096)                = 0

However the segfault still remains.

I also ran an strace against mysql and got a similar error.

fcntl64(12, F_SETFL, O_RDWR|O_NONBLOCK) = 0
accept(12, {sa_family=AF_FILE, path="��
 n"}, [2]) = 18
fcntl64(12, F_SETFL, O_RDWR)            = 0
getsockname(18, {sa_family=AF_FILE, path="/var/lib/mysql"}, [28]) = 0
fcntl64(18, F_SETFL, O_RDONLY)          = 0
fcntl64(18, F_GETFL)                    = 0x2 (flags O_RDWR)
fcntl64(18, F_SETFL, O_RDWR|O_NONBLOCK) = 0
setsockopt(18, SOL_IP, IP_TOS, [8], 4)  = -1 EOPNOTSUPP (Operation not supported)
time(NULL)                              = 1206613476
clone(child_stack=0xb16b24c4, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID|CLONE_DETACHED, parent_tidptr=0xb16b2be8, {entry_number:6, base_addr:0xb16b2ba0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0xb16b2be8) = 13994
select(13, [10 12], NULL, NULL, NULL <unfinished ...>

I am fresh out of ideas.  Can anyone assist?  I have posted to the RT list have not yet received any response and given roots in mysql and DBI, I thought this would be appropriate

Thanks in advance,

Peter Musolino
D.B. Zwirn (UK) Ltd.
peter.musolino a t dbzco.com





This e-mail message is intended only for the named recipient(s) above.  It may contain confidential information.  If you are not the intended recipient, you are hereby noti
fied that any use, dissemination, distribution or copying of this e-mail and any attachment(s) is strictly prohibited.  D.B. Zwirn & Co., L.P. reserves the right to archive
 and monitor all e-mail communications through its networks.  If you have received this e-mail in error, please immediately notify the sender by replying to this e-mail and
 delete the message and any attachment(s) from your system.  Thank you.