From: | Zdenek Kotala <Zdenek(dot)Kotala(at)Sun(dot)COM> |
---|---|
To: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | libpq is not thread safe |
Date: | 2009-04-14 11:54:30 |
Message-ID: | 1239710070.1289.158.camel@localhost |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
When postgreSQL is compiled with --thread-safe that libpq should be
thread safe. But it is not true when somebody call fork(). The problem
is that fork() forks only active threads and some mutex can stay locked
by another thread. We use ssl_config mutex which is global.
We need implement atfork handlers to fix this. See
http://www.opengroup.org/onlinepubs/009695399/functions/pthread_atfork.html
We should add pthread_atfork into _ini libpq section.
Another problem with fork is that new process inherit connections and so
on. Which is not also good, but it is happened also on single threaded
application and developer can fix it in own code. Maybe some notice in
documentation should help what application should do after fork.
Comments?
Zdenek
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2009-04-14 12:10:54 | Re: Unicode string literals versus the world |
Previous Message | Marko Kreen | 2009-04-14 11:38:38 | Re: Unicode string literals versus the world |