【问题标题】:How should one deal with a new Tcl assertion (introduced in 8.5.18) that fires upon an IO operation?应该如何处理触发 IO 操作的新 Tcl 断言(在 8.5.18 中引入)?
【发布时间】:2015-07-16 12:05:26
【问题描述】:

我们基于 Tcl 的 Web 应用程序(OpenACS、NaviServer)提供上传和提取 ZIP 档案的功能。升级到最新版本的 Tcl (8.5.18) 后,服务器现在在处理提取的存档内容时崩溃并吐出此错误。

nsd: /usr/local/src/tcl/tcl8.5.18/unix/../generic/tclIO.c:5395: DoReadChars: Assertion `!((statePtr)->flags & ((1<<9))) || ((statePtr)->flags & ((1<<10))) || Tcl_InputBuffered((Tcl_Channel)chanPtr) == 0' failed.

此断言已在 Tcl 8.5.17 和 8.5.18 之间引入。断言是错误的还是过于严格,或者这是否暗示了应用程序级别的某种形式的错误?

【问题讨论】:

  • 它表示某种类型的错误。虽然不太了解代码的那一部分,但不能说更多。您需要联系 IO 层的维护者 Don Porter。
  • 感谢您的回复。我设法用相当小的 sn-p 代码(独立于 NaviServer 和 OpenACS)重现了这个问题,并将其发送给了 Don Porter。他很快就发现这是一个已知问题 - 请参阅问题的答案。

标签: tcl openacs


【解决方案1】:

事实证明,我遇到了一个在 2015 年 4 月修复的已知错误 (http://core.tcl.tk/tcl/info/879a0747bee593e2)。当 Tcl 8.5.19 发布时,使用它会让我的烦恼消失。在此之前,可以从 Tcl 开发源中工作,或者单独尝试补丁 (http://core.tcl.tk/tcl/info/4b964e7afb811898)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多