[python-sybase] Segentation faults when connecting to SQL Server 2000
Harri Pasanen
harri.pasanen at trema.com
Tue, 10 Sep 2002 09:15:40 +0200
On Tuesday 10 September 2002 02:31, Dave Cole wrote:
> >>>>> "Kevin" =3D=3D Kevin Jacobs <jacobs@penguin.theopalgroup.com> wri=
tes:
>
> Kevin> On 9 Sep 2002, Peter Hopfgartner wrote:
> >> I'm trying to use the Sybase module from a Debian Linux 3.0 system
> >> (Python 2.1.3, FreeTDS 0.53).
> >>
> >> I've set up some Python code in order to create ASCII file
> >> containing the database scheme, functions and stored
> >> procedures. The code runs fine when connecting through ODBC from a
> >> Windows computer. It crashes when connecting from the Linux client,
> >> as soon as the 2nd query is run.
> >>
> >> Has there already been some work done on it, both from the FreeTDS
> >> side (version 0.60rc1 came out these days, should I install it?)
> >> and the Sybase module side. Can I help in debugging the problem?
>
> Kevin> All I can suggest is that you use the _very_ lastest FreeTDS
> Kevin> library. The last released version had some rather nasty bugs
> Kevin> in it.
>
> >> As soon as I have again the chance to connect to the SQL Server
> >> (it's at a customers place) I will paste you the exact message
> >> (something about threads and relesing a lock that has not been
> >> set).
>
> Kevin> Ah! I've run into this myself. I'll dig up my patches that
> Kevin> re-work the Sybase module locking code that fixes it (though
> Kevin> I'm not sure if I'm just working around errors in the FreeTDS
> Kevin> LibCT implementation or unsafe assumptions that David Cole made
> Kevin> about Sybase's implementation).
>
> I am very keen to get the module working with FreeTDS. I think the
> future of the module is largely tied to the success of FreeTDS.
>
I also played with the Sybase module + FreeTDS combo, using FreeTDS curre=
nt=20
snapshot.
I ran into some problems where the equivalent code that ran against a Syb=
ase=20
db would halt with some error message when running against MS-SQL server.=
=20
Some things I was able to sort out just by closing and reallocating a cu=
rsor=20
prior to continuing. Note that I've had similar problems with Sybase mod=
ule=20
against Sybase DB, where I need to read all the result sets from a cursor=
=20
before I can successfully run a stored procedure.
With Sybase+FreeTDS I then had the next problem with some threading asser=
ts=20
failing. As I'm not using threads in my script, I boldly removed all=20
threading and locking support from Sybase.py, and everything I was doing=20
starting working. Now the only remaining problem I have is that some sto=
red=20
procedure calls are segfaulting.
I heard a rumour the FreeTDS does not have support for on the wire proced=
ure=20
calls / parameter binding. If that is true, so it may not be at the leve=
l=20
off Sybase libs for some time.
-Harri