- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是一名安卓程序员。
今天我运行一个 Android 应用程序时遇到了此类错误。
FORTIFY_SOURCE: FD_SET: file descriptor >= FD_SETSIZE. Calling abort().
所以如果有人知道这个问题的答案请回复我。
最佳答案
您的进程打开了太多文件描述符或套接字,当达到操作系统限制时,您的应用程序将被终止。
您的应用不太可能合法地用完所有资源,这很可能是泄漏。您很可能错过了对套接字或文件资源的 Close() 调用。
我在使用相同代码的各种 Android 设备上遇到过这个问题。最常见的错误签名是:
01-27 15:50:52.431 I/DEBUG ( 172): pid: 12444, tid: 19014, oom: 0, name: DrmRequestHandl >>> YOUR_PACKAGE_NAME <<<
01-27 15:50:52.431 I/DEBUG ( 172): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
01-27 15:50:52.517 I/DEBUG ( 172): Abort message: 'FORTIFY_SOURCE: FD_SET: file descriptor >= FD_SETSIZE. Calling abort().'
您可以检查设备调用的描述符限制:
adb shell ulimit -n
作为解决问题的第一步,您可能需要弄清楚泄漏的资源类型。您可以通过以下方式找出应用的进程 ID:
adb shell ps
然后使用进程 ID,当您的应用程序仍在运行时,您可以检查打开的描述符(您需要 root 访问权限或可调试的应用程序/ROM):
adb shell ls -l /proc/[YOUR_PROCESS_ID]/fd
对于进程 12345 它将是这样的:
adb shell ls -l /proc/12345/fd
这将列出描述符。在较旧的 android 版本上,列表中可以有 1024 个项目,在 Lollipop 上,我看到 2048 是默认限制。
对于可调试应用程序,您可以使用run-as
(参见@Joe 的评论):
adb shell run-as com.mycompany.myapplication ls -l /proc/12345/fd
关于android - FORTIFY_SOURCE : FD_SET: file descriptor >= FD_SETSIZE. 调用中止(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30521826/
我需要从 1024 增加 FD_SETSIZE 值至 4096 .我知道最好使用 poll()/epoll()但我想了解什么是优点/缺点。主要问题是:我要重新编译glibc吗? ?我读了几个线程,其中
我遇到一个问题,即返回的文件描述符会逐渐增加到大于 FD_SETSIZE 的数字。 我的 tcp 服务器不断关闭,这需要我的客户端关闭套接字并重新连接。然后,客户端将尝试通过调用 socket 重新连
在服务器/客户端设置中,我有一个服务器通过少数(目前是 4 个)不同套接字与客户端连接。目前我使用带有计算 set_size 的 select,但是在值得使用 FD_SETSIZE 之前上限是多少?
我目前是 PHP 和 MySQL 的新手,但是,我正在尝试为 Club Penguin Emulator 运行 PHP 服务器代码,但是,随着越来越多的人加入并使加入变得异常困难,我没有运气由于 PH
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我想为我的系统增加 FD_SETSIZE 宏值。有什么办法可以增加 FD_SETSIZE 这样 select 就不会失败 最佳答案 根据标准,无法增加 FD_SETSIZE。一些程序和库(想到 lib
我们有一个使用 select() 设计的网络服务器,直到上周才真正看到太多负载,并且在我们的 500-1000 conn/s 负载下始终可以正常工作。然而,我们最近开始看到更高的负载(和尖峰)并遇到了
我编辑了 __FD_SETSIZE = 1024 到 4096: /usr/include/linux/posix_types.h /usr/include/x86_64-linux-gnu/bits
实际上,我尝试使用带有 java 的 bash 控制台在 opensuse 11 上启动 SIPP 3.3。当我用 开始 SIPP 时 proc = Runtime.getRuntime().exec
我是一名安卓程序员。 今天我运行一个 Android 应用程序时遇到了此类错误。 FORTIFY_SOURCE: FD_SET: file descriptor >= FD_SETSIZE. Call
我在新安装的 16"Macbook(带有 OSX 10.15.1 Catalina)上运行 MySQL@5.7 时遇到了一个大问题PDO::__construct():MySQL 服务器已经消失。 这
选择高于 255 的 fds 不检查 fd 是否打开。这是我的示例代码: #include #include #include #include int main() { fd_set
这些错误列表的含义是什么,更重要的是如何解决这些错误?如果有人也可以发表评论,那我应该期待什么可能的问题,这可能会促使我采取一些措施,因为我不清楚,因为我的应用程序正在运行并且显示正确 我发现了一个与
我是一名优秀的程序员,十分优秀!