Re: bsqldb SEGFAULT abend

[email protected] (Christos Zoulas)
Newsgroups gmane.comp.db.tds.freetds
Organization Astron Software
Message-ID <[email protected]>
On Mar 31,  8:19pm, [email protected] ("James K. Lowden") wrote:
-- Subject: Re: [freetds] bsqldb SEGFAULT abend

| Ronildo wrote:
| > 
| > Program received signal SIGSEGV, Segmentation fault.
| > [Switching to Thread -1208239392 (LWP 20221)]
| > 0x00b5143d in realloc () from /lib/libc.so.6
| > (gdb) bt
| > #0  0x00b5143d in realloc () from /lib/libc.so.6
| > #1  0x00132379 in tds_get_data (tds=0x8097ad0, curcol=0x80cad10) at
| > token.c:2043
| > #2  0x0013265a in tds_process_row (tds=0x8097ad0) at token.c:2168
| > #3  0x00134989 in tds_process_tokens (tds=0x8097ad0,
| > #result_type=0xbf940188,
| >     done_flags=0x0, flag=5384) at token.c:623
| > #4  0x00120a47 in dbnextrow (dbproc=0x8097360) at dblib.c:1994
| > #5  0x0804aae5 in main (argc=Cannot access memory at address 0x4
| > ) at bsqldb.c:514
| 
| Well, that's bad.  It looks to me like memory corruption, because all
| that's ever supposed to be stored in blob->textpointer is a pointer
| returned by malloc/realloc.  
| 
| One possibilty is that determine_adjusted_size() somehow returns a
| negative value, leading realloc() to ask for something huge.  (There are
| quite a few places in the code where int is used where size_t would be
| preferable.  This might be one.)  
| 
| One thing you could do is add 
| 
| 	assert(new_blob_size > 0);
| 
| as soon as it's assigned.  Also see MALLOC_CHECK_ in your realloc() man
| page.  
| 
| I consider any segment fault a serious error, and I very much wnat to get
| to the bottom of it.  It will be hard to reproduce, though, even with the
| details you've provided.  The more you're able to do on your end, the
| better.  
| 
| (Then again, it seems Frediano commits a fix everytime I make a speech
| like that....)
| 

Run it through valgrind...

christos
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.