Re: Getting DB error = 20017 - Unexpected EOF from the server

Frediano Ziglio <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <1236966237.18826.4.camel@freddy>
Il giorno ven, 13/03/2009 alle 09.18 -0400,
[email protected] ha scritto:
> We have started testing the FreeTDS client on OpenVMS Itanium V8,3-1H1. 
> The Sybase Server is running on SunOS V5.9.  We have been able to get the 
> connection to work properly, but the connection fails within 24 hours with 
> the following:
> 
> DB error = 20017,  Severity code = 9
> DB error msg Unexpected EOF from the server
> OS error # 36
> OS error msg operation in progress
> DB error = 20047,  Severity code = 1
> DB error msg DBPROCESS is dead or not enabled
> OS error # 0
> OS error msg error 0
> FreeTDS: db-lib: exiting because client error handler returned 0 for msgno 
> 20047
> 
> I've turned on debugging and the header and end of the log is below.  This 
> problem is repeatable.
> 
> Anyone have any ideas?
> 
> Thank you,
> Jeff Goodwin
> 

Looking at http://h71000.www7.hp.com/doc/82final/6529/6529pro_030.html
and searching for TDSESEOF (you can find it in net.c, tds_goodwrite
probably raised the error) it seems a constants problem. I think it
would be safer to replace "sock_errno == EAGAIN" in net.c (there are 4
occurrencies) with "(sock_errno == EAGAIN || sock_errno == EWOULDBLOCK
|| sock_errno == EINPROGRESS)". The problem is that in some situations
tds_select can return even if data are not pending (or not possible to
write) and catching these errors keep looping.

Regards,
  Frediano

> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]log.c;1:190:Starting log file 
> for FreeTDS '0.82'
>         on 2009-03-13 07:23:51 with debug flags 0x4fff.
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.REPLACEMENTS]LIBICONV.C;2:78:Using 
> trivial iconv
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]iconv.c;1:197:names for 
> ISO-8859-1: ISO-8859-1
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]iconv.c;1:197:names for UTF-8: 
> UTF-8
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]iconv.c;1:197:names for 
> UCS-2LE: UCS-2LE
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]iconv.c;1:197:names for 
> UCS-2BE: (null)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]iconv.c;1:363:iconv to convert 
> client-side data to the "ISO-8859-1" character set
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]iconv.c;1:516:tds_iconv_info_init: 
> converting "ISO-8859-1"->"UCS-2LE"
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:210:Connecting to 
> 172.21.141.141 port 5002 (TDS version 5.0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:264:tds_open_socket: 
> connect(2) returned "operation in progress"
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:303:tds_open_socket() 
> succeeded
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from DEAD to IDLE
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:779:Sending packet
> 
> ....
> 
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:2217:tds_process_end() 
> state set to TDS_IDLE
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from READING to IDLE
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:2232: rows_affected 
> = 0
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:110:logic error: 
> cannot change query state from IDLE to PENDING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4601:dbsqlok() end 
> status was success
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1243:dbcmd(BF9AB0, 
> update INFOTAP)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1250:dbcmd() bufsz 
> = 15
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:5727:dbfreebuf(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1205:dbfcmd(BF9AB0, 
>  %s, ...)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1243:dbcmd(BF9AB0, 
>   set FROM_LOC_DEPT = 'P3100', STARTS_AREA = '3', WIRE_M>
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1250:dbcmd() bufsz 
> = 15
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1298:dbsqlexec(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:6722:dbsqlsend(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]mem.c;1:563:tds_free_all_results()
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from IDLE to QUERYING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from QUERYING to PENDING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:779:Sending packet
> 0000 0f 01 00 e8 00 00 00 00-21 db 00 00 00 00 75 70 |...è.... !Û....up|
> 0010 64 61 74 65 20 49 4e 46-4f 54 41 50 20 20 73 65 |date INF OTAP  se|
> 0020 74 20 46 52 4f 4d 5f 4c-4f 43 5f 44 45 50 54 20 |t FROM_L OC_DEPT |
> 0030 3d 20 27 50 33 31 30 30-27 2c 20 53 54 41 52 54 |= 'P3100 ', START|
> 0040 53 5f 41 52 45 41 20 3d-20 27 33 27 2c 20 57 49 |S_AREA =  '3', WI|
> 0050 52 45 5f 4d 41 54 45 52-49 41 4c 20 3d 20 27 41 |RE_MATER IAL = 'A|
> 0060 55 27 2c 20 57 49 52 45-5f 53 49 5a 45 20 3d 20 |U', WIRE _SIZE = |
> 0070 27 32 2e 30 20 4d 49 4c-27 2c 20 57 49 52 45 5f |'2.0 MIL ', WIRE_|
> 0080 54 59 50 45 5f 31 20 3d-20 27 41 55 27 2c 20 57 |TYPE_1 =  'AU', W|
> 0090 49 52 45 5f 54 59 50 45-5f 32 20 3d 20 27 27 2c |IRE_TYPE _2 = '',|
> 00a0 20 57 49 52 45 5f 53 49-5a 45 5f 31 20 3d 20 27 | WIRE_SI ZE_1 = '|
> 00b0 32 2e 30 20 4d 49 4c 27-2c 20 57 49 52 45 5f 53 |2.0 MIL' , WIRE_S|
> 00c0 49 5a 45 5f 32 20 3d 20-27 27 20 20 77 68 65 72 |IZE_2 =  ''  wher|
> 00d0 65 20 4c 4f 54 5f 4e 4f-20 3d 20 27 41 30 31 30 |e LOT_NO  = 'A010|
> 00e0 32 33 39 31 34 39 27 20-                        |239149' |
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4532:dbsqlok(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:592:Received header
> 0000 04 01 00 11 00 00 00 00-                        |........|
> 
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:671:Received packet
> 0000 fd 10 00 02 00 01 00 00-00                      |ý....... .|
> 
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4565:dbsqlok() not 
> done, calling tds_process_tokens()
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:495:tds_process_tokens(BF9DD0, 
> 7ACDFDD0, 7ACDFDD8, 0x6914)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from PENDING to READING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:510:processing 
> result tokens.  marker is  fd(DONE)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:2201:tds_process_end: 
> more_results = 0
>                 was_cancelled = 0
>                 error = 0
>                 done_count_valid = 1
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:2217:tds_process_end() 
> state set to TDS_IDLE
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from READING to IDLE
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:2232: rows_affected 
> = 1
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:110:logic error: 
> cannot change query state from IDLE to PENDING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4601:dbsqlok() end 
> status was success
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1599:dbresults(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1608:dbresults: 
> dbresults_state is 5 (_DB_RES_SUCCEED)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1587:dbresults 
> returning 1 (SUCCEED)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:2678:dbcount(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1243:dbcmd(BF9AB0, 
> set rowcount 0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1250:dbcmd() bufsz 
> = 219
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:5727:dbfreebuf(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1298:dbsqlexec(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:6722:dbsqlsend(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]mem.c;1:563:tds_free_all_results()
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from IDLE to QUERYING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from QUERYING to PENDING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:779:Sending packet
> 0000 0f 01 00 1c 00 00 00 00-21 0f 00 00 00 00 73 65 |........ !.....se|
> 0010 74 20 72 6f 77 63 6f 75-6e 74 20 30             |t rowcou nt 0|
> 
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4532:dbsqlok(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:592:Received header
> 0000 04 01 00 11 00 00 00 00-                        |........|
> 
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:671:Received packet
> 0000 fd 00 00 02 00 00 00 00-00                      |ý....... .|
> 
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4565:dbsqlok() not 
> done, calling tds_process_tokens()
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:495:tds_process_tokens(BF9DD0, 
> 7ACDFDD0, 7ACDFDD8, 0x6914)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from PENDING to READING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:510:processing 
> result tokens.  marker is  fd(DONE)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:2201:tds_process_end: 
> more_results = 0
>                 was_cancelled = 0
>                 error = 0
>                 done_count_valid = 0
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:2217:tds_process_end() 
> state set to TDS_IDLE
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from READING to IDLE
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:2232: rows_affected 
> = 0
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:110:logic error: 
> cannot change query state from IDLE to PENDING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4601:dbsqlok() end 
> status was success
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1243:dbcmd(BF9AB0, 
> set rowcount 1)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1250:dbcmd() bufsz 
> = 15
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:5727:dbfreebuf(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1298:dbsqlexec(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:6722:dbsqlsend(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]mem.c;1:563:tds_free_all_results()
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from IDLE to QUERYING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from QUERYING to PENDING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]net.c;1:779:Sending packet
> 0000 0f 01 00 1c 00 00 00 00-21 0f 00 00 00 00 73 65 |........ !.....se|
> 0010 74 20 72 6f 77 63 6f 75-6e 74 20 31             |t rowcou nt 1|
> 
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4532:dbsqlok(BF9AB0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:334:tdserror(BF9970, 
> BF9DD0, 20017, 36)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:7782:dbperror(BF9AB0, 
> 20017, 36)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:7835:20017: 
> "Unexpected EOF from the server"
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4747:dbdead(BF9AB0) 
> [alive]
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:7856:"Unexpected 
> EOF from the server", client returns 2 (INT_CANCEL)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:368:tdserror: client 
> library returned TDS_INT_CANCEL(2)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:389:tdserror: 
> returning TDS_INT_CANCEL(2)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:162:Changed query 
> state from PENDING to DEAD
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4565:dbsqlok() not 
> done, calling tds_process_tokens()
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]token.c;1:495:tds_process_tokens(BF9DD0, 
> 7ACDFB00, 7ACDFB08, 0x6914)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.TDS]util.c;1:118:logic error: 
> cannot change query state from DEAD to READING
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:1243:dbcmd(BF9AB0, 
> update INFOTAP)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:7782:dbperror(BF9AB0, 
> 20047, 0)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:7835:20047: 
> "DBPROCESS is dead or not enabled"
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:4747:dbdead(BF9AB0) 
> [dead]
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:7856:"DBPROCESS is 
> dead or not enabled", client returns 0 (INT_EXIT)
> SYS$SYSDEVICE:[FREETDS.FREETDS-0_82.SRC.DBLIB]dblib.c;1:7903:FreeTDS: 
> db-lib: exiting because client error handler returned 0 for msgno 20047
> _______________________________________________
> FreeTDS mailing list
> [email protected]
> http://lists.ibiblio.org/mailman/listinfo/freetds
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.