numpy::from_data calls vector::front and crashes (or has UB) when called with a scalar object

Ouverte Adaptée aux débutants
#526 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
1/5
Temps estimé
Moins d'une heure
Accessibilité débutants
84/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Calme
Stack technique
cpp
Domaine
backend

Piste de recherche

Commencez dans ndarray.cpp, au niveau de from_data_impl, où shape.front() et strides.front() sont utilisés pour des vecteurs potentiellement vides. Reproduisez ou inspectez le chemin des objets scalaires et vérifiez qu’il n’effectue plus d’accès invalide et ne provoque plus de plantage ; exécutez les tests existants pertinents du dépôt s’ils sont disponibles. Le travail est considéré comme terminé lorsque les appels scalaires à from_data fonctionnent sans comportement indéfini ni le plantage signalé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

In ndarray.cpp, the function from_data_impl calls &shape.front() and &strides.front() for possibly empty vectors. This is, at best, undefined behavior. At worst, it triggers a crash (observed on Redhat/rocky 8&9, where I'm assuming boost::python packages were built with -D_GLIBCXX_DEBUG).

RECOMMEND: change &vec.front() to vec.data() to avoid UB and potential crashes.

Langage dominant
C++
Étoiles
537
Forks
223
Merge moyen
11 h 22 min
PR mergées (30 j)
2

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de boostorg/python

Toutes les issues de boostorg/python

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.