Arena-escaping values leak 17,800 bytes at exit (xcalloc/xstrdup in arena.c) — pre-existing, and no suite program exercises the shape
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 52/100
Hướng nghiên cứu
Start with src/arena.c, especially xcalloc at line 58 and xstrdup at line 79, then run the preserved arena-escape reproduction with ASAN_OPTIONS=detect_leaks=1. Add an equivalent escape-shape program to the suite corpus before addressing the ownership leak. Done means the corpus program passes the ordinary ASan lane without the reported 17,800-byte leak.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
A program that lets arena-allocated values escape their arena leaks 17,800 bytes at exit under ASan, and the leak is in src/arena.c's own allocators.
Reproduction
The program is a blind critic's arena-escape probe from the #1183 review (a loop that builds strings inside a scope and returns them outward). Any equivalent shape should do; the exact file is preserved at /tmp/strcrit-r4b/c2_21_arena_escape.eigs.
ASAN_OPTIONS=detect_leaks=1 build/asan/eigenscript c2_21_arena_escape.eigs
Direct leak of 14400 byte(s) in 200 object(s) allocated from:
#1 xcalloc src/arena.c:58
Indirect leak of 3400 byte(s) in 200 object(s) allocated from:
#1 xstrdup src/arena.c:79
SUMMARY: AddressSanitizer: 17800 byte(s) leaked in 400 allocation(s).
Exit code 1.
It is PRE-EXISTING — measured, not assumed
Surfaced while reviewing the string cached-length branch (#1183), so the obvious suspicion was that the change caused it. It does not. Both trees were built ASan from source and run on the identical program:
| tree | result |
|---|---|
main @ adf529c, no change |
17800 byte(s) leaked in 400 allocation(s) |
str-cached-length, with the change |
17800 byte(s) leaked in 400 allocation(s) |
Byte-identical, allocation-count identical. The branch is not implicated, and it is filed here rather than counted against it.
Why the suite does not see it
The full ASan suite is green at 5280/5280 with a leak tally of 0, on the same build that leaks here. So this shape is absent from the suite corpus — a green suite is evidence about the corpus, not about the runtime. The arena's escape path is the part with no program exercising it.
That is the more useful half of this report: lib/ and the test corpus contain no program that lets a meaningful number of arena values escape, so the arena/heap ownership seam has no standing witness. Related prior art in this area: the arena-vs-heap reference asymmetry class, where an arena list holding heap items is the failure mode.
Suggested next step
Add the escape shape to the suite corpus first, so the leak is visible to the ordinary ASan lane, then fix. A fix without a corpus program that fails beforehand is unverifiable by the repo's own gates.
- Ngôn ngữ chính
- C
- Star
- 3
- Fork
- 7
- Merge trung bình
- 4 giờ 15 phút
- Pull request đã merge (30 ngày)
- 106
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Có Dockerfile hoặc tệp Docker Compose
- 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 InauguralSystems/EigenScript
-
area:lint-tooling bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
InauguralSystems/EigenScript#1340 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:stdlib found-by:code-review kind:silent-wrong
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
InauguralSystems/EigenScript#1338 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:lint-tooling found-by:critic kind:docs-drift
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
InauguralSystems/EigenScript#1335 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:ci found-by:critic kind:gate-defect
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
InauguralSystems/EigenScript#1311 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enrolment: decide test_gc_runner_controls.py (exempt vs enrol) and whether floors need a ratchetĐang mởarea:gates found-by:critic kind:decision
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
InauguralSystems/EigenScript#1280 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của InauguralSystems/EigenScript
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
sandialabs/seacas#945 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
ARM-software/sysarch-acs#556 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
netdata/netdata#24062 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày