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

Frequently hitting 'unreachable' errors with many source maps in memory

Đang mở
#476 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
30/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
javascript, rust, wasm
Lĩnh vực
tooling

Hướng nghiên cứu

Bắt đầu trong lib/source-map-consumer.js, tại khu vực quanh BasicSourceMapConsumer._parseMappings, _getMappingsPtr và originalPositionFor, sau đó kiểm tra lib/wasm.js cùng đường dẫn lỗi WebAssembly đã được báo cáo. Tái hiện workload với nhiều SourceMapConsumers và xác nhận liệu lỗi cấp phát có gây ra lỗi unreachable hay không. Hoàn tất khi các bên gọi có thể phân biệt điều kiện bộ nhớ này và khôi phục bằng cách loại bỏ dữ liệu đã được lưu trong bộ nhớ đệm.

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

Mô tả

I'm operating a service which sourcemaps JavaScript Self-Profiling data from production. We have several versions of our app running concurrently, with different source maps. The service keeps an LRU cache of SourceMapConsumers with a size limit roughly calculated from smc._mappings.length. This lets us keep around 100 SourceMapConsumers active at a time before running into the WebAssembly memory limit.

However, we often see unreachable errors like the following:

RuntimeError: unreachable
     at wasm://wasm/0002f63a:wasm-function[54]:0xb65c
     at wasm://wasm/0002f63a:wasm-function[22]:0x9647
     at BasicSourceMapConsumer._parseMappings (/work/node_modules/source-map/lib/source-map-consumer.js:306:47)
     at BasicSourceMapConsumer._getMappingsPtr (/work/node_modules/source-map/lib/source-map-consumer.js:289:12)
     at /work/node_modules/source-map/lib/source-map-consumer.js:500:16
     at Object.withMappingCallback (/work/node_modules/source-map/lib/wasm.js:125:13)
     at BasicSourceMapConsumer.originalPositionFor (/work/node_modules/source-map/lib/source-map-consumer.js:496:16)
     at file:///work/dist/mapTrace.js:44:34
     at file:///work/dist/mapTrace.js:53:11
     at Array.map (<anonymous>)

I believe this indicates an out-of-memory error, where source-map's rust code tries to allocate something but can't.

Could it be possible to gracefully recover from this? I believe Rust doesn't really support graceful recovery from OOM, but perhaps source-map could check whether there's enough memory available to allocate for a SourceMapConsumer before allocating, and throw some other kind of error? That would allow using that signal to drop some old data from our cache.

Ngôn ngữ chính
JavaScript
Star
3.7k
Fork
370
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

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 mozilla/source-map

Tất cả issue của mozilla/source-map

Issue tương tự

Thêm issue về JavaScript

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.