Subject Firebird V1.0 crash in strlen called from isc_dsql_prepare_m
Author tomprice9876
I use Firebird V1.0, SuperServer, on a Sparc Solaris 9 server. I'm
seeing fairly regular crashes (SIGSEGV) of the main ibserver process,
with the following stack.

----------------- lwp# 15230 / thread# 15230 --------------------
ff1b4478 strlen (5e3ec4, fe97b974, 5906b8, 0, 0, 20) + 80
0002c030 isc_dsql_prepare_m (5906b4, fe97b97c, 270b40, 0, 0, 20) + 144
00025414 prepare_statement (270b30, fe97b9d0, 65b560, 65b9e4, 2a8cf8,
0) + 1ac
00025c70 process_packet (2a8cf8, 65b7e0, 65b7e0, fe97bf8c, 0, 0) + 5a8
00027ad0 thread (1bd338, 1cf3f0, 0, 0, 0, 0) + 124
ff365e48 _lwp_start (0, 0, 0, 0, 0, 0)

This started happening when I upgraded my client code to a new
version, so I think it must be triggered by a change in the queries I
am performing, but I cannot work out what change has caused this. I
did not change the Firebird server installation at all when I upgraded
my client code.

I have core files from the ibserver crashes, and I'm asking for advice
on what I should be looking for in my client code and/or the core
files to determine what is causing the crashes. I have searched the
web for the above call stack and can't find anyone else who is having
the same problem, and I have read the ibserver code in this area but I
am having trouble understanding how to extract the query that is
currently being processed from the core file.

I have two clients, both are written in Java using the Borland
JDataStore (com.borland.dx.*) packages. One runs on the server itself
(using localhost:/path/to/database to connect) and the other is a
separate client app running on Windows. The one running on the server
adds and deletes rows in the databases, the one on the client machine
mainly just reads the information but sometimes makes updates. I
would strongly prefer to change my client code to resolve this rather
than upgrading to a newer version of the Firebird server code.

Any insight you could provide would be appreciated!