CI 碎片库存: 2026 个故障背后有三个不同的碎片类别
作者: ekaf创建于 2026年9月17日更新于 2026年9月17日
- 核心NLP准备性:两种故障模式(适用于 #3894) 这两种故障模式共占了 25 个入选项目中的 14 个。 1a. 9000 端口冲突 — 6 个项目,macOS / Python 3.12,
test_corenlp.py。setup_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_bounded,test_reviews_reader_does_not_hang_on_crafted_corpus,TestTimeoutIsTheGuarantee,TestSyllableTokenizerDoS,TestPaiceQuadratic等。它们在空闲运行程序和在--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. …
内容来源: nltk/nltk