我有使用 Coro、Coro::LWP 和 LWP::UserAgent 的脚本。我提出了一系列请求并通过 Coro 的 async {} 运行它们。然后我使用他们的结果并保存到文件。脚本运行数小时或有时数分钟,然后冻结。我已经进行了 strace 查找以了解它在做什么。有一堆动作,但在保存结果后,在冻结之前有这个动作:
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({1211417888, 0}, {1211354002, 168413065}) = ? ERESTART_RESTARTBLOCK (To be restarted)
--- SIGWINCH (Window changed) @ 0 (0) ---
restart_syscall(<... resuming interrupted call ...>) = ? ERESTART_RESTARTBLOCK (To be restarted)
--- SIGWINCH (Window changed) @ 0 (0) ---
restart_syscall(<... resuming interrupted call ...>
理解冻结有什么奇怪的吗?
在 PerlMonks 上交叉发布。
已解决:这是一个奇怪的睡眠时间,有非常多的秒数(比如 4000 天)。