Mve: 打开的文件太多

创建于 2015-08-31  ·  11评论  ·  资料来源: simonfuhrmann/mve

嗨,我可以打开多少个文件有限制吗? 我卡在 1021 个文件上。

最有用的评论

几个 shell 限制了允许进程打开的文件描述符的数量。 在 bash 中,您可以使用ulimit -n来检查和设置此限制。 它默认为 1024,我假设在您的情况下它已被最大化(stdin、stdout、stderr、prebundle 和 1020 个其他视图)。
然而问题是为什么有这么多视图同时打开?

bash ulimit 手册页

所有11条评论

这与MVE有关吗? 如果可能,请发布控制台输出和回溯。

程序收到信号 SIGABRT,已中止。
[切换到线程 0x7ff426a46700 (LWP 15483)]
__GI_raise (sig=sig@entry=6) 中的 0x00007ff42a1c7267
在../sysdeps/unix/sysv/linux/raise.c:55
55 ../sysdeps/unix/sysv/linux/raise.c:没有这样的文件或目录。
(gdb) BT

0 0x00007ff42a1c7267 在 __GI_raise (sig=sig@entry=6)

at ../sysdeps/unix/sysv/linux/raise.c:55

1 0x00007ff42a1c8eca 在 __GI_abort () at abort.c:89

2 0x00007ff42af1006d 在 __gnu_cxx::__verbose_terminate_handler() ()

来自 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

3 0x00007ff42af0dee6 在?? () 来自 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

4 0x00007ff42af0cee9 在?? () 来自 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

5 0x00007ff42af0d6ea 在 __gxx_personality_v0 ()

来自 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

6 0x00007ff42a789ed3 在?? () 来自 /lib/x86_64-linux-gnu/libgcc_s.so.1

7 0x00007ff42a78a3f7 在_Unwind_Resume ()

来自 /lib/x86_64-linux-gnu/libgcc_s.so.1

8 0x00000000004d58f1 在 _M_dispose (__a=..., this=)

at /usr/include/c++/4.9/bits/basic_string.h:240

9 ~basic_string (this=0x7ff426a457b0, __in_chrg=)

at /usr/include/c++/4.9/bits/basic_string.h:547

10 mve::View::load_image_intern (this=,

proxy=proxy@entry=0x1cd4af0, init_only=init_only@entry=false)
at view.cc:790

11 0x00000000004d5baa 在 mve::View::load_image ( this=this@entry=0x1cd4780 ,

proxy=proxy@entry=0x1cd4af0, update=update@entry=false) at view.cc:739

12 0x00000000004d5c30 在 mve::View::get_image (this=0x1cd4780,

this@entry=0x3fc, name="original", type=type@entry=mve::IMAGE_TYPE_UINT8)

- -类型继续,或者 q退出 - -
在 view.cc:405

13 0x0000000000435de7 在 get_byte_image (name="original", this=0x3fc)

at ../../libs/mve/view.h:436

14 sfm::bundler::Features::compute () at bundler_features.cc:56

15 0x00007ff42a99dc16 在?? () 来自 /usr/lib/x86_64-linux-gnu/libgomp.so.1

16 0x00007ff42a5636aa 在 start_thread (arg=0x7ff426a46700)

at pthread_create.c:333

17 0x00007ff42a298eed 在克隆 ()

at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

您正在使用最新版本的 MVE 吗? 问题能否持续重现? 这是一个特别大的数据集吗? 您从哪里得到Too many files open错误消息,我在控制台输出中看不到它。

我在两台不同的计算机上多次复制了它,并且总是使用最新版本的 MVE。 该错误发生在特征检测期间,并且始终在文件 1021 处。数据集很大,大约有 16000 张图片。

查看 ID 1013 (1920x1080),1860 个特征,耗时 3268 毫秒。
检测特征,查看 1021 of 16295 (6.2%)...在抛出 'util::Exception' 实例后调用终止
what():打开文件时出错:打开的文件太多
中止(核心转储)

几个 shell 限制了允许进程打开的文件描述符的数量。 在 bash 中,您可以使用ulimit -n来检查和设置此限制。 它默认为 1024,我假设在您的情况下它已被最大化(stdin、stdout、stderr、prebundle 和 1020 个其他视图)。
然而问题是为什么有这么多视图同时打开?

bash ulimit 手册页

打开的文件仍然太多。 ulimit 当然“解决”了它。

我们再看看。

嗨 Jus80687,
我们试图通过应用补丁来重现该错误,但没有成功。 你确定你已经编译了最新版本的代码吗?
另外,在应用补丁后,错误发生了多少个文件? 你能在它发生时发布回溯吗?
您能否将数据集的 view_xxxx.mve 目录之一的内容发送给我们?
提前致谢。

嗨安德烈,
是的,我编译了最新版本的 MVE。 补丁之后,错误不再发生在完全相同的视图中,但仍然在 1024 左右。当然,使用 ulimit 的解决方法仍然有效。
我认为这与特定视图无关,因为我更改了几次图片数量。 图片本身是从电影中提取的,没有 EXIF 信息。
控制台输出没有改变,但我必须再次检查回溯。
谢谢你的帮助

此时我们需要额外的数据来重现问题。 你能把你的观点发给我们一个邮编吗? 谢谢。

还有更多其他信息吗? 否则问题将被关闭。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

daleydeng picture daleydeng  ·  8评论

HelliceSaouli picture HelliceSaouli  ·  12评论

GustavoCamargoRL picture GustavoCamargoRL  ·  13评论

MaxDidIt picture MaxDidIt  ·  30评论

HelliceSaouli picture HelliceSaouli  ·  14评论