>an other question: the file ven03.c:
> is this a deeper layer than the interfaces (perl, php) itsself?

Yes. It is part of the operating system abstraction layer. The
interfaces use only the functions sqlaconnect, sqlarelease, sqlarequest
, sqlareceive and a few related ones.

>
>the real problem seems to me that when more than 
>8(=firstChunk) connections
>are opened, the function sql03_realloc_pool will be called, which 
>reserves memory for 16 connections copies the old memory and frees it.
>
>I am pretty sure that this is not threadsafe, and can lead in 
>SEGFAULTS or
>CONNECTION IN WRONG STATE.... when another thread has an 
>(indirect?) pointer
>to a connection_info struct.
>
>Can anybody give me a hint?

It looks as if the connection pool contains an array of connection_info
and not and array of connection_info pointer. This means that a realloc
will invalidate any current pointers. Code above the level of the afore
mentioned sql* functions will use a handle and not an actual pointer.
But if the realloc happens while another thread is inside sqlarequest or
sqlareceive, bad things will happen.

I'll have a look at what the effort would be to fix this. I'd resent
having to downgrade the thread awareness of the python driver. On the
other hand, 7.7 will probably get a completely new communication layer
designed from the ground up for thread safety. And communication is a
very central part of MaxDB, so everyone  is conservative about changes.
And if I understood your situation right, you're stuck with 7.4 anyway
because of the license.

Which boils down to:
- I'll probably have to fork ven03.c
- the changes will be in GPL'ed code

Daniel Dittmar

-- 
Daniel Dittmar
SAP Labs Berlin
[EMAIL PROTECTED]  

--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to