Salut, y a-t-il une limite au nombre de fichiers que je peux ouvrir ? Je suis bloqué à 1021 fichiers.
Est-ce lié à MVE ? Veuillez publier la sortie de la console et une trace si possible.
Le programme a reçu le signal SIGABRT, interrompu.
[Passage au fil 0x7ff426a46700 (LWP 15483)]
0x00007ff42a1c7267 dans __GI_raise (sig=sig@entry=6)
à ../sysdeps/unix/sysv/linux/raise.c:55
55 ../sysdeps/unix/sysv/linux/raise.c : aucun fichier ou répertoire de ce type.
(gdb) bt
at ../sysdeps/unix/sysv/linux/raise.c:55
depuis /usr/lib/x86_64-linux-gnu/libstdc++.so.6
depuis /usr/lib/x86_64-linux-gnu/libstdc++.so.6
depuis /lib/x86_64-linux-gnu/libgcc_s.so.1
at /usr/include/c++/4.9/bits/basic_string.h:240
at /usr/include/c++/4.9/bits/basic_string.h:547
proxy=proxy@entry=0x1cd4af0, init_only=init_only@entry=false)
at view.cc:790
proxy=proxy@entry=0x1cd4af0, update=update@entry=false) at view.cc:739
this@entry=0x3fc, name="original", type=type@entry=mve::IMAGE_TYPE_UINT8)
---Taper
sur view.cc:405
at ../../libs/mve/view.h:436
at pthread_create.c:333
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Travaillez-vous avec la dernière version de MVE ? Le problème peut-il être reproduit de manière cohérente ? S'agit-il d'un ensemble de données particulièrement volumineux ? D'où avez-vous obtenu le message d'erreur Too many files open
, je ne le vois pas dans la sortie de la console.
Je l'ai reproduit plusieurs fois sur deux ordinateurs différents et toujours avec la dernière version de MVE. L'erreur se produit lors de la détection des caractéristiques et toujours au niveau du fichier 1021. L'ensemble de données est énorme et contient environ 16 000 images.
Voir ID 1013 (1920x1080), 1860 fonctionnalités, a pris 3268 ms.
Détection des fonctionnalités, vue 1021 sur 16295 (6,2%)...terminate appelé après avoir lancé une instance de 'util::Exception'
what() : Erreur lors de l'ouverture du fichier : Trop de fichiers ouverts
Abandonné (core vidé)
Plusieurs shells limitent le nombre de descripteurs de fichiers qu'un processus est autorisé à ouvrir. Dans bash, vous pouvez utiliser ulimit -n
pour vérifier et définir cette limite. Il est par défaut de 1024 et je suppose qu'il est au maximum dans votre cas (stdin, stdout, stderr, prebundle et 1020 autres vues).
Cependant, la question est pourquoi tant de vues sont-elles ouvertes simultanément ?
Encore trop de fichiers ouverts. ulimit bien sûr le "résout".
Nous allons jeter un autre regard.
Salut Jus80687,
nous avons essayé de reproduire le bogue avec le correctif appliqué, mais sans succès. Êtes-vous sûr d'avoir compilé une version à jour du code ?
De plus, après combien de fichiers l'erreur se produit-elle avec le correctif appliqué ? Pouvez-vous poster une trace quand cela se produit?
Pouvez-vous nous envoyer le contenu d'un des répertoires view_xxxx.mve de votre jeu de données s'il vous plaît ?
Merci d'avance.
Salut André,
oui, j'ai compilé la dernière version de MVE. Après le patch, l'erreur ne se produit plus exactement à la même vue, mais toujours autour de 1024. La solution de contournement avec ulimit fonctionne bien sûr toujours.
Je ne pense pas que cela soit lié à une vue spécifique puisque j'ai changé le nombre de photos plusieurs fois. Les images elles-mêmes sont extraites d'un film et ne contiennent aucune information EXIF.
La sortie de la console n'a pas changé mais je dois vérifier à nouveau le backtrace.
Merci pour ton aide
À ce stade, nous avons besoin de données supplémentaires pour reproduire le problème. Pouvez-vous s'il vous plaît nous envoyer un ZIP d'une de vos vues ? Merci.
Plus d'informations supplémentaires ? Sinon le sujet sera clos.
Commentaire le plus utile
Plusieurs shells limitent le nombre de descripteurs de fichiers qu'un processus est autorisé à ouvrir. Dans bash, vous pouvez utiliser
ulimit -n
pour vérifier et définir cette limite. Il est par défaut de 1024 et je suppose qu'il est au maximum dans votre cas (stdin, stdout, stderr, prebundle et 1020 autres vues).Cependant, la question est pourquoi tant de vues sont-elles ouvertes simultanément ?
page de manuel bash ulimit