mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Removed MARIA_BASE min_row_length (duplicate of min_block_length)
Cleanup of recent code changes in dbug and my_thr_init Added name for each safe_mutex (for better DBUG and error reporting) Fixed that sort_info.max_records is calculated correctly. This fixed a bug in maria_chk Removed duplicate printing of mutex address in dbug log dbug/dbug.c: Cleanup of recent code changes include/my_pthread.h: Added name for each safe_mutex (for better DBUG and error reporting) mysys/my_thr_init.c: Cleanup of recent code changes mysys/thr_mutex.c: Added name for each safe_mutex (for better DBUG and error reporting) mysys/wqueue.c: Removed some mutex printing (as it's done now when we take mutex) storage/maria/Makefile.am: Fixed that 'make tags' works with xemacs storage/maria/ma_blockrec.c: base.min_row_length -> base.min_block_length (As they where basicly the same variable) storage/maria/ma_check.c: Moved more common stuff to initialize_variables_for_repair Fixed that sort_info.max_records is calculated correctly. This fixed a bug in maria_chk storage/maria/ma_create.c: More comments Fixed that min_pack_length is calculated more correctly Removed duplicate variable base.min_row_length storage/maria/ma_loghandler.c: Removed duplicate printing of mutex address storage/maria/ma_open.c: Removed base.min_row_length storage/maria/ma_packrec.c: Removed not anymore needed code (One should not change any .base variables as this will affect repair with unpack) storage/maria/maria_def.h: Removed base.min_row_length
This commit is contained in:
@ -54,7 +54,7 @@ void safe_mutex_global_init(void)
|
||||
int safe_mutex_init(safe_mutex_t *mp,
|
||||
const pthread_mutexattr_t *attr __attribute__((unused)),
|
||||
const char *file,
|
||||
uint line)
|
||||
uint line, const char *name)
|
||||
{
|
||||
bzero((char*) mp,sizeof(*mp));
|
||||
pthread_mutex_init(&mp->global,MY_MUTEX_INIT_ERRCHK);
|
||||
@ -62,6 +62,8 @@ int safe_mutex_init(safe_mutex_t *mp,
|
||||
/* Mark that mutex is initialized */
|
||||
mp->file= file;
|
||||
mp->line= line;
|
||||
/* Skip the very common '&' prefix from the autogenerated name */
|
||||
mp->name= name[0] == '&' ? name + 1 : name;
|
||||
|
||||
#ifdef SAFE_MUTEX_DETECT_DESTROY
|
||||
/*
|
||||
@ -94,10 +96,8 @@ int safe_mutex_init(safe_mutex_t *mp,
|
||||
int safe_mutex_lock(safe_mutex_t *mp,const char *file, uint line)
|
||||
{
|
||||
int error;
|
||||
#ifndef DBUG_OFF
|
||||
if (my_thread_var_get_dbug((my_bool*) 0))
|
||||
DBUG_PRINT("mutex", ("0x%lx locking", (ulong) mp));
|
||||
#endif
|
||||
DBUG_PRINT("mutex", ("%s (0x%lx) locking", mp->name ? mp->name : "Null",
|
||||
(ulong) mp));
|
||||
if (!mp->file)
|
||||
{
|
||||
fprintf(stderr,
|
||||
@ -110,8 +110,8 @@ int safe_mutex_lock(safe_mutex_t *mp,const char *file, uint line)
|
||||
pthread_mutex_lock(&mp->global);
|
||||
if (mp->count > 0 && pthread_equal(pthread_self(),mp->thread))
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Trying to lock mutex at %s, line %d, when the mutex was already locked at %s, line %d in thread %s\n",
|
||||
file,line,mp->file, mp->line, my_thread_name());
|
||||
fprintf(stderr,"safe_mutex: Trying to lock mutex %s at %s, line %d, when the mutex was already locked at %s, line %d in thread %s\n",
|
||||
mp->name, file,line,mp->file, mp->line, my_thread_name());
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -119,26 +119,23 @@ int safe_mutex_lock(safe_mutex_t *mp,const char *file, uint line)
|
||||
error=pthread_mutex_lock(&mp->mutex);
|
||||
if (error || (error=pthread_mutex_lock(&mp->global)))
|
||||
{
|
||||
fprintf(stderr,"Got error %d when trying to lock mutex at %s, line %d\n",
|
||||
error, file, line);
|
||||
fprintf(stderr,"Got error %d when trying to lock mutex %s at %s, line %d\n",
|
||||
error, mp->name, file, line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
mp->thread= pthread_self();
|
||||
if (mp->count++)
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Error in thread libray: Got mutex at %s, \
|
||||
line %d more than 1 time\n", file,line);
|
||||
fprintf(stderr,"safe_mutex: Error in thread libray: Got mutex %s at %s, "
|
||||
"line %d more than 1 time\n", mp->name, file,line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
mp->file= file;
|
||||
mp->line=line;
|
||||
mp->line= line;
|
||||
pthread_mutex_unlock(&mp->global);
|
||||
#ifndef DBUG_OFF
|
||||
if (my_thread_var_get_dbug((my_bool*) 0))
|
||||
DBUG_PRINT("mutex", ("0x%lx locked", (ulong) mp));
|
||||
#endif
|
||||
DBUG_PRINT("mutex", ("%s (0x%lx) locked", mp->name, (ulong) mp));
|
||||
return error;
|
||||
}
|
||||
|
||||
@ -146,22 +143,22 @@ line %d more than 1 time\n", file,line);
|
||||
int safe_mutex_unlock(safe_mutex_t *mp,const char *file, uint line)
|
||||
{
|
||||
int error;
|
||||
#ifndef DBUG_OFF
|
||||
if (my_thread_var_get_dbug((my_bool*) 0))
|
||||
DBUG_PRINT("mutex", ("0x%lx unlocking", (ulong) mp));
|
||||
#endif
|
||||
DBUG_PRINT("mutex", ("%s (0x%lx) unlocking", mp->name, (ulong) mp));
|
||||
pthread_mutex_lock(&mp->global);
|
||||
if (mp->count == 0)
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Trying to unlock mutex that wasn't locked at %s, line %d\n Last used at %s, line: %d\n",
|
||||
file,line,mp->file ? mp->file : "",mp->line);
|
||||
fprintf(stderr,"safe_mutex: Trying to unlock mutex %s that wasn't locked at %s, line %d\n"
|
||||
"Last used at %s, line: %d\n",
|
||||
mp->name ? mp->name : "Null", file, line,
|
||||
mp->file ? mp->file : "Null", mp->line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
if (!pthread_equal(pthread_self(),mp->thread))
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Trying to unlock mutex at %s, line %d that was locked by another thread at: %s, line: %d\n",
|
||||
file,line,mp->file,mp->line);
|
||||
fprintf(stderr,"safe_mutex: Trying to unlock mutex %s at %s, line %d that was locked by "
|
||||
"another thread at: %s, line: %d\n",
|
||||
mp->name, file, line, mp->file, mp->line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -174,7 +171,8 @@ int safe_mutex_unlock(safe_mutex_t *mp,const char *file, uint line)
|
||||
error=pthread_mutex_unlock(&mp->mutex);
|
||||
if (error)
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Got error: %d (%d) when trying to unlock mutex at %s, line %d\n", error, errno, file, line);
|
||||
fprintf(stderr,"safe_mutex: Got error: %d (%d) when trying to unlock mutex %s at %s, "
|
||||
"line %d\n", error, errno, mp->name, file, line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -191,22 +189,24 @@ int safe_cond_wait(pthread_cond_t *cond, safe_mutex_t *mp, const char *file,
|
||||
pthread_mutex_lock(&mp->global);
|
||||
if (mp->count == 0)
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Trying to cond_wait on a unlocked mutex at %s, line %d\n",file,line);
|
||||
fprintf(stderr,"safe_mutex: Trying to cond_wait on a unlocked mutex %s at %s, line %d\n",
|
||||
mp->name ? mp->name : "Null", file, line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
if (!pthread_equal(pthread_self(),mp->thread))
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Trying to cond_wait on a mutex at %s, line %d that was locked by another thread at: %s, line: %d\n",
|
||||
file,line,mp->file,mp->line);
|
||||
fprintf(stderr,"safe_mutex: Trying to cond_wait on a mutex %s at %s, line %d that was "
|
||||
"locked by another thread at: %s, line: %d\n",
|
||||
mp->name, file, line, mp->file, mp->line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
|
||||
if (mp->count-- != 1)
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Count was %d on locked mutex at %s, line %d\n",
|
||||
mp->count+1, file, line);
|
||||
fprintf(stderr,"safe_mutex: Count was %d on locked mutex %s at %s, line %d\n",
|
||||
mp->count+1, mp->name, file, line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -215,7 +215,8 @@ int safe_cond_wait(pthread_cond_t *cond, safe_mutex_t *mp, const char *file,
|
||||
pthread_mutex_lock(&mp->global);
|
||||
if (error)
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Got error: %d (%d) when doing a safe_mutex_wait at %s, line %d\n", error, errno, file, line);
|
||||
fprintf(stderr,"safe_mutex: Got error: %d (%d) when doing a safe_mutex_wait on %s at %s, "
|
||||
"line %d\n", error, errno, mp->name, file, line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -223,8 +224,8 @@ int safe_cond_wait(pthread_cond_t *cond, safe_mutex_t *mp, const char *file,
|
||||
if (mp->count++)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"safe_mutex: Count was %d in thread 0x%lx when locking mutex at %s, line %d\n",
|
||||
mp->count-1, my_thread_dbug_id(), file, line);
|
||||
"safe_mutex: Count was %d in thread 0x%lx when locking mutex %s at %s, line %d\n",
|
||||
mp->count-1, my_thread_dbug_id(), mp->name, file, line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -243,7 +244,8 @@ int safe_cond_timedwait(pthread_cond_t *cond, safe_mutex_t *mp,
|
||||
pthread_mutex_lock(&mp->global);
|
||||
if (mp->count != 1 || !pthread_equal(pthread_self(),mp->thread))
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Trying to cond_wait at %s, line %d on a not hold mutex\n",file,line);
|
||||
fprintf(stderr,"safe_mutex: Trying to cond_wait at %s, line %d on a not hold mutex %s\n",
|
||||
file, line, mp->name ? mp->name : "Null");
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -253,7 +255,10 @@ int safe_cond_timedwait(pthread_cond_t *cond, safe_mutex_t *mp,
|
||||
#ifdef EXTRA_DEBUG
|
||||
if (error && (error != EINTR && error != ETIMEDOUT && error != ETIME))
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Got error: %d (%d) when doing a safe_mutex_timedwait at %s, line %d\n", error, errno, file, line);
|
||||
fprintf(stderr,
|
||||
"safe_mutex: Got error: %d (%d) when doing a safe_mutex_timedwait on %s at %s, "
|
||||
"line %d\n",
|
||||
error, errno, mp->name, file, line);
|
||||
}
|
||||
#endif
|
||||
pthread_mutex_lock(&mp->global);
|
||||
@ -261,8 +266,10 @@ int safe_cond_timedwait(pthread_cond_t *cond, safe_mutex_t *mp,
|
||||
if (mp->count++)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"safe_mutex: Count was %d in thread 0x%lx when locking mutex at %s, line %d (error: %d (%d))\n",
|
||||
mp->count-1, my_thread_dbug_id(), file, line, error, error);
|
||||
"safe_mutex: Count was %d in thread 0x%lx when locking mutex %s at %s, line %d "
|
||||
"(error: %d (%d))\n",
|
||||
mp->count-1, my_thread_dbug_id(), mp->name, file, line,
|
||||
error, error);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -286,8 +293,9 @@ int safe_mutex_destroy(safe_mutex_t *mp, const char *file, uint line)
|
||||
}
|
||||
if (mp->count != 0)
|
||||
{
|
||||
fprintf(stderr,"safe_mutex: Trying to destroy a mutex that was locked at %s, line %d at %s, line %d\n",
|
||||
mp->file,mp->line, file, line);
|
||||
fprintf(stderr,"safe_mutex: Trying to destroy a mutex %s that was locked at %s, "
|
||||
"line %d at %s, line %d\n",
|
||||
mp->name, mp->file, mp->line, file, line);
|
||||
fflush(stderr);
|
||||
abort();
|
||||
}
|
||||
@ -359,8 +367,8 @@ void safe_mutex_end(FILE *file __attribute__((unused)))
|
||||
struct st_safe_mutex_info_t *ptr;
|
||||
for (ptr= safe_mutex_root ; ptr ; ptr= ptr->next)
|
||||
{
|
||||
fprintf(file, "\tMutex initiated at line %4u in '%s'\n",
|
||||
ptr->init_line, ptr->init_file);
|
||||
fprintf(file, "\tMutex %s initiated at line %4u in '%s'\n",
|
||||
ptr->name, ptr->init_line, ptr->init_file);
|
||||
(void) fflush(file);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user