freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
- From: "James K. Lowden" <jklowden AT freetds.org>
- To: freetds AT lists.ibiblio.org
- Subject: Re: [freetds] Segmentation Fault in error handler
- Date: Sat, 14 May 2011 09:07:04 -0400
On Wed, 11 May 2011 16:12:42 -0400
Raymond R Rankins <rrr03 AT health.state.ny.us> wrote:
> I'm testing out fisql to run some queries and when there's an error
> with severity > 10 which invokes the error handler, it's causing a
> segmentation fault and dumping the core.
> This is happening if I connect to SQL Server or to Sybase.
>
> Below are examples of what's happening:
>
> Error raised in SQL Server
> ----------------------------------------------
> Msg 2812, Level 16, State 62:
> Server 'CHPLUSSQL01', Line 1:
> Could not find stored procedure 'sp_modifystats'.
> DB-LIBRARY error:
> General SQL Server error: Check messages from the SQL Server
> Segmentation Fault - core dumped
This turns out to be a deep and interesting bug, hard to find but
easy to fix. Thanks for finding it.
The fisql error handler has this code:
if (oserr != DBNOERR) {
fprintf(stdout, "Operating-system error:\n\t%s\n", oserrstr); }
and DBNOERR should be -1
$ grep DBNOERR include/sybdb.h
#define DBNOERR -1
but if oserr is anything else, and oserrstr == NULL, you'll get a
segmentation fault. And, indeed, oserr is zero. But why?
I wanted to blame Microsoft and Sybase for not agreeing on the value,
when I realized this is the *error* handler provoked by receiving a
*message*. In other words, db-lib code, the obscure
_dblib_handle_info_message() function invokes the error handler for
messages with severity > 10.
(*_dblib_err_handler)(dbproc, msg->severity,
msg->msgno, 0, (char *) message, NULL);
Changing that to
(*_dblib_err_handler)(dbproc, msg->severity,
msg->msgno, DBNOERR, (char *) message, NULL);
fixes the problem.
Committed to HEAD and 0.91RC branches.
--jkl
-
[freetds] cannot build freetds-0.91RC2 with homebrew - any help would be greatly appreciated,
Tom Hoen, 05/11/2011
-
[freetds] Segmentation Fault in error handler,
Raymond R Rankins, 05/11/2011
-
Re: [freetds] Segmentation Fault in error handler,
Raymond R Rankins, 05/11/2011
-
Re: [freetds] Segmentation Fault in error handler,
Igor Korot, 05/11/2011
-
Re: [freetds] Segmentation Fault in error handler,
Raymond R Rankins, 05/11/2011
- Re: [freetds] Segmentation Fault in error handler, Raymond R Rankins, 05/12/2011
-
Re: [freetds] Segmentation Fault in error handler,
Raymond R Rankins, 05/11/2011
-
Re: [freetds] Segmentation Fault in error handler,
Igor Korot, 05/11/2011
-
Re: [freetds] Segmentation Fault in error handler,
James K. Lowden, 05/14/2011
- Re: [freetds] Segmentation Fault in error handler, Raymond R Rankins, 05/16/2011
-
Re: [freetds] Segmentation Fault in error handler,
Raymond R Rankins, 05/11/2011
-
Re: [freetds] cannot build freetds-0.91RC2 with homebrew - any help would be greatly appreciated,
Ken Collins, 05/11/2011
- Re: [freetds] cannot build freetds-0.91RC2 with homebrew - any help would be greatly appreciated, Tom Hoen, 05/11/2011
- Re: [freetds] cannot build freetds-0.91RC2 with homebrew - any help would be greatly appreciated, Frediano Ziglio, 05/12/2011
-
[freetds] Segmentation Fault in error handler,
Raymond R Rankins, 05/11/2011
Archive powered by MHonArc 2.6.24.