UB: (int) cast of a user double outside int range in dispatch / vm_index_is_int / flat_index_at
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ó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 72/100
Hướng nghiên cứu
Bắt đầu từ bốn vị trí đã nêu: builtin_dispatch trong src/builtins.c khoảng dòng 5946, vm_index_is_int trong src/vm.c, nhánh danh sách của flat_index_at trong src/builtins_tensor.c, và finite_num_to_byte. Tái hiện bằng đoạn mã dispatch trong issue với make asan để thấy báo cáo UBSan float-cast-overflow. Hoàn thành khi mỗi vị trí kiểm tra khoảng giá trị của double trước khi ép kiểu (NaN cho kết quả false), việc quét grep -n '(int)' src/*.c đã được phân loại, và chương trình tái hiện in ra lỗi value mà không có dòng runtime error: nào.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Found while building #1746 Phase 1. Several sites convert a user double to int with a bare (int) cast before any range check. For |x| >= 2^31 (today: up to ±1e308; under an IEEE build also inf/NaN) that is undefined behaviour, and UBSan's float-cast-overflow (on in every ASan variant) reports it.
Repro (any asan build):
define g(x) as:
return x
d is dispatch
print of (d of [[g], 1e308, 5])
-> src/builtins.c:5946:20: runtime error: 1e+308 is outside the range of representable values of type 'int' (then the intended dispatch key must be an integer raise).
Sites: builtin_dispatch (builtins.c, (int)eigs_num_arg(key_v, ...)), vm_index_is_int (vm.c), flat_index_at list arm (builtins_tensor.c), finite_num_to_byte ((int)fmod(x,256) with a NaN). The #1746 experiment guards only vm_index_is_int, only under -DEIGS_IEEE.
Done when
- Each listed site range-checks (
!(d >= INT_MIN && d <= INT_MAX)style, NaN-false) before the cast, and the sweepgrep -n '(int)' src/*.cover user-double conversions is classified. - The repro above is clean under
make asan(noruntime error:), and still raisesvalue.
- Ngôn ngữ chính
- C
- Star
- 3
- Fork
- 7
- Merge trung bình
- 8 giờ 43 phút
- Pull request đã merge (30 ngày)
- 253
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:gates bug good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
InauguralSystems/EigenScript#1782 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
eigenscript.h declares 8 observer functions that no longer existCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởarea:observer enhancement found-by:cold-read good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
InauguralSystems/EigenScript#1781 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Amalgamation compiles with warnings at -O0 (-Wreturn-type) and -O1 (-Wmaybe-uninitialized)Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởarea:embed bug found-by:code-review
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
InauguralSystems/EigenScript#1775 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
scan_int_tokens line/col fields are untestedCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởarea:stdlib found-by:critic kind:gate-defect
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
InauguralSystems/EigenScript#1693 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:gfx bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
InauguralSystems/EigenScript#1684 ·
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ự
-
[Issue]: hipsparselt.h C API as shipped now requires C23 -- ONLY because of missing include or guardĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
ROCm/rocm-libraries#13736 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
Maintainer thường phản hồi trong vòng 1 ngày
-
`inverse()` of a controlled `CUGate` drops the phase parameter γCó thể đã có người làm @rupasri118 đã nhận hôm nay. Đang mởbug mod: circuit
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Qiskit/qiskit#17223 · 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 68/100
PackageKit/PackageKit#1026 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
OpenPrinting/libcupsfilters#284 ·
Maintainer thường phản hồi trong vòng 1 ngày