VOGONS


0.70 for Mac Freezing

Topic actions

First post, by yerejm

User metadata
Rank Newbie
Rank
Newbie

I'm getting game freezes in 0.70 on a MacBook Pro (2.33 GHz C2D, 2 GB RAM), OSX 10.4. Has happened in Dune 2 and Albion. Happens after some time playing (say 10-20 minutes). Have not played other games long enough to see if it happens with them too.

The music continues playing, input usually frozen too, all graphic updates frozen (except rare times the mouse cursor stays movable). Does not matter if there is much happening in game or not (in Albion, going through a dialogue tree, saving a game, cutscene transition; in Dune 2, moving units, harvesting spice in current view, and battling).
Dune 2 only mounted C:, but Albion required CD mount as well as C.

Tried 0.70 with Dune 2 on Windows XP, Athlon 1.2 GHz, 512 MB RAM, Geforce Ti4200, but could not duplicate freezing. Seems alright on that platform.

Did not try 0.65 PPC build. Tried a couple 0.65 unofficial CVS builds, but did not duplicate the freeze.

In all cases, using DOSBox Preferences that came with the installation. Then tried with CPU cycles set at 10000. Tried OpenGL and surface outputs on MBP and had no difference in freezing occurring. Disabling game sound with its setup program does not stop freezing from occuring in play.

Reproducible, but unknown how to do it on demand.

Anyone else on Mac experiencing this?

Reply 3 of 141, by darkgamorck

User metadata
Rank Member
Rank
Member

I can verify this issue on OSX. I have a C2D Macbook Pro and the same thing happens. Except in my instance, the game music is still playing, the mouse in the game still moves, it's just the action in the game itself is frozen and nothing responds to my clicks inside the game. I don't think it's a Dune II issue as I've logged many hours on this game over the years and never noticed this. However I'd be hard pressed to say it's a core issue specifically since some stuff appears to be working still.....

Any ideas Dos Freak?

EDIT: Once I take focus away from DOSBox, trying to get the mouse pointer in-game to move again is impossible. And it appears that once the current music track runs out - the sounds goes as well.

Reply 4 of 141, by quintana007

User metadata
Rank Newbie
Rank
Newbie

Hi,

The firstposter said it exactly. It happens with X-Com - Enemy Unknown too. After 20 minutes or so the game freezes. Tried nearly all core and gfx settings. 😖

0.65 runs great.
Emac 1.25Ghz PPC, Ati 9200.

greets
GM

Reply 6 of 141, by yerejm

User metadata
Rank Newbie
Rank
Newbie

I got a fresh checkout and compiled with heavy debug. Problem still happens. Console output shows nothing obviously bad. Guess I'll have to use the debugger...?
How do I Alt-Pause on a MBP which does not have a pause key?

Reply 8 of 141, by yerejm

User metadata
Rank Newbie
Rank
Newbie

OK, I'll look for this mapper thing...

So far, it's stopping at the same place...

946339645: SBLASTER:DMA unmasked,starting output, auto 0 block 12098
946339645: SBLASTER:DMA Transfer:8-bits PCM Mono Single-Cycle freq 11764 rate 11764 size 12099
951855529: SBLASTER:Single cycle transfer ended
951855529: SBLASTER:Raising IRQ
951855959: PIC:1 mask EC
951855963: PIC:0 mask F8

Reply 10 of 141, by darkgamorck

User metadata
Rank Member
Rank
Member

Any updates on this? I tried modifying all kinds of settings myself but the issues eventually happens no matter what. I tried replicating this in the 0.66rc1 Universal Binary that was being distributed and it happens there as well. I am unable to compile my own version as I get the following error:

if g++ -DHAVE_CONFIG_H -I. -I. -I../../..  -I../../../include -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_THREAD_SAFE  -g -O2 -MT nullmodem.o -MD -MP -MF ".deps/nullmodem.Tpo" \
-c -o nullmodem.o `test -f 'nullmodem.cpp' || echo './'`nullmodem.cpp; \
then mv -f ".deps/nullmodem.Tpo" ".deps/nullmodem.Po"; \
else rm -f ".deps/nullmodem.Tpo"; exit 1; \
fi
nullmodem.cpp: In constructor 'CNullModem::CNullModem(Bitu, CommandLine*)':
nullmodem.cpp:102: error: invalid conversion from 'int' to '_TCPsocket*'
nullmodem.cpp:102: error: initializing argument 1 of 'TCPClientSocket::TCPClientSocket(_TCPsocket*)'
make[4]: *** [nullmodem.o] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

I followed the build instructions on the DOSBox wiki. I compiled SDL and SDL_net using the source downloads from the SDL site. I get the same error with the current CVS version as well. This is obviously something I'm missing since the 0.70 source code archive ought to compile fine. Any ideas?

Reply 14 of 141, by yerejm

User metadata
Rank Newbie
Rank
Newbie

I am seeing a short loop. Here's some image capture when it first happens and after a couple of F11s. After that, it repeats.

Attachments

  • dosbox1.png
    Filename
    dosbox1.png
    File size
    101.33 KiB
    Views
    3630 views
    File license
    Fair use/fair dealing exception
  • dosbox2.png
    Filename
    dosbox2.png
    File size
    101.28 KiB
    Views
    3631 views
    File license
    Fair use/fair dealing exception

Reply 15 of 141, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Ok thanks, that's very precise information (vret waiting, nothing
dangerous normally).
Place a breakpoint right after the conditional jump (move the cursor
bar over the line with cs:0x87 and hit f9), then let it run (f5) and see
if that breakpoint hits.

Reply 17 of 141, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I'm not sure if i can guide you further what to look for, but try adding some
logging to vga_misc.cpp, function vga_read_p3da (this cares about the
hret/vret bits that are read in this loop), that is put in there something like

LOG_MSG("timeInFrame: %.3f, vrstart: %.3f, vrend: %.3f",timeInFrame,vga.draw.delay.vrstart,vga.draw.delay.vrend);

and see if the game is still playable, and what happens to the values
when the hanging occurs (if...).

Reply 18 of 141, by darkgamorck

User metadata
Rank Member
Rank
Member

I finally got the code to compile. I simply removed SDL_net from my system. Even using the macports version didn't work. Anyway, I added the code wd and starting the game has become an act of congress now. The debugger screen is just spitting out that output continiously after I attempt to execute dune2.exe. It's been spitting out output to the debug window for 10 minutes with no end in sight...

Reply 19 of 141, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Well i feared that, maybe try adding a condition to the output like
if (retval>=8 ) LOG_MSG...
Maybe you can start dosbox through gdb or some other debugger
and break in when it's looping. Then trace to/place a breakpoint
at vga_read_p3da() and examine the data.