af.features.Features crashes when its __del__ method is called

Abierto
#268 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
api

Línea de trabajo

Los puntos de entrada indicados son af.orb, Features.get_xpos(), Features.get_ypos() y Features.del; primero ejecuta el mínimo ejemplo funcional proporcionado en Windows con ArrayFire 3.8.0. Rastrea la vida útil del objeto cuando los arrays de posición quedan fuera de ámbito y, después, verifica que eliminar features ya no provoque un fallo silencioso y que el caso de posición devuelta siga funcionando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

When using a Features() object, arrayfire crashes silently when calling the object's __del__() method if the object's get_xpos() method has already been deleted (or has fallen out of scope).

Potentially due to a similar root case as mentioned in #169 (or due to the changes made as a result of this in commit a9031fb5e0db371bc88c958f0b8d43efd7fe8f45)

Running on Windows; using arrayfire 3.8.0.

Minimum working example:

import arrayfire as af

def get_feature_locations(features):
    # Get x and y positions of features
    x_pos = features.get_xpos()
    y_pos = features.get_ypos()
    
    # If this is uncommented, the code works as intended
    # return x_pos, y_pos

img = af.randn(d0=500, d1=500)
features, descriptors = af.orb(img, threshold=1, max_features=10, num_levels=1)
feature_locations = get_feature_locations(features)

print("Before delete")
del features
print("After delete")

Which outputs:

Before delete

Uncommenting line 10 (return x_pos, y_pos) outputs:

Before delete
After delete

Thanks!

Lenguaje dominante
Python
Estrellas
422
Forks
63
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de arrayfire/arrayfire-python

Todos los issues de arrayfire/arrayfire-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.