[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