From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Manfred Spraul <manfred(at)colorfullife(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: libpq thread safety |
Date: | 2003-11-18 02:35:21 |
Message-ID: | 200311180235.hAI2ZLg29230@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-patches |
Manfred Spraul wrote:
> Hi,
>
> I've searched through libpq and looked for global or static variables as
> indicators of non-threadsafe code. I found:
> - Win32 and BeOS: there is a global "ioctlsocket_ret variable, but it
> seems to be a dummy variable that is always discarded.
Right, and it is moving into a compatibility function in 7.5 where it
will be a local function variable.
> - pg_krb4_init(): Are the kerberos libraries thread safe? Additionally,
> setting init_done is racy.
No idea.
> - pg_krb4_authname(): uses a static buffer.
> - kerberos 5: Is the library thread safe? the initialization could run
> twice, I'm not sure if that's intentional.
> - pg_krb4_authname(): relies on the global variable pg_krb5_name.
Seems kerberos isn't.
> - PQoidStatus: uses a static buffer.
Yes, known documented problem.
> - libpq_gettext: setting already_bound is racy.
Does that happen in different threads?
> - openssl: According to
> http://www.openssl.org/docs/crypto/threads.html
> libpq must register locking callbacks within openssl, otherwise there
> will be random corruptions. Additionally the SSL_context initialization
> is not properly synchronized, and SSLerrmessage relies on a static buffer.
Oh.
> PQoidStatus is already documented as not thread safe, but what about
> OpenSSL and kerberos? It seems openssl needs support with callbacks, and
> according to google searches MIT kerberos 5 is not thread safe, and
> libpq must use mutexes to prevent concurrent calls into the kerberos
> library.
Oh, seems like a TODO here. We already know how to do thread locking in
port/thread.c so maybe we just need to add some locks in there.
--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2003-11-18 02:41:20 | Re: Not 7.5, but 8.0 ? |
Previous Message | Neil Conway | 2003-11-18 02:33:30 | Re: Release cycle length |
From | Date | Subject | |
---|---|---|---|
Next Message | Reinhard Max | 2003-11-18 11:07:18 | Install pg_config_manual.h |
Previous Message | Bruce Momjian | 2003-11-18 02:16:45 | Re: initdb copyright notice |