Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

Re: Is mysql_real_connect thread safe?

From: Guilhem Bichot <guilhem(at)mysql.com>
Date: Wed Jun 27 2007 - 15:51:07 EDT


Hello,

On Wed, Jun 27, 2007 at 10:27:18AM -0700, Dhammika Pathirana wrote:
> I'm working on a multi-threaded daemon written in C/C++ for FreeBSD.
> This daemon uses libmysqlclient_r.so.15 to query a mysql db. Both
> libmysqlclient_r and the daemon are compiled with -lpthread and all
> threads are initialized with mysql_init.
> If I startup this daemon process at system bootup (through rc.d) then
> I get the following core, but it seems to work fine if I start it
> manually (after system bootup). Would really appreciate any help on
> this.
>
> #0 0x2846926f in pthread_testcancel () from /usr/lib/libpthread.so.1
> (gdb) bt
> #0 0x2846926f in pthread_testcancel () from /usr/lib/libpthread.so.1
> #1 0x28461856 in pthread_mutexattr_init () from /usr/lib/libpthread.so.1
> #2 0x00000000 in ?? ()

http://dev.mysql.com/doc/refman/5.0/en/threaded-clients.html says:

 To get things to work smoothly you have to do the following:

  1. Call mysql_library_init() before any other MySQL functions. It is not thread-safe, so call it before threads are created, or protect the call with a mutex.
  2. Arrange for mysql_thread_init() to be called early in the thread handler before calling any MySQL function. If you call mysql_init() or mysql_connect(), they will call mysql_thread_init() for you.
  3. In the thread, call mysql_thread_end() before calling pthread_exit(). This frees the memory used by MySQL thread-specific variables.

>From what you are saying you already have done 2); but do you also
have 1) and 3) ?

-- 
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Mr. Guilhem Bichot 
 / /|_/ / // /\ \/ /_/ / /__   MySQL AB, Lead Software Engineer
/_/  /_/\_, /___/\___\_\___/   Bordeaux, France
       <___/   www.mysql.com   

-- 
MySQL Internals Mailing List
For list archives: 
http://lists.mysql.com/internals
To unsubscribe:    
http://lists.mysql.com/internals?unsub=lists@pantek.com
Received on Wed Jun 27 15:47:31 2007

This archive was generated by hypermail 2.1.8 : Wed Jun 27 2007 - 15:50:02 EDT


Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library