scancode aborts when encountering a broken RPM archive

Đang mở Phù hợp với người mới
#5,407 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 3 ngày

@adeba4343-web đang làm issue này rồi.

Từ ngày 2/11/2026.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
62/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
tooling

Hướng nghiên cứu

Traceback trỏ tới src/packagedcode/rpm.py, nơi get_rpm_tags (khoảng dòng 87) tạo RPM(rpmf) và parse (khoảng dòng 293) gọi hàm này, cũng như tới src/packagedcode/pyrpm.py, nơi read_lead (khoảng dòng 425) ném RPMError khi magic number sai. Hãy bắt đầu bằng cách tái hiện lỗi crash trên tệp kiểm thử nghi ngờ tests/data/archive.rpm từ fuse-archive. Công việc hoàn thành khi quá trình quét không còn bị dừng hoặc treo với tệp không phải RPM, lỗi được xử lý hoặc bỏ qua, và worker pool tiếp tục chạy.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug

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.

Ngôn ngữ chính
Python
Star
2.7k
Fork
848
Merge trung bình
2 ngày 19 giờ
Pull request đã merge (30 ngày)
8

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của aboutcode-org/scancode-toolkit

Tất cả issue của aboutcode-org/scancode-toolkit

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.