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

Data Abort after 522 seconds

I'm having some trouble with a data abort error.

I'm building a program to simulate the actions of a treadmill, and all is working fine (for now!) up until 522 seconds into the run time when the timer stops counting and the following flags up:

Data Abort: ARM Instruction at 0000092CH, Memory Access at 900499F4H

It seems very odd to me that it will work fine and access everything properly up until this time, as it's managed to cycle 521 times before.

I'm an improving novice so anyone that can help please give answers as though you were trying to teach your grandmother to program.

  • Actually, this kind of thing is quite common.

    This is why it is meaningless when people say, "I tested this and it works" - meaning that they just tried it a couple of times and didn't notice anything untoward!

    It probably means that there is some bug in your program, but that you can "get away with it" 521 times.

    For example, if you had some kind of a buffer with capacity for 521 items and no overflow checking, you would not notice the bug until at least the 522nd item - would you?

    You might not even notice the bug at the 522nd item if it happened not to corrupt anything of significance at the time - that bug might go undetected for some time until it happened to hit something important.

    You need to start tracking back from the exception handler to see where things went wrong...

    Is the 521 consistent? IF it is, there's a clue there...

  • The big question to ask - except for you to check out the addresses specified in your dump - is: What is your program doing?

    Is it storing any information (load history or similar)?
    Is it keeping time in multiple variables with rolling overflows?
    Is it logging data to any serial port?
    Is it printing using sprintf() and the time might suddenly require one digit extra?
    Does it have enough stack space?
    Do you use any dynamic memory?
    Have you checked every array and pointer you have so that pointers are initialized and no array is accessed out-of-bounds?

  • >Data Abort: ARM Instruction at 0000092CH, Memory Access at 900499F4H

    Well, if your "522 seconds/times" is consistent - you're lucky, I'm sure you'll find out what's causing the failure.
    What is the instruction on the 0000092CH address? Can you read ARM assembly?
    Can you post a snippet of code where this instr. is present?