scancode aborts when encountering a broken RPM archive
Los mantenedores suelen responder en 2 días
@adeba4343-web ya está trabajando en esto.
Desde el 2/11/2026.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 62/100
Línea de trabajo
El traceback apunta a src/packagedcode/rpm.py, donde get_rpm_tags (alrededor de la línea 87) construye RPM(rpmf) y parse (alrededor de la línea 293) la llama, y a src/packagedcode/pyrpm.py, donde read_lead (alrededor de la línea 425) lanza RPMError ante un número mágico incorrecto. Empieza reproduciendo el fallo con el archivo de prueba sospechoso tests/data/archive.rpm de fuse-archive. Se considera terminado cuando el escaneo ya no se interrumpe ni se queda colgado con un archivo que no es RPM, el error se maneja o se omite, y el pool de workers sigue funcionando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 2.7k
- Forks
- 848
- Merge medio
- 2 d 19 h
- PR fusionados (30 d)
- 8
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aboutcode-org/scancode-toolkit
-
Four silent bugs: IsRequiredPhrase.license_expression returns None, find_in_path ignores later PATH changes, duplicate dict keys override license mappingsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug
Dificultad 2/5 Medio día Aptitud para principiantes 65/100
aboutcode-org/scancode-toolkit#5405 ·
Los mantenedores suelen responder en 2 días
-
parse_maintainer_name_email returns empty name and wrong email when string has "@" but no angle bracketsPosiblemente ocupada @pujitha24 la tomó hace 3 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
aboutcode-org/scancode-toolkit#5402 ·
Los mantenedores suelen responder en 2 días
-
bug: Unreachable JSON extension and format validation in validate_input_pathPosiblemente ocupada @0Cymantek0 la tomó hace 23 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
aboutcode-org/scancode-toolkit#5351 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
CycloneDX output: metadata.properties[].value emits JSON array instead of stringPosiblemente ocupada @0Cymantek0 la tomó hace 23 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
aboutcode-org/scancode-toolkit#5349 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Duplicate 'COPYLEFT' entries in legal file classification names in legal.py and classify.pyPosiblemente ocupada @Pradeepbeleri la tomó hace 51 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
aboutcode-org/scancode-toolkit#5319 · 2 comentarios ·
Los mantenedores suelen responder en 2 días
Todos los issues de aboutcode-org/scancode-toolkit
Issues similares
-
area:cli bug difficulty:1
Dificultad 1/5 1-3 horas Aptitud para principiantes 87/100
MakazhanAlpamys/Soup#2491 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
microsoft/onnxscript#3155 ·
Los mantenedores suelen responder en 4 días
-
IFEval nth-paragraph checker reads the wrong paragraph when a blank separator is presentPosiblemente ocupada @chetana1410 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
EleutherAI/lm-evaluation-harness#4530 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
sv_SE vat_id() has 14 digits: the "16" organisation number prefix is keptPosiblemente ocupada @kevin9327 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 19 días