[Bug] Protobuf message size limit of 2GB exceeded during final stage of diffing large binaries
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 15/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- java
- Lĩnh vực
- reverse-engineering
Hướng nghiên cứu
Báo cáo xác định luồng so sánh của BinDiff UI và quá trình tổng hợp cuối cùng của dữ liệu khớp là khu vực bị ảnh hưởng, nhưng không nêu tên tệp nguồn, kiểm thử hoặc điểm vào nào. Trước tiên, hãy tái hiện lỗi với các tệp .BinExport lớn và lần theo nơi thông điệp Protocol Buffers vượt quá 2GB. Được xem là hoàn thành khi diff chạy xong và hiển thị kết quả cho các tệp nhị phân lớn được mô tả.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
**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]`
- Ngôn ngữ chính
- Java
- Star
- 3.2k
- Fork
- 244
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của google/bindiff
-
Similarity score is capped at 0.65 for binaries with no flow graph edgesCó thể đã có người làm @zunnurawan đã nhận 32 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
question
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 42/100
-
ida pro 9.1 i64 db diff failsĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
[Bug] Error when buildĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 55/100
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Tất cả issue của google/bindiff
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
refinedmods/refinedstorage2#1421 ·
-
StepExamBenchmarkTest runs a loop and prints a timing but asserts nothingCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởjules
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
open-learning-exchange/myplanet#18199 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 4 ngày
-
Authorization 'Artifacts' is shown under category Run instead of Job in Authorization matrixĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Scheme-less stream URLs throw NullPointerException instead of URISyntaxExceptionCó thể đã có người làm @blihio đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
pedroSG94/RootEncoder#2218 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
apache/rocketmq-dashboard#6872 ·
Maintainer thường phản hồi trong vòng 3 ngày