#3898·nltk

CI 碎片库存: 2026 个故障背后有三个不同的碎片类别

作者: ekaf创建于 2026年9月17日更新于 2026年9月17日
  1. 核心NLP准备性:两种故障模式(适用于 #3894) 这两种故障模式共占了 25 个入选项目中的 14 个。 1a. 9000 端口冲突 — 6 个项目,macOS / Python 3.12,test_corenlp.pysetup_module 构建了 CoreNLPServer(port=9000),而 try_port(9000)nltk/parse/corenlp.py:235 处失败,出现 OSError: [Errno 48] Address already in use,因为另一个 xdist 工作进程或遗留的服务器占用了该端口。这是原始 #3429 签名。 1b. 服务器准备失败 — 8 个项目,macOS / Python 3.10,test_corenlp_options_security.py::TestRealServerLaunch。该装置使用 port=try_port() 和一个临时端口 — 有意避免 9000 端口竞争 — 仍然失败:srv.start()nltk/parse/corenlp.py:366 处引发 CoreNLPServerError: Could not connect to the server,在更重的预加载 -preload tokenize,ssplit,pos,lemma,ner,parse,depparse -srparser -maxCharLength=-1 环境下。准备循环只在 requests.exceptions.ConnectionError 发生时重试;非 ok 响应(503 而 parse,depparse 加载时)立即引发错误。这可能是 macOS 在这里的实际故障模式。 3894 号问题的含义:如果该 PR 仅将 test_corenlp.py 切换到一个临时端口,则它将修复 1a 但不修复 1b。该 PR 应该或是覆盖两个调用位置,或是修复准备循环本身。 2. 牆时 DoS/ReDoS 上限(建议:单独的 PR) ~9 个测试断言牆时或线性扩展上限:test_hostile_pattern_over_single_long_token_is_boundedtest_reviews_reader_does_not_hang_on_crafted_corpusTestTimeoutIsTheGuaranteeTestSyllableTokenizerDoSTestPaiceQuadratic 等。它们在空闲运行程序和在 --numprocesses auto 争用下的分叉中通过。正确的测试存在测量问题。建议的修复:重试装饰器,或将上限重写为计数操作而不是已过时时间。与 #3894 不同的机制;不同的 PR。 3. 在自由线程 Python 上的线程耗尽(如果它重复发生) test_everygrams_alloc.py::test_oversized_default_does_not_allocate,Python 3.14t / ubuntu。everygrams 正确地引发了错误;测试自己的工作进程在 multiprocessing.Queue.put 中死亡 → RuntimeError: can't start new thread,然后在 except 处理器中再次死亡,因此父进程报告 工作进程未生成结果。断言消息(“工作进程引发了”)是误导性的,而管道将完全避免饲养线程。只见过一次。 4. …