Subject Re: Firebird V1.0 crash in strlen called from isc_dsql_prepare_m
Author Tom Price
--- In firebird-support@yahoogroups.com, "tomprice9876"
<tomprice9876@...> wrote:
>
> 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)

In case anyone else comes across this problem in future and finds
this thread, I did eventually work out what was causing the crash.
It was caused by changes in our client code, backing out 2 changes
appears to have fixed the server crash:

- We had upgraded our JDBC client driver from V1.0 to V2.0 (I'm
not sure which exact version). Going back to the old version made
the server *much* more stable. It seems that the client driver
isn't as backwards-compatible as it claims to be...

- We had also changed the way we were resetting client data sets
when the client-server connection was lost; in the version with the
problem we were throwing away QueryDataSet objects and creating new
ones, going back to client code that reset and re-used a single
QueryDataSet fixed the remaining server crashes.

Cheers,
Tom.