Subject: Re: mysqld - innodb, pthread_mutex_unlock
To: Juan RP <juan@xtrarom.org>
From: rudolf <netbsd@eq.cz>
List: port-amd64
Date: 01/30/2006 13:04:05
Juan RP wrote:
> On Mon, 30 Jan 2006 03:47:18 +0100
> rudolf <netbsd@eq.cz> wrote:
> 
> 
>>Hi,
>>
>>I have some problems with mysqld 5.0.18 (pkgsrc-2005Q4 with current 
>>databases/mysql5-client and databases/mysql5-server) on an amd64 (one 
>>Xeon) machine. The daemon refuses to start if it's configured to run 
>>innodb engine and there are the innodb files present in mysql data 
>>directory (it starts correctly only when it initially creates the
>>innodb files, subsequent restart again fails). It is possible to
>>start it correctly with "--skip-innodb", but once I also got:
>>
>>mysqld: Error detected by libpthread: Invalid mutex.
>>Detected by file 
>>"/home/builds/ab/netbsd-3-0-RELEASE/src/lib/libpthread/pthread_mutex.c", 
>>line 334, function "pthread_mutex_unlock".
>>See pthread(3) for information.
>>
>>Do you have any idea what could be wrong? (u)limits are stretched to 
>>maximum for the process so this shouldn't be the problem. It's NetBSD 
>>3.0, amd64, 2G RAM, slightly modified GENERIC kernel.
> 
> 
> For unknown reasons mysql is trying to unlock an invalid mutex,
> the pthread library detects it and refuses to start.
> 
> As a workaround you can use the environment
> variable "PTHREAD_DIAGASSERT=AE" to ignore and do not log the errors
> to stdout (see pthread(3)).
> 
> Can you please tell me how to get this error? I'll try to fix mysql
> properly.
> 

Unfortunately I can't reproduce it. It happened only once, probably 
during database shutdown (if the log output is properly ordered). The 
full (from start to end) log context is:
060430 03:04:29  Starting mysqld daemon with databases from /var/mysql
060430 03:04:29  mysqld started
060130  3:04:29 [Note] /usr/pkg/libexec/mysqld: ready for connections.
Version: '5.0.18'  socket: '/var/run/mysql/mysql.sock'  port: 3306 
Source distribution
060130  3:04:43 [Note] /usr/pkg/libexec/mysqld: Normal shutdown

060130  3:04:44 [Note] /usr/pkg/libexec/mysqld: Shutdown complete

mysqld: Error detected by libpthread: Invalid mutex.
Detected by file 
"/home/builds/ab/netbsd-3-0-RELEASE/src/lib/libpthread/pthread_mutex.c", 
line 334, function "pthread_mutex_unlock".
See pthread(3) for information.
060430 03:04:44  STOPPING server from pid file /var/mysql/server.pid
060430 03:04:44  mysqld ended

This was without the innodb engine, otherwise the creation of the innodb 
files is in the log too. And with the innodb engine and files in the 
mysql data directory it doesn't start at all, as I already wrote. I'll 
keep trying to find out what's wrong with the innodb engine.

Regards,

r.