Tcl Source Code

Artifact [b11588af58]
Login

Artifact b11588af583c7a8fd202bc940cbbc000f7301d3a:

Ticket change [b11588af58] - New ticket [97069ea11a] close returns empty error message if failed non-blocking write flush pending. by oehhar 2014-03-25 08:50:53.
D 2014-03-25T08:50:53.946
J assignee nobody
J closer nobody
J cmimetype text/x-fossil-wiki
J comment <h1>Issue</h1>\r\nThe\strailing\sclose\sin\sthe\sfollowing\ssequence\sthrows\san\serror\sbut\sno\serror\smessage:\r\n<verbatim>\r\n%\sset\ssock\s[socket\s-async\slocalhost\s30001]\r\nsock420\r\n%\sfconfigure\s$sock\s-blocking\s0\r\n%\sputs\s$sock\sok\r\n%\sflush\s$sock\r\n%\sfileevent\s$sock\swritable\s{set\sx\s1}\r\n%\svwait\sx\r\n%\scatch\s{close\s$sock}\se\sd\r\n1\r\n%\sset\se\r\n%\sset\sd\r\n-code\s1\s-level\s0\s-errorstack\s{INNER\s{invokeStk1\sclose\ssock420}}\s-errorcode\sNONE\r\n-errorinfo\s{\r\n\s\s\s\swhile\sexecuting\r\n"close\s$sock"}\s-errorline\s1\r\n</verbatim>\r\n\r\nThis\sarises\son\sthe\sfollowing\splatforms:\r\n\s\s\s*\s\s\sTCL\s8.5.15\son\sWindows\sVista\s32\sbit\s\r\n\s\s\s*\s\s\sTCL\s8.6.1\son\sWindows\sVista\s32\sbit\r\n\s\s\s*\s\s\sTCL\s8.6.1\son\sLinux\stoo\s(Reported\sbei\sReinhard\sMax)\r\n\r\n<h1>Possible\sreasons</h1>\r\n\r\nThe\serror\sis\sgenerated\sby\sa\sbackround\sflush\ssheduled\sby\sthe\swritable\sevent.\r\nThe\serror\scode\sis\sstored\sin\sunreportedError.\r\nEventually,\sthe\serror\smessage\sis\smissing\sin\sunreportedMsg.\r\n\r\nA\sdebug\strace\son\stclIO.c:\r\n\r\n<h2>flush\s$sock</h2>\r\n\s\s\s*\s\s\stclIO.c:FlushChannel()\r\n\s\s\s*\s\s\scalls\stclWinSock.c:TclOutputProc("ok"),\swhich\sreturns\serror\sEWOULDBLOCK\r\n\s\s\s*\s\s\sSets\sflag\sBG_FLUSH_SCHEDULED\r\n\s\s\s*\s\s\sClears\serror\r\n\r\n<h2>vwait\sx</h2>\r\n\s\s\s*\s\s\stclIO.c:FlushChannel(calledFromAsyncFlush=1)\r\n\s\s\s*\s\s\scalls\stclWinSock.c:TclOutputProc("ok"),\swhich\stries\sto\swrite\sand\sreturns\serror\s126\r\n\s\s\s*\s\s\sSets\sstatePtr->unreportedError\s=\serrorCode\s(126)\r\n\s\s\s*\s\s\sstatePtr->unreportedMsg\s=\smsg\s(NULL)\r\n\s\s\s*\s\s\sCalls\sDiscardOutputQueued(statePtr)\r\n\s\s\s*\s\s\sFlag\sBG_FLUSH_SCHEDULED\sis\scleared\s(no\sdata)\r\n\r\n<h2>close\s$sock</h2>\r\n\s\s\s*\s\s\stclIO.c:Tcl_Close()\r\n\s\s\s*\s\s\s>\sflushcode\s=\sFlushChannel(interp,\schanPtr,\s0);\s->\sflushcode\s=\s126\r\n\s\s\s*\s\s\s>>\serrorCode\s=\sCloseChannel(interp,\schanPtr,\serrorCode);\s->\serrorCode\s=\s126\r\n\s\s\s*\s\s\s>>>\sresult\s=\sChanClose(chanPtr,\sinterp);\s->\sresult\s=\s0\r\n\s\s\s*\s\s\s>>>>\stclWinSock.c:TclCloseProc(),\swhich\ssucceeds\r\n\s\s\s*\s\s\s>>>\serrorCode\s=\sstatePtr->unreportedError;\s(126)\r\n\s\s\s*\s\s\s>>>\sTcl_SetChannelErrorInterp(interp,\sstatePtr->unreportedMsg);\s(no\saction,\sunreportedMsg\s=\sNULL)\r\n\s\s\s*\s\s\s>>>\sCloseChannel:\sreturn\serrorCode\s(126)\r\n\s\s\s*\s\s\s>>\sFLushChannel:\sreturn\serrorCode\s(126)\r\n\s\s\s*\s\s\s>\sif\s((flushcode\s!=\s0)\s||\s(result\s!=\s0))\s{\sreturn\sTCL_ERROR;\s}
J foundin 8.5.15
J is_private 0
J login oehhar
J priority 5\sMedium
J private_contact 0f366eb3e9e2fcab52b8ebacd197db9047186a5f
J resolution None
J severity Minor
J status Open
J submitter oehhar
J subsystem 24.\sChannel\sCommands
J title close\sreturns\sempty\serror\smessage\sif\sfailed\snon-blocking\swrite\sflush\spending
J type Bug
K 97069ea11aca3783949c0379725eed90f5573c23
U oehhar
Z 370549f223ef003eedb1377d412b8a55