Segmentation fault during shutdown on WSL
Personne n'a encore pris cette issue.
- Langage dominant
- C++
- Étoiles
- 2.2k
- Forks
- 242
- Merge moyen
- 11 min
- PR mergées (30 j)
- 1
Description
I have this simple program:
#include <polyscope/polyscope.h>
#include <polyscope/surface_mesh.h>
int main()
{
polyscope::init();
std::vector<std::array<double, 3>> vertices{{0, 0, 0}, {1, 0, 0}, {1, 1, 0}};
std::vector<std::array<int, 3>> faces{{0, 1, 2}};
std::vector<double> scalars{0.0, 1.0, 2.0};
polyscope::registerSurfaceMesh("my mesh", vertices, faces);
polyscope::getSurfaceMesh("my mesh")->addVertexScalarQuantity("my_scalar", scalars)->setEnabled(true);
polyscope::show();
}
I'm running it on WSL, backend:
[polyscope] Backend: openGL3_glfw -- Loaded openGL version: 4.1 (Core Profile) Mesa 23.2.1-1ubuntu3.1~22.04.3
Polyscope is at the latest master version (except the very latest commit which breaks compilation btw).
The program runs fine, but when I close the window, I get
Segmentation fault (core dumped)
I debugged into it and the crash happens at gl_engine.cpp, in the destructor of GLTextureBuffer:
GLTextureBuffer::~GLTextureBuffer() {
glDeleteTextures(1, &handle);
}
The call to glDeleteTextures is still reached, and the crash seems to happen within it. I verified that handle is a reasonable-looking number (34 in my case). If I remove setEnabled(true) and don't manually enable the scalar field either, the crash goes away. Let me know if I can provide any more info to debug this...
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
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.
Piste de recherche
Reproduisez le crash à l’arrêt sur WSL avec le programme C++ fourni, en vous concentrant sur la quantité scalaire activée. Commencez dans gl_engine.cpp, dans GLTextureBuffer::~GLTextureBuffer(), où il est signalé que glDeleteTextures échoue ; le travail est terminé lorsque la fermeture de la fenêtre ne provoque plus de faute de segmentation, y compris lorsque setEnabled(true) est utilisé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cpp
- Domaine
- computer-graphics
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100