First step is the check the timing, has it had a cambelt change recently? I might be that the belt was put back on a tooth out.
If the timing is ok then it is likely to be the hall sensor, I ended up buying a reconditioned dizzy with brand new sender and it solved the problem for me.