[Bug] Protobuf message size limit of 2GB exceeded during final stage of diffing large binaries
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- java
- Área
- reverse-engineering
Línea de trabajo
El informe identifica el flujo de comparación de BinDiff UI y la agregación final de los datos de coincidencias como el área afectada, pero no menciona archivos de origen, pruebas ni puntos de entrada. Comienza reproduciendo el fallo con archivos .BinExport grandes y rastrea dónde el mensaje de Protocol Buffers supera los 2GB. Se considera terminado cuando el diff finaliza y muestra resultados para los binarios grandes descritos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
**Describe the bug**
When diffing two large and complex binaries (e.g., in the 500MB - 1.5GB range per file), the BinDiff engine successfully processes most of the diff but fails at the very final stage. The process terminates with an error message indicating that the Protocol Buffers message size limit of 2GB has been exceeded.
**To Reproduce**
1. Generate `.BinExport` files for two large, complex executables. The individual `.BinExport` files themselves are under 2GB.
2. Load both files into the BinDiff UI for comparison.
3. The diffing process runs for a significant amount of time, appearing to complete the matching algorithms.
4. At the end of the process, the error related to the 2GB Protobuf limit is thrown, and the diff fails to complete.
**Expected behavior**
The diff should complete successfully, and the results should be displayed, even for large and complex binaries where the internal match data is extensive.
**Analysis of Root Cause**
This bug suggests that BinDiff is attempting to serialize the **entire set of diff results**—including all function matches, basic block matches, and associated metadata—into a *single internal Protocol Buffers message*. For sufficiently complex binaries, the sheer volume of this match data can cause the resulting message to surpass the hard 2GB limit of the Protobuf library.
This is an architectural limitation in how the final results are aggregated and handled internally.
**Environment:**
* **OS:** `[e.g., Windows 11 / Ubuntu 22.04]`
* **BinDiff Version:** `[e.g., 8.0]`
* **Disassembler:** `[e.g., IDA Pro 8.4]`
* **System RAM:** `[e.g., 64 GB]`
- Lenguaje dominante
- Java
- Estrellas
- 3.2k
- Forks
- 240
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
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 google/bindiff
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
question
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
-
ida pro 9.1 i64 db diff failsAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
[Bug] Error when buildAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 55/100
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Todos los issues de google/bindiff
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
ci-failure-cause test-failure
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
nextcloud/notes-android#3367 ·
Los mantenedores suelen responder en 1 día
-
:wave: team-triage a:chore in:isolated-projects in:kotlin-dsl
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día