[2.0] A long memo chain overflows the stack in the commit/settle path
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
- 22/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ệ
- javascript, typescript
- Lĩnh vực
- frontend
Hướng nghiên cứu
The bug is in the commit and settle walks, including settlePendingSource and the staged-error marking, which recurse once per memo node in the reactive graph. Start by reading those functions in the reactive core and reproducing with a warm-built chain of about 8,000 memos over a rejecting async source. Done means the walks are iterative with an explicit stack and the error surfaces as E:boomA at that depth.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
What happens
A chain of createMemo nodes over an async source, read under <Errored> with isPending, overflows the call stack in the commit/settle path once the chain is long enough.
- On
next, a warm-built chain of about 8,000+ memos surfacesE:Maximum call stack size exceededas the rendered error, in place of the source's own error. - With #4582 (the settle walk also stage-marks chain nodes via
stageMark), the walk recurses through chains too. At about 15,000 nodes it silently drops the stagedE:boomAframe instead of erroring.
Real apps rarely build chains this deep, but the error should be the source's (boomA), never a stack overflow, and a frame should never be dropped without an error.
Repro shape
- Make an async source that rejects with
new Error("boomA"). - Build a chain of N
createMemonodes, each reading the previous one, after the source has a first value (warm build). - Read the last memo under an
Erroredboundary, together withisPending(last), in a render effect that records frames. - Trigger the rejecting flight and flush.
With N ≈ 8,000 on next, the recorded error is Maximum call stack size exceeded. Expected: E:boomA.
Likely fix direction
Make the commit/settle walks (including settlePendingSource and the staged-error marking) iterative with an explicit stack, instead of recursing per node.
Found during review of #4582. It doesn't block that PR, because next already fails at a shallower depth.
- Ngôn ngữ chính
- TypeScript
- Star
- 36.2k
- Fork
- 1.1k
- Merge trung bình
- 10 giờ 10 phút
- Pull request đã merge (30 ngày)
- 505
Chuẩn bị môi trường
- Không có Dockerfile hay 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 solidjs/solid
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 22/100
Maintainer thường phản hồi trong vòng 1 ngày
-
What gets passed to the `when` prop of a `Show` still gets executed twice on SSRCó thể đã có người làm @brenelz đã nhận 4 ngày trước. Đang mở1.x
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
solidjs/solid#4447 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của solidjs/solid
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
riverqueue/river#1576 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[bug] A prompt queued during a run is assessed without its textCó thể đã có người làm @jwiegley đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
DevMortimer/pi-warden#211 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 84/100
mattermost/compass-design#191 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add unit tests for the organization admin role checkCó thể đã có người làm @SaffuSafwan đã nhận hôm nay. Đang mởarea/core good first issue help wanted
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
elmohq/elmo#1095 · 1 bình luận ·
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 62/100
HorusGoul/trizum#559 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày