Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Rust bundled runtime installation retains large native-image buffers on cold and warm startup

Đã đóng
#2,675 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
55/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ệ
node.js, rust
Lĩnh vực
performance, tooling

Hướng nghiên cứu

Bắt đầu tại điểm vào của Rust SDK là install_bundled_runtime(), sau đó truy vết install_hostless_assets và việc install_runtime_pair xử lý runtime.node. Chạy các lần tái hiện cô lập ở trạng thái lạnh và trạng thái ấm có dữ liệu seed được mô tả trong issue, bao gồm cả các tệp bị hỏng và bị cắt ngắn. Hoàn tất khi việc giải nén và xác minh có giới hạn vẫn bảo toàn các byte và mode, các cache chỉ đọc hợp lệ vẫn có thể sử dụng, các tệp bị hỏng được sửa chữa nguyên tử và các phép đo bao phủ các trường hợp lạnh, ấm và sửa chữa.

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

Mô tả

Description

The Rust SDK's install_bundled_runtime() path allocates complete runtime archive entries and reads installed files into full-size buffers. install_hostless_assets handles runtime.node, then install_runtime_pair extracts and compares it again. On macOS, those allocations can leave substantial physical memory retained by the allocator even after the installer returns, including when every installed file is already valid.

This is an installer-only reproduction, not evidence of a live-object leak or a measurement of a client/model session. No authentication, CLI subprocess or service request is needed.

Reproduction

At SDK revision a675b55531a9dfc647ee015e32d74279568550f3, build a release Rust executable with default bundled-cli features which calls github_copilot_sdk::install_bundled_runtime() once and stays alive for one second afterward. Run the executable with a fresh isolated HOME. For the warm case, first seed that same home's SDK cache using a separate process, then run the measured executable in a new process. Do not reuse the same process, because its OnceLock bypasses installation.

Measure process-lifetime peak RSS/physical footprint with macOS /usr/bin/time -l, and current RSS/physical footprint using proc_pid_rusage(RUSAGE_INFO_V0) after the one-second idle period. Keep allocation-stack logging disabled in these measurements.

Observed SDK-only baseline

Apple M4 Pro, 48 GiB RAM, macOS 26.6.2 (25G83), arm64; rustc 1.94.0; release optimization level 3, debug level 1. Public bundled runtime 1.0.84-8. Five independent processes per cohort; medians (minimum-maximum):

Cohort Retained physical footprint, MiB Installer seconds
Cold installation 155.438 (154.563-156.047) 0.880 (0.863-1.037)
Valid warm installation 174.360 (172.735-174.907) 1.031 (0.997-1.092)

The installed runtime.node is 71,166,736 bytes, SHA-256 839cd681c72cb92f27697d5e3e3ee96d7bb8df4234ffb5f7b442956828ec173a. Filtered embedded runtime archive SHA-256: 6c43b789080fc06b25d406af8fae709daa99f0724c4d290cc8a31160c5a3ad64.

A separate instrumented warm process recorded two page-rounded 71,172,096-byte VM allocations through the SDK runtime installer, one also through std::fs::read; after installation, vmmap reported 165.7 MiB in MALLOC_LARGE (empty) regions. Instrumented values are excluded from the comparison above.

Expected behavior

Runtime extraction and existing-file verification should use bounded buffers, preserve exact output bytes/modes, permit valid read-only warm caches, and repair corrupt files with staged atomic replacement. The full CLI installer is a separate path and outside the memory optimization scope.

A focused fix with runnable reproduction and cold/warm/corrupt/truncated measurements is prepared.

Ngôn ngữ chính
Java
Star
10.5k
Fork
1.5k
Merge trung bình
1 ngày 9 giờ
Pull request đã merge (30 ngày)
130

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

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 github/copilot-sdk

Tất cả issue của github/copilot-sdk

Issue tương tự

Thêm issue về Java

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.