Ask Your Question
0

ros one-shot timer block bug?

asked 2018-08-04 00:35:15 -0500

DennisXie gravatar image

Hi, I meet an confuse issue about the mavros conn timeout timer, it is defined in the sys_status.cpp, as we know the one-shot flag means fire only once callback function while the timer duration time passed, everything works fine if no external timesync event of change the linux system time, it is also works fine if timer duration is greater than the time-diff change on the linux system time. But if the one-shot timer duration is less than the time-diff change on the linux system, then the one-shot timer will blocked at the timer.stop() call function and it always return true of the timer.hasPending() function, meanwhile it also block the mavros component. I checked the sourcecode of timer.cpp and timer_manager.cpp, seems it block at the mutex(waiting_mutex_), but I have no way to debug it due to I do not know how to change this sourcecode. As we know that, a timesync event of change linux time is a normally operation, seems such one-shot timer issue is too dangerous since it blocked the whole mavros process. Is anyone could help such issue? Many thanks forward.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2018-08-06 21:31:29 -0500

DennisXie gravatar image

seems it fix in new release version. please refer: ros/ros_comm issue #1130 and #1382 commit.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2018-08-04 00:35:15 -0500

Seen: 102 times

Last updated: Aug 06 '18