Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

This seems like a Linux SocketCAN programming question, since you're having trouble with SocketCAN and not with ROS.

I haven't used SIGIO, but I suspect that like other signals, if a signal is already queued for processing the OS will not queue another signal until the first has been processed. It looks like your messages are coming in quickly enough that this could be happening.

ROS shouldn't be doing anything that would change the message delivery order, but putting together a simpler program that doesn't use ROS may help you isolate the issue.

I think the socketCAN layer in linux is supposed to deliver messages in order, but I've seen a few posts on the linux-can mailing list over the past year from people reporting bugs in message delivery order. I suggest you review the mailing list archives and look for potential bugs in your CAN driver: http://vger.kernel.org/vger-lists.html#linux-can . If you don't find anything, I suggest that you join the mailing list and ask.