[hatari-devel] Latest Hatari HG version gets stuck sometimes
Eero Tamminen
eerot at users.berlios.de
Sat Jul 4 00:15:23 CEST 2009
Hi,
Nicolas, could this be related to your recent video.c changes?
For some reason Hatari seems now to sometimes get stuck looping here
(doesn't update its screen, uses 100% CPU etc):
-----------------
1736 while ( ( PendingInterruptCount <= 0 ) && (
PendingInterruptFunction ) && ( ( regs.spcflags & SPCFLAG_STOP ) == 0 ) )
(gdb) next
1738 CALL_VAR(PendingInterruptFunction); /* call the
interrupt handler */
(gdb) next
1739 do_specialties_interrupt ( FALSE ); /* test if
there's an mfp/video interrupt and add non pending jitter */
-----------------
It will never exit this loop.
At that point, PendingInterruptCount doesn't anymore change, it
keeps at the same value:
------------------
(gdb) print PendingInterruptCount
$3 = -76800
(gdb) print ActiveInterrupt
$4 = 3
(gdb) print regs.spcflags
$5 = 0
------------------
The value can change between different Hatari runs though:
------------------
(gdb) print PendingInterruptCount
$1 = -115200
(gdb) print PendingInterruptFunction
$2 = (void (*)(void)) 0x8075690 <Video_InterruptHandler_EndLine>
(gdb) cont
Continuing.
^C
Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb79506b0 (LWP 4982)]
0x08060d53 in Int_AcknowledgeInterrupt () at int.c:292
292 InterruptHandlers[i].Cycles -=
CycleSubtract;
(gdb) print PendingInterruptCount
$3 = -115200
------------------
Mostly the backtrace is this:
------------------
(gdb) bt
#0 Int_AcknowledgeInterrupt () at int.c:266
#1 0x080756bb in Video_InterruptHandler_EndLine () at video.c:1642
#2 0x0807c3b9 in m68k_go (may_quit=1) at newcpu.c:1738
#3 0x08063bc9 in M68000_Start () at m68000.c:224
#4 0x08064709 in main (argc=6, argv=Cannot access memory at address 0x4
) at main.c:712
------------------
This issue can be triggered by running Hatari with ST TOS and:
/hatari -m --fast-forward 1 --frameskips 0
And after desktop comes up, toggling Pause on/off half a dozen times.
If you don't get this, re-run Hatari and try again.
(Pause/Unpause doesn't have or call anything related to interrupt handling.)
"make distclean && make" didn't help.
- Eero
More information about the hatari-devel
mailing list