From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-interfaces(at)postgreSQL(dot)org |
Subject: | Can a windows DLL have more than one process attached? |
Date: | 2001-11-27 18:31:40 |
Message-ID: | 24767.1006885900@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces |
In reviewing some recent patches I notice the following code added to
src/interfaces/libpq/libpqdll.c:
BOOL WINAPI
DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
LPVOID lpReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
...
if (netmsgModule == NULL)
netmsgModule = LoadLibraryEx("netmsg.dll", NULL, LOAD_LIBRARY_AS_DATAFILE);
break;
case DLL_PROCESS_DETACH:
if (netmsgModule != NULL)
FreeLibrary(netmsgModule);
...
break;
}
}
where netmsgModule is
static HINSTANCE netmsgModule = NULL;
This sure looks to me like it will fail miserably if more than one
process can attach to the DLL concurrently: won't the first one to
detach release the netmsg library, breaking access to it for all the
remaining processes?
I don't know enough about Windows to know if there's really a problem
here, but the code looks fishy to me. I'd expect to need a reference
count. Comments anyone?
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Ross J. Reedstrom | 2001-11-27 19:01:47 | Re: Can a windows DLL have more than one process attached? |
Previous Message | Tom Lane | 2001-11-27 16:11:02 | Re: Cant load pgtclsh library into application |