scancode aborts when encountering a broken RPM archive
维护者通常 3 天内回复
@adeba4343-web 已经在做这个了。
开始于 2026年11月2日。
评估
调研方向
回溯信息指向 src/packagedcode/rpm.py 中的 get_rpm_tags(约第 87 行)构建 RPM(rpmf) 的位置,以及调用它的 parse(约第 293 行),还指向 src/packagedcode/pyrpm.py 中的 read_lead(约第 425 行),该函数在魔数错误时抛出 RPMError。请先使用 fuse-archive 中疑似的测试文件 tests/data/archive.rpm 复现这个崩溃。完成的标准是:扫描遇到非 RPM 文件时不再中止或挂起,错误被处理或跳过,并且工作进程池能够继续运行。
由索引模型根据 Issue 内容生成。
描述
While scanning the fuse-archive 1.22 source directory in a yocto build, scancode crashes and hangs forever:
Process ForkPoolWorker-15:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "/usr/local/lib/python3.12/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.12/multiprocessing/pool.py", line 125, in worker
result = (True, func(*args, **kwds))
^^^^^^^^^^^^^^^^^^^
File "/scancode-toolkit/src/scancode/cli.py", line 1456, in scan_resource
error, values_mapping = interruptor(runner, timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scancode-toolkit/src/scancode/interrupt.py", line 91, in interruptible
return NO_ERROR, func(*(args or ()), **(kwargs or {}))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scancode-toolkit/src/scancode/api.py", line 327, in get_package_data
package_datas = _get_package_data(
^^^^^^^^^^^^^^^^^^
File "/scancode-toolkit/src/scancode/api.py", line 276, in _get_package_data
return recognize_package_data(
^^^^^^^^^^^^^^^^^^^^^^^
File "/scancode-toolkit/src/packagedcode/recognize.py", line 62, in recognize_package_data
return list(_parse(
^^^^^^^^^^^^
File "/scancode-toolkit/src/packagedcode/recognize.py", line 136, in _parse
for parsed in handler.parse(location=location, package_only=package_only):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scancode-toolkit/src/packagedcode/rpm.py", line 293, in parse
rpm_tags = get_rpm_tags(location, include_desc=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scancode-toolkit/src/packagedcode/rpm.py", line 87, in get_rpm_tags
rpm = RPM(rpmf)
^^^^^^^^^
File "/scancode-toolkit/src/packagedcode/pyrpm.py", line 399, in __init__
self.read_lead()
File "/scancode-toolkit/src/packagedcode/pyrpm.py", line 425, in read_lead
raise RPMError('Wrong magic number: this is not a RPM file')
packagedcode.pyrpm.RPMError: Wrong magic number: this is not a RPM file
The offending file might be https://github.com/google/fuse-archive/blob/main/tests/data/archive.rpm.
- 主要语言
- Python
- 星标
- 2.7k
- 派生
- 848
- 平均合并
- 2 天 19 小时
- 30 天内合并 PR
- 8
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
aboutcode-org/scancode-toolkit 的其他 Issue
-
Four silent bugs: IsRequiredPhrase.license_expression returns None, find_in_path ignores later PATH changes, duplicate dict keys override license mappings可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭bug
难度 2/5 半天 新手友好度 65/100
aboutcode-org/scancode-toolkit#5405 ·
维护者通常 3 天内回复
-
parse_maintainer_name_email returns empty name and wrong email when string has "@" but no angle brackets可能已有人在做 @pujitha24 于 3 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 84/100
aboutcode-org/scancode-toolkit#5402 ·
维护者通常 3 天内回复
-
bug: Unreachable JSON extension and format validation in validate_input_path可能已有人在做 @0Cymantek0 于 23 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
aboutcode-org/scancode-toolkit#5351 · 1 条评论 ·
维护者通常 3 天内回复
-
CycloneDX output: metadata.properties[].value emits JSON array instead of string可能已有人在做 @0Cymantek0 于 23 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 62/100
aboutcode-org/scancode-toolkit#5349 · 1 条评论 ·
维护者通常 3 天内回复
-
Duplicate 'COPYLEFT' entries in legal file classification names in legal.py and classify.py可能已有人在做 @Pradeepbeleri 于 50 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 88/100
aboutcode-org/scancode-toolkit#5319 · 2 条评论 ·
维护者通常 3 天内回复
查看 aboutcode-org/scancode-toolkit 的全部 Issue
相似的 Issue
-
bump patch
难度 2/5 1-3 小时 新手友好度 72/100
autowarefoundation/autoware_carla_scenario#1321 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 1/5 1-3 小时 新手友好度 78/100
QuantConnect/Documentation#2838 ·
维护者通常 1 天内回复
-
get_all_subclasses must deduplicate by class identity可能已有人在做 @Gambit-Checkmate 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 15 天内回复
-
难度 2/5 1-3 小时 新手友好度 70/100
awslabs/route53-dynamic-dns-with-lambda#67 · 1 条评论 ·