-
-
Couldn't load subscription status.
- Fork 33.6k
Closed
Labels
armIssues and PRs related to the ARM platform.Issues and PRs related to the ARM platform.timersIssues and PRs related to the timers subsystem / setImmediate, setInterval, setTimeout.Issues and PRs related to the timers subsystem / setImmediate, setInterval, setTimeout.
Description
I'm having a problem where long (1 hour) timeouts registered via setTimeout() are not fired if the process has been idle for a while. If I then trigger some I/O by loading a page, the past-due timeout is immediately fired. Inspecting with gdb while in this 'hung' state shows that it's sitting in epoll_pwait():
#0 syscall () at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:38
#1 0x0085c790 in uv__epoll_pwait (epfd=<optimized out>, events=events@entry=0xbec35b40, nevents=nevents@entry=1024, timeout=timeout@entry=1789569, sigmask=sigmask@entry=67108864) at ../deps/uv/src/unix/linux-syscalls.c:340
#2 0x0085b2a6 in uv__io_poll (loop=loop@entry=0xa97510 <default_loop_struct>, timeout=1789569) at ../deps/uv/src/unix/linux-core.c:235
#3 0x0085189e in uv_run (loop=0xa97510 <default_loop_struct>, mode=UV_RUN_ONCE) at ../deps/uv/src/unix/core.c:328
#4 0x008009b0 in node::Start(int, char**) ()
#5 0xb6d2f632 in __libc_start_main (main=0x26cb09 <main>, argc=2, argv=0xbec39d84, init=<optimized out>, fini=0x864999 <__libc_csu_fini>, rtld_fini=0xb6f7c4c5 <_dl_fini>, stack_end=0xbec39d84) at libc-start.c:287
#6 0x0026ccfa in _start ()
I don't know if epoll_pwait() is exceeding/ignoring the timeout or what. Will do some more digging. This is running on a BeagleBone Black under Ubuntu Trusty, kernel 3.14.
Metadata
Metadata
Assignees
Labels
armIssues and PRs related to the ARM platform.Issues and PRs related to the ARM platform.timersIssues and PRs related to the timers subsystem / setImmediate, setInterval, setTimeout.Issues and PRs related to the timers subsystem / setImmediate, setInterval, setTimeout.