仅在某些系统上出现 Asio 错误文件描述符
Asio Bad File Descriptor only on some systems
最近我使用 sleepy-discord 机器人库用 C++ 编写了一个 Discord-Bot。
现在,这里的问题是,当我 运行 机器人时,它向我显示以下错误:
[2021-05-29 18:30:29] [info] Error getting remote endpoint: asio.system:9 (Bad file descriptor)
[2021-05-29 18:30:29] [error] handle_connect error: Timer Expired
[2021-05-29 18:30:29] [info] asio async_shutdown error: asio.ssl:336462100 (uninitialized)
现在,我广泛搜索了这可能由什么触发,但答案总是说没有打开套接字等等。
问题是,它适用于很多系统,但昨天我租了一台 VM(与我的计算机相同的系统),这似乎是唯一给我这个问题的。
这可能是什么原因?
编辑:我被指示展示一个可重现的示例,但我不确定我将如何编写一个最小的示例,这就是为什么我 link 有问题的机器人:
https://github.com/ElandaOfficial/jucedoc
更新:
我对我正在使用的库进行了一些修改,并且能够提高 Websocketpp 日志级别,谢天谢地,我从中得到了更多信息:
[2021-05-29 23:49:08] [fail] WebSocket Connection Unknown - "" /?v=8 0 websocketpp.transport:9 Timer Expired
当您 s.remote_endpoint
在不再 connected/no 连接的套接字上时触发错误。
它会发生,例如当您尝试在 IO 错误后使用套接字打印端点时。通常的解决方法是在建立连接后立即存储远程端点的副本,这样您就不必在为时已晚时检索它。
关于为什么它会在特定 VM 上发生的问题,您必须将注意力转移到根本原因上。可能是 accept
失败了(可能是由于文件描述符数量、可用内存等限制)
最近我使用 sleepy-discord 机器人库用 C++ 编写了一个 Discord-Bot。 现在,这里的问题是,当我 运行 机器人时,它向我显示以下错误:
[2021-05-29 18:30:29] [info] Error getting remote endpoint: asio.system:9 (Bad file descriptor)
[2021-05-29 18:30:29] [error] handle_connect error: Timer Expired
[2021-05-29 18:30:29] [info] asio async_shutdown error: asio.ssl:336462100 (uninitialized)
现在,我广泛搜索了这可能由什么触发,但答案总是说没有打开套接字等等。 问题是,它适用于很多系统,但昨天我租了一台 VM(与我的计算机相同的系统),这似乎是唯一给我这个问题的。
这可能是什么原因?
编辑:我被指示展示一个可重现的示例,但我不确定我将如何编写一个最小的示例,这就是为什么我 link 有问题的机器人: https://github.com/ElandaOfficial/jucedoc
更新:
我对我正在使用的库进行了一些修改,并且能够提高 Websocketpp 日志级别,谢天谢地,我从中得到了更多信息:
[2021-05-29 23:49:08] [fail] WebSocket Connection Unknown - "" /?v=8 0 websocketpp.transport:9 Timer Expired
当您 s.remote_endpoint
在不再 connected/no 连接的套接字上时触发错误。
它会发生,例如当您尝试在 IO 错误后使用套接字打印端点时。通常的解决方法是在建立连接后立即存储远程端点的副本,这样您就不必在为时已晚时检索它。
关于为什么它会在特定 VM 上发生的问题,您必须将注意力转移到根本原因上。可能是 accept
失败了(可能是由于文件描述符数量、可用内存等限制)