This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

os_get_first data abort (caused by os_rdy)

Hello,

I am having an issue with RL-ARM RTX where I get a data abort in the os_get_first function.

The reason that I get the data abort is that my os_rdy table has had its p_lnk pointer loaded with an invalid address--it appears that somehow a non-existent task has worked its way on to my os_rdy table (that is to say that at one point os_rdy.p_lnk = 0, and then the kernel did this: os_rdy.p_lnk = os_rdy.p_link->p_lnk).

I have found forum posts of other people having this problem -- unfortunately no solutions were offered and I am unable to reply to their threads:
http://www.keil.com/forum/docs/thread12032.asp
http://www.keil.com/forum/docs/thread12671.asp
http://www.keil.com/forum/docs/thread7618.asp

This condition occurs very rarely -- on the order of once every 24 hours. It always seems to occur shortly after an interrupt that makes use of the isr_mbx_send and isr_evt_set functions -- but this might be coincidence.

I am running RV MDK V3.70 and RL-ARM V3.70. My MCU is the LPC2468.

Any advice would be greatly appreciated!

Thanks,
Eric

Parents
  • Well, yes and no. I don't know what the direct cause of the problem is, but I did manage to make it go away by doing one of two things.

    Either 1: removing my isr os calls from interrupts (namely isr_event_set and isr_sem_send). Are you using either of these functions?

    OR, 2: consolidating some of our tasks so that we only had eight running. How many tasks do you have running?

    Either of these fixes completely removed the problem for us. Strangely enough, setting all of our vectored interrupts to the same priority made the problem happen much more frequently.

    I should note that it is possible our code was corrupting the OS. However, all of the os structures looked uncorrupted at the instant of the problem. Keil has not had any luck tracking this down themselves. But I recommend calling in and starting a case number. You can have them reference my case: 438460.

    Please keep me posted as you debug this. I am very interested in finding the cause of this problem.

    -Eric

Reply
  • Well, yes and no. I don't know what the direct cause of the problem is, but I did manage to make it go away by doing one of two things.

    Either 1: removing my isr os calls from interrupts (namely isr_event_set and isr_sem_send). Are you using either of these functions?

    OR, 2: consolidating some of our tasks so that we only had eight running. How many tasks do you have running?

    Either of these fixes completely removed the problem for us. Strangely enough, setting all of our vectored interrupts to the same priority made the problem happen much more frequently.

    I should note that it is possible our code was corrupting the OS. However, all of the os structures looked uncorrupted at the instant of the problem. Keil has not had any luck tracking this down themselves. But I recommend calling in and starting a case number. You can have them reference my case: 438460.

    Please keep me posted as you debug this. I am very interested in finding the cause of this problem.

    -Eric

Children