我有一个控制台应用程序(。NET CORE 2.1.1),该应用程序仅打开8个TCP连接进行读写,每个连接的数据速率在大多数情况下约为200Byte /秒。运行良好,直到大约7或8个小时后,它随机崩溃,我已将AppDomain.CurrentDomain.UnhandledException
附加到日志记录中,但是在这些情况下,它从未被调用,而且我似乎还显示了一些额外的信息<在应用程序崩溃并退出时在控制台中strong> strong ,它们是:
./ myApp:重定位错误:/pathToMyApp/libclrjit.so:符号pthread_, 在libpthread.so.0文件中未定义具有链接时间的版本GLIBC_2.4 参考
和
公交错误
和
中止
为了进行进一步的调试,我遵循了enable core dump in linux来启用核心转储,这是我做的:
$> mkdir -p /tmp/cores
$> chmod a+rwx /tmp/cores
$> echo "/tmp/cores/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern
为了测试,我输入了命令:
$> kill -s SIGSEGV $$
我可以在 /tmp/cores/core.bash.1284.raspberrypi.1532411173
上看到创建的转储但是我从来没有看到我的应用程序创建了转储,尽管崩溃每天都发生,而且,我什至尝试通过以下方式手动杀死myApp来模拟崩溃:kill myAppProcessId
,但是仍然没有运气看到任何转储文件
稍后,我将我的应用程序添加到守护程序模式,这一次我也可以在syslog中看到某事:
7月17日08:30:51 raspberrypi systemd 1:myApp.service:主要流程 退出,代码=已杀死,状态= 6 / ABRT
7月17日08:30:51 raspberrypi systemd 1:myApp.service:设备进入失败状态。
7月17日08:30:51 raspberrypi systemd 1:myApp.service:失败,结果为“信号”。
7月17日08:31:01 raspberrypi systemd 1:myApp.service:服务 延迟时间,安排重新启动。
但是,仍然不会在路径上看到任何转储文件。
有人可以帮忙吗?