Roland Tollenaar wrote: > Hi > >>> RTnet:rtskb allocation from real-time cache failed. >>> Assertion failed! drivers/xenomai/can/rtcan_raw.c: rtcan_tx_push:168 >>> dev->tx_socket=0 (3) TX skb still in use. >> >> Hm, this is not supposed to happen. > Which of the two?
The RTCAN assertion. Well, in fact, it can happen when the device goes bus-off or is stopped while a TX message is pending. The next message after (re-)start will the trigger this message. This is a bug but it should _not_ harm (either I remove the assertion or I reset properly the value of dev->tx_socket). The first one should be pretty clear. The rtskb pool seems to be exhausted. > >> Can you show the output of /proc/rtcan/devices and /proc/rtcan/sockets >> before and after the problem showed up. > > Below is an accumulation of what I think you are asking for. I am not > convinced that the rtskb allocation failed message is serious, as you > will see from the syslog and my comment above it only takes place when i > close my application. Although I try to close all connections neatly > certain threads still seem to be busy. See the errors I get on closing > the application. > > App running with no problem: > > [EMAIL PROTECTED]:~# cat /proc/rtcan/sockets > fd Name___________ Filter ErrMask RX_Timeout_ns TX_Timeout_ns RX_BufFull > TX_Lo > 2 rtcan2 1 0x00000 infinite infinite 0 1 > 0 rtcan2 -1 0x00000 infinite infinite 0 1 > > [EMAIL PROTECTED]:~# cat /proc/rtcan/devices > Name___________ _Baudrate State___ TX_Counter RX_Counter ____Errors > rtcan0 undefined stopped 0 0 0 > rtcan1 undefined stopped 0 0 0 > rtcan2 1000000 active 16321347 27633347 2367116 > > > App running with messages failing > > [EMAIL PROTECTED]:/var/log# cat /proc/rtcan/sockets > fd Name___________ Filter ErrMask RX_Timeout_ns TX_Timeout_ns RX_BufFull > TX_Lo > 2 rtcan2 1 0x00000 infinite infinite 0 1 > 0 rtcan2 -1 0x00000 infinite infinite 0 1 > > > [EMAIL PROTECTED]:/var/log# cat /proc/rtcan/devices > Name___________ _Baudrate State___ TX_Counter RX_Counter ____Errors > rtcan0 undefined stopped 0 0 0 > rtcan1 undefined stopped 0 0 0 > rtcan2 1000000 active 16850473 28691571 2367116 Oops, that much errors? > cat /var/syslog shows that the error only seems to come up when the > application closes. > > Only occurs on closing the application > Aug 13 13:01:28 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > Aug 13 13:02:14 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > Aug 13 14:02:34 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > Aug 13 14:03:36 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > Aug 13 14:18:39 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > Aug 13 14:19:33 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > Aug 13 14:19:58 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > Aug 13 14:21:27 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > Aug 13 14:22:10 (none) kernel: RTnet: rtskb allocation from real-time > cache failed > > > When I close the application I get these errors > > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed > rt_dev_recv: aborted because socket was closed You should handle this error properly. > rt_dev_ioctl: Bad file descriptor > Waiting for tasks to stop....low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_output(): Cannot Send > low_level_txandrx: failed: MAX_TRIES_TX: Giving up > DLL::txandrx() Error > PD_Buffer: Error sending PD > txandrx failed: > > > Does this shed any light on the matter? Hm, seems that your shutdown is not implemented properly. Wolfgang. _______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
