Hola, ¿hay un límite de cuántos archivos puedo tener abiertos? Me quedo atascado en 1021 archivos.
¿Está esto relacionado con MVE? Publique la salida de la consola y un seguimiento si es posible.
Programa recibido señal SIGABRT, Abortado.
[Cambiar al subproceso 0x7ff426a46700 (LWP 15483)]
0x00007ff42a1c7267 en __GI_raise (sig=sig@entrada=6)
en ../sysdeps/unix/sysv/linux/raise.c:55
55 ../sysdeps/unix/sysv/linux/raise.c: No existe tal archivo o directorio.
(gdb) bt
at ../sysdeps/unix/sysv/linux/raise.c:55
desde /usr/lib/x86_64-linux-gnu/libstdc++.so.6
desde /usr/lib/x86_64-linux-gnu/libstdc++.so.6
de /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)
---Escribe
en vista.cc:405
at ../../libs/mve/view.h:436
at pthread_create.c:333
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
¿Estás trabajando con la última versión de MVE? ¿Puede el problema ser reproducido consistentemente? ¿Es este un conjunto de datos particularmente grande? ¿De dónde obtuviste el mensaje de error Too many files open
? No puedo verlo en la salida de la consola.
Lo reproduje varias veces en dos ordenadores diferentes y siempre con la última versión de MVE. El error ocurre durante la detección de características y siempre en el archivo 1021. El conjunto de datos es enorme y tiene alrededor de 16000 imágenes.
Ver ID 1013 (1920x1080), 1860 características, tardó 3268 ms.
Detectando características, vista 1021 de 16295 (6.2%)... finalice la llamada después de lanzar una instancia de 'util::Exception'
what (): error al abrir el archivo: demasiados archivos abiertos
Anulado (núcleo volcado)
Varios shells limitan la cantidad de descriptores de archivos que un proceso puede abrir. Dentro de bash puede usar ulimit -n
para verificar y establecer este límite. El valor predeterminado es 1024 y supongo que está al máximo en su caso (stdin, stdout, stderr, prebundle y otras 1020 vistas).
Sin embargo, la pregunta es ¿por qué hay tantas vistas abiertas al mismo tiempo?
Todavía hay demasiados archivos abiertos. ulimit, por supuesto, lo "resuelve".
Echaremos otro vistazo.
Hola Jus80687,
Hemos intentado reproducir el error con el parche aplicado, pero no hemos tenido éxito. ¿Está seguro de haber compilado una versión actualizada del código?
Además, ¿después de cuántos archivos ocurre el error con el parche aplicado? ¿Puedes publicar un backtrace cuando suceda?
¿Puede enviarnos el contenido de uno de los directorios view_xxxx.mve de su conjunto de datos, por favor?
Gracias por adelantado.
Hola Andre,
sí, compilé la última versión de MVE. Después del parche, el error ya no ocurre exactamente en la misma vista, pero todavía alrededor de 1024. La solución alternativa con ulimit, por supuesto, todavía funciona.
No creo que esté relacionado con una vista específica ya que cambié la cantidad de imágenes varias veces. Las imágenes en sí se extraen de una película y no tienen información EXIF.
La salida de la consola no ha cambiado, pero tengo que volver a comprobar el seguimiento.
Gracias por tu ayuda
En este punto necesitamos datos adicionales para reproducir el problema. ¿Puedes enviarnos un ZIP de una de tus vistas? Gracias.
¿Más información adicional? De lo contrario, el problema se cerrará.
Comentario más útil
Varios shells limitan la cantidad de descriptores de archivos que un proceso puede abrir. Dentro de bash puede usar
ulimit -n
para verificar y establecer este límite. El valor predeterminado es 1024 y supongo que está al máximo en su caso (stdin, stdout, stderr, prebundle y otras 1020 vistas).Sin embargo, la pregunta es ¿por qué hay tantas vistas abiertas al mismo tiempo?
bash ulimit página del manual