Hi,

Thanx for responding.

Only one worker thread was accesing MYSQL* myHdl. Nevertherless i have placed mutexes 
around all calls involing MYSQL*.

main-thread: Defined MYSQL* myHdl as global variable and called mysql_init(), and 
mysql_connect();

worker: Defined MYSQL_RES* res and used myHdl to query with no problems. Crashes upon 
mysql_num_res or mysql_fetch_rows.

gdb gives:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 3076 (LWP 23491)]
0x400519e3 in mysql_fetch_row () from /usr/lib/libmysqlclient_r.so.10
(gdb) bt
#0  0x400519e3 in mysql_fetch_row () from /usr/lib/libmysqlclient_r.so.10
#1  0x08054d40 in th_connection ()
#2  0x40036fef in pthread_start_thread () from /lib/i686/libpthread.so.0
#3  0x400370df in pthread_start_thread_event () from /lib/i686/libpthread.so.0


-----Original Message-----
From: Eric Bergen <[EMAIL PROTECTED]>
To: darren <[EMAIL PROTECTED]>
Date: Wed, 30 Jun 2004 20:06:40 -0500
Subject: Re: threading problems in linux C client

If you have multiple threads accessing the same connection remember to
make sure that only one thread enters mysql_query() mysql_connect() or
mysql_store_result() after you store the result another thread will be
able to use that connection without problems.

-Eric

On Wed, 30 Jun 2004 11:01:35 +0000, darren <[EMAIL PROTECTED]> wrote:
> 
> Hi all,
> 
> I am writing a multi-threaded client that requires shared access to a single MySQL 
> connection. The environment is Redhat 7.3 with the patched 
> mysql-3.23.58-2.71.i386.rpm installed and compiled with -l libmysqlclient_r.
> 
> The connection is made from the main thread and a MYSQL_RES* myres declared from the 
> child thread is used to fetch results back to the thread. I get a Segmentation fault 
> the first instance my child thread (only one) accesses MYSQL_RES through 
> mysql_num_rows(myres). (gdb informed me that this is due to  mysql_num_rows from 
> libmysqlclient_r.so.10)
> 
> I have read a few docs about writing MySQL multi-threaded clients and have called 
> my_init() in my main prog and my_thread_init() at the first line of my thread 
> handler.
>
> Any ideas?
>
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
>
>




--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to