VectorOfArray with OffsetArray inner arrays returns garbage from A[i,j] (@inbounds after size-only check)
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 67/100
Piste de recherche
Start with src/vector_of_array.jl around lines 955–969, where getindex(A, I::Vararg{Int,N}) accesses the inner array, and inspect how its size check handles axes. Run the supplied OffsetArray reproducer, then verify the chosen behavior: translate indices using the inner array's axes or reject offset inner arrays. Confirm O[3, 1] and collect(O) no longer return garbage.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
A VectorOfArray whose inner arrays are OffsetArrays returns garbage values from A[i,j]. Only the size is checked; the axes are not.
using RecursiveArrayTools, OffsetArrays
O = VectorOfArray([OffsetArray([1.0, 2.0, 3.0], 0:2), OffsetArray([4.0, 5.0, 6.0], 0:2)])
O[3, 1] # 7.2e-322 (out-of-bounds read; the last element of column 1 is 3.0)
collect(O) # contains garbage
With --check-bounds=yes the same call throws BoundsError, which points at the @inbounds access in getindex(A, I::Vararg{Int,N}) (src/vector_of_array.jl ~955-969). The access goes into the inner array with 1-based indices after only a size check. It should either check axes and translate the index (firstindex), or reject offset inner arrays. Related: #28.
Found in a measurement audit of RecursiveArrayTools.jl master 02c477c (v4.5.3). It reproduces on Julia 1.12.4 and 1.10.12, and the reproducer above was re-run as written before filing.
🤖 Filed by Claude Code (model: claude-opus-5-5[1m]) on behalf of @ChrisRackauckas. The audit was done by a Claude Code Opus 5.5 subagent. Session: https://claude.ai/code/session_01LPHREnnonfLg1VcE1EJovv
- Langage dominant
- Julia
- Étoiles
- 234
- Forks
- 77
- Merge moyen
- 1 j 17 h
- PR mergées (30 j)
- 17
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de SciML/RecursiveArrayTools.jl
-
Docs: usage of j vs iOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
SciML/RecursiveArrayTools.jl#255 ·
Les mainteneurs répondent en général sous 2 jours
-
In-place broadcasting into a `VectorOfArray` mishandles arrays with fewer dimensionsPeut-être pris @ChrisRackauckas l’a pris il y a 8 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
SciML/RecursiveArrayTools.jl#680 ·
Les mainteneurs répondent en général sous 2 jours
-
ArrayPartition of GPU arrays: norm, dot, Vector, any scalar-index; no KernelAbstractions.get_backendOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
SciML/RecursiveArrayTools.jl#676 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 4/5 1-2 jours Accessibilité débutants 57/100
SciML/RecursiveArrayTools.jl#674 ·
Les mainteneurs répondent en général sous 2 jours
-
JET: similar_type(::Any) no-matching-method in RecursiveArrayToolsRaggedArrays (pre-existing QA red)Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
SciML/RecursiveArrayTools.jl#620 ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de SciML/RecursiveArrayTools.jl
Issues similaires
-
io
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
-
docs
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
JuliaGPU/GPUArrays.jl#837 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour