List:Commits« Previous MessageNext Message »
From:Davi Arnaut Date:January 26 2009 7:06pm
Subject:Re: bzr commit into mysql-6.0-bugteam branch (chad:2980) Bug#36428
Bug#38364
View as plain text  
Hi Chad,

OK to push with a couple of minor comments.

On 1/26/09 2:08 PM, Chad MILLER wrote:
> #At file:///home/cmiller/work/mysqlbzr/mysql-6.0-bugteam/ based on
> revid:ramil@stripped
>
>   2980 Chad MILLER	2009-01-26
>        Bug#36428: MY_MUTEX_INIT_FAST is used before initialization
>        Bug#38364: gen_lex_hash segmentation fault in debug build
>
>        Fix for v6.0 uniquely.
>
>        Initialze mutex attributes before doing any other thread
>        operations.
> modified:
>    include/my_pthread.h
>    mysys/my_init.c
>    mysys/my_thr_init.c
>
> === modified file 'include/my_pthread.h'
> --- a/include/my_pthread.h	2008-12-14 11:36:15 +0000
> +++ b/include/my_pthread.h	2009-01-26 15:56:07 +0000
> @@ -621,6 +621,7 @@ extern pthread_mutexattr_t my_errorcheck
>
>   typedef ulong my_thread_id;
>
> +extern my_bool my_threadattr_global_init(void);
>   extern my_bool my_thread_global_init(void);
>   extern void my_thread_global_end(void);
>   extern my_bool my_thread_init(void);
>
> === modified file 'mysys/my_init.c'
> --- a/mysys/my_init.c	2009-01-16 11:49:33 +0000
> +++ b/mysys/my_init.c	2009-01-26 15:56:07 +0000
> @@ -84,11 +84,14 @@ my_bool my_init(void)
>     if (my_progname)
>       my_progname_short= my_progname + dirname_length(my_progname);
>
> -#if defined(THREAD)&&  defined(SAFE_MUTEX)
> +#if defined(THREAD)
> +  if (my_threadattr_global_init())
> +    return 1;
> +#  if defined(SAFE_MUTEX)
>     safe_mutex_global_init();		/* Must be called early */
> -#endif
> -#if defined(THREAD)&&  defined(MY_PTHREAD_FASTMUTEX)&& 
> !defined(SAFE_MUTEX)
> +#  elif defined(MY_PTHREAD_FASTMUTEX)
>     fastmutex_global_init();              /* Must be called early */
> +#  endif
>   #endif
>     netware_init();
>   #ifdef THREAD
>
> === modified file 'mysys/my_thr_init.c'
> --- a/mysys/my_thr_init.c	2008-12-13 16:34:25 +0000
> +++ b/mysys/my_thr_init.c	2009-01-26 15:56:07 +0000
> @@ -68,6 +68,47 @@ nptl_pthread_exit_hack_handler(void *arg
>   #endif /* TARGET_OS_LINUX */
>
>
> +
> +/*
> +  initialize thread attributes
> +
> +  SYNOPSIS
> +    my_threadattr_global_init()
> +
> +  RETURN  is error?
> +    FALSE  ok
> +    TRUE   error

Please use doxygen format.

> +*/
> +
> +my_bool my_threadattr_global_init(void)
> +{
> +#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
> +  /*
> +    Set mutex type to "fast" a.k.a "adaptive"
> +
> +    In this case the thread may steal the mutex from some other thread
> +    that is waiting for the same mutex.  This will save us some
> +    context switches but may cause a thread to 'starve forever' while
> +    waiting for the mutex (not likely if the code within the mutex is
> +    short).
> +  */
> +  pthread_mutexattr_init(&my_fast_mutexattr);  /* ?= MY_MUTEX_INIT_FAST */
> +  pthread_mutexattr_settype(&my_fast_mutexattr,
> +                            PTHREAD_MUTEX_ADAPTIVE_NP);
> +#endif
> +#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
> +  /*
> +    Set mutex type to "errorcheck"
> +  */
> +  pthread_mutexattr_init(&my_errorcheck_mutexattr);
> +  pthread_mutexattr_settype(&my_errorcheck_mutexattr,
> +                            PTHREAD_MUTEX_ERRORCHECK);
> +#endif
> +
> +  return FALSE;

If the function returns the same value, it should return nothing.
Do as the others surrounding init functions, define it as having a 
return type of void.

Regards,

-- Davi Arnaut
Thread
bzr commit into mysql-6.0-bugteam branch (chad:2980) Bug#36428 Bug#38364Chad MILLER26 Jan 2009
  • Re: bzr commit into mysql-6.0-bugteam branch (chad:2980) Bug#36428Bug#38364Davi Arnaut26 Jan 2009