I have a scenario where i have a libuv event loop and at some point of time 
in my application (C application), i start the timer

   uv_timer_init(&link->loop, timer);
   uv_timer_start(timer, modbus_ctl_periodic_monitor, 0, 1000);

But i see that there are times when this timer goes off periodically 
correctly from the beginning and repeats thereafter. But i see that some 
times, it takes few seconds (20 to 40 seconds in my case) for the timer to 
get fired first time and then it repeats correctly thereafter. 

I am not able to understand/debug why this initial delay is there 
(sometimes)

During the time when this initial delay is there i see that uv_run is stuck 
as can be seen below.
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x000000000041a78a in uv.epoll_wait ()
#2  0x0000000000418ddc in uv.io_poll ()
#3  0x0000000000410030 in uv_run ()
#4  0x00007ffff70b6802 in dslink_handshake_handle_ws () from 
/home/ghalwasi/work/iox-services/c-mlib/deps/libs/libsdk_dslink_c.so
#5  0x00007ffff70b25db in dslink_init () from 
/home/ghalwasi/work/iox-services/c-mlib/deps/libs/libsdk_dslink_c.so


When starts working, i see that uv_run has called uv_run_timers. 
(gdb) bt
#0  0x00007ffff6ba3c53 in select () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ffff6e7daf5 in _connect (sockfd=29, 
addr=addr@entry=0x7ffff3754bd0, addrlen=addrlen@entry=16, 
ro_tv=ro_tv@entry=0x7fffdc0079e0) at modbus-tcp.c:284
#2  0x00007ffff6e7dbcc in _modbus_tcp_connect (ctx=0x7fffdc0079d0) at 
modbus-tcp.c:344
#3  0x000000000040ca63 in mb_master_connect (mb_ctl=0x7fffc800d190) at 
modbus_master.c:67
#4  0x000000000040b868 in modbus_read_snapshot (mb_ctl=0x7fffc800d190) at 
modbus_ctrl.c:523
#5  0x000000000040bac4 in modbus_ctl_periodic_monitor 
(timer=0x7fffc8010690) at modbus_ctrl.c:569
#6  0x00000000004170ae in uv.run_timers ()
#7  0x000000000040ff9a in uv_run ()
#8  0x00007ffff70b6802 in dslink_handshake_handle_ws () from 
/home/ghalwasi/work/iox-services/c-mlib/deps/libs/libsdk_dslink_c.so

 
Can someone shed more light on this and help me resolve this issue.. 

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to