[freetds] Cored dump

ZIGLIO, Frediano, VF-IT Frediano.Ziglio at vodafone.com
Mon Nov 28 10:47:04 EST 2005


> 
> Hello, I have now another core.xxx but with this some debug 
> info is showed
> 
> 1) tail -f freetds_20051126_182913.log
> util.c:276:Starting log file for FreeTDS 0.64.dev.20051019
>         on 2005-11-26 18:27:45 with debug flags 0x4fff.
> iconv.c:361:iconv to convert client-side data to the 
> "ISO-8859-1" character 
> set
> iconv.c:514:tds_iconv_info_init: converting "ISO-8859-1"->"UCS-2LE"
> iconv.c:514:tds_iconv_info_init: converting "ISO-8859-1"->"UCS-2LE"
> net.c:168:Connecting to 213.27.242.161 port 1433.
> 

Mm... this time no connection error, it seems tds_open_socket returns
TDS_SUCCEED

> 2)  GDB shows some information
> 
> ......
> 
> #0  tds_connect (tds=Cannot access memory at address 0x8
> ) at login.c:235
> 
> 
> 235             if (IS_TDS80(tds)) {
> 
> 
> (gdb)  backtrace
> #0  tds_connect (tds=Cannot access memory at address 0x8
> ) at login.c:235
> Cannot access memory at address 0x0
> Current language:  auto; currently c
> (gdb)
> 
> ........
> 
> 
> (gdb) list -
> 225
> 226             memcpy(tds->capabilities, connection->capabilities, 
> TDS_MAX_CAPABILITY);
> 227
> 228             retval = tds_version(tds, version);
> 229             if (!retval)
> 230                     version[0] = '\0';
> 231
> 232             if (tds_open_socket(tds, 
> tds_dstr_cstr(&connection->ip_addr), connection->port, 
> connect_timeout) != 
> TDS_SUCCEED)
> 233                     return TDS_FAIL;
> 234
> 
> (gdb) list
> 
> 235             if (IS_TDS80(tds)) { /** <<<<<  ERROR HERE */
> 236                     retval = tds8_do_login(tds, connection);
> 237                     db_selected = 1;
> 238             } else if (IS_TDS7_PLUS(tds)) {
> 239                     retval = tds7_send_login(tds, connection);
> 240                     db_selected = 1;
> 241             } else {
> 242                     tds->out_flag = 0x02;
> 243                     retval = tds_send_login(tds, connection);
> 244
> 
> I can open and disconnect many connections without problem 
> but after some 
> hours [5-10] the program dump the core...
> 
> Regards

Mmmm... tds == 0x8 means a corruption on stack. tds variable can't be
0x8 in tds_open_socket so something in tds_open_socket corrupts memory
(or another thread or kernel). 

Which system are you using?

freddy77


More information about the FreeTDS mailing list