Привет, есть ли ограничение на количество открытых файлов? Я застреваю на 1021 файле.
Это связано с MVE? Пожалуйста, опубликуйте вывод консоли и трассировку, если это возможно.
Программа получила сигнал SIGABRT, прервана.
[Переключение на поток 0x7ff426a46700 (LWP 15483)]
0x00007ff42a1c7267 в __GI_raise (sig=sig@entry=6)
в ../sysdeps/unix/sysv/linux/raise.c:55
55 ../sysdeps/unix/sysv/linux/raise.c: Нет такого файла или каталога.
(гдб) бт
at ../sysdeps/unix/sysv/linux/raise.c:55
из /usr/lib/x86_64-linux-gnu/libstdc++.so.6
из /usr/lib/x86_64-linux-gnu/libstdc++.so.6
из /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)
---Тип
при просмотре.cc:405
at ../../libs/mve/view.h:436
at pthread_create.c:333
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Вы работаете с последней версией MVE? Может ли проблема постоянно воспроизводиться? Это особенно большой набор данных? Откуда вы взяли сообщение об ошибке Too many files open
, я не вижу его в выводе консоли.
Я воспроизвел его несколько раз на двух разных компьютерах и всегда с последней версией MVE. Ошибка возникает во время определения признаков и всегда в файле 1021. Набор данных огромен и содержит около 16000 изображений.
Просмотр ID 1013 (1920x1080), 1860 функций, занял 3268 мс.
Обнаружение функций, просмотр 1021 из 16295 (6,2%).... завершение вызывается после создания экземпляра 'util::Exception'
what(): Ошибка при открытии файла: Слишком много открытых файлов
Прервано (сброшено ядро)
Некоторые оболочки ограничивают количество файловых дескрипторов, которые разрешено открывать процессу. В bash вы можете использовать ulimit -n
для проверки и установки этого ограничения. По умолчанию он равен 1024, и я предполагаю, что в вашем случае он исчерпан (stdin, stdout, stderr, prebundle и 1020 других представлений).
Однако вопрос в том, почему так много видов открыто одновременно?
По-прежнему слишком много файлов открыто. ulimit конечно "решает" это.
Мы посмотрим еще раз.
Привет Юс80687,
мы пытались воспроизвести ошибку с применением патча, но безуспешно. Вы уверены, что скомпилировали актуальную версию кода?
И ещё, после скольки файлов ошибка при наложенном патче? Можете ли вы опубликовать обратную трассировку, когда это произойдет?
Не могли бы вы прислать нам содержимое одного из каталогов view_xxxx.mve вашего набора данных, пожалуйста?
Заранее спасибо.
Привет Андре,
да, я скомпилировал последнюю версию MVE. После патча ошибка возникает уже не точно в том же представлении, а все еще около 1024. Обходной путь с ulimit, конечно, все еще работает.
Я не думаю, что это связано с конкретным представлением, так как я несколько раз менял количество изображений. Сами изображения извлечены из фильма и не имеют информации EXIF.
Вывод консоли не изменился, но мне нужно снова проверить обратную трассировку.
Спасибо за вашу помощь
На данный момент нам нужны дополнительные данные, чтобы воспроизвести проблему. Не могли бы вы прислать нам ZIP-файл одного из ваших просмотров? Спасибо.
Любая дополнительная информация? В противном случае вопрос будет закрыт.
Самый полезный комментарий
Некоторые оболочки ограничивают количество файловых дескрипторов, которые разрешено открывать процессу. В bash вы можете использовать
ulimit -n
для проверки и установки этого ограничения. По умолчанию он равен 1024, и я предполагаю, что в вашем случае он исчерпан (stdin, stdout, stderr, prebundle и 1020 других представлений).Однако вопрос в том, почему так много видов открыто одновременно?
справочная страница bash ulimit