Forum for FLAK 1 (#69)

[Posting] Host crashed
Thread opener, Player 8 (The Evil Empire)
Posted Sun, 2022-04-10 04:24 GMT

I believe the host crashed. It is running for hours now...

[Posting] Re: Host crashed
Player 2 (The Lizards)
Posted Sun, 2022-04-10 07:40 GMT

I believe the host crashed. It is running for hours now...

Saw that, too, but wanted to get a cup of coffee first...

I still don't know what happened here, but I unstuck it. Of all things, Explore Map was running in circles. WTF?

I unstuck it by cancelling the Explore Map process. Thus it can be that you didn't get new planets today.

If anyone of you has any idea what can cause a plain, simple C program to run in circles with this call stack,

#0  _IO_new_file_underflow (fp=0x8825718) at fileops.c:607
#1  0xf75a7cfb in __GI___underflow (fp=fp@entry=0x8825718) at genops.c:356
#2  0xf75a63a8 in __GI__IO_file_xsgetn (fp=0x8825718, data=0xff7ffc16, n=2) at fileops.c:1410
#3  0xf75a8138 in __GI__IO_sgetn (fp=fp@entry=0x8825718, data=data@entry=0xff7ffc16, n=n@entry=2) at genops.c:495
#4  0xf759ba19 in __GI__IO_fread (buf=0xff7ffc16, size=1, count=2, fp=0x8825718) at iofread.c:42
#5  0x0805115e in ?? ()
#6  0x0804a020 in ?? ()
#7  0x0804a3a2 in ?? ()
#8  0x0804a4ef in ?? ()
#9  0x0804b4f3 in ?? ()
#10 0xf7551a63 in __libc_start_main (main=0x804b3ec, argc=2, argv=0xff7ffe04, init=0x8048aa4, fini=0x8067420, rtld_fini=0xf7744350 <_dl_fini>, stack_end=0xff7ffdfc) at libc-start.c:287
#11 0x08048e01 in ?? ()

while accessing util.dat files, I'm taking suggestions...

--Stefan

[Posting] Re: Host crashed
Player 2 (The Lizards)
Posted Sun, 2022-04-10 09:00 GMT

ok, fixed it. When ExploreMap was trying to understand your UTIL.DAT files (so you see the location of all planets you Sensor Sweep), it tried to read past the end due to a broken end-of-file check.

This has always been wrong, but got triggered by FLAK now writing Explosion markers.

I fixed it; next turn should run normally again.


--Stefan

--- explmap.c	3 Jun 2012 18:21:32 -0000	1.1
+++ explmap.c	10 Apr 2022 08:47:12 -0000
@@ -255,8 +255,7 @@
             sprintf(utilFileName, "util%d.dat", i);
             F = OpenInputFile(utilFileName, GAME_DIR_ONLY | NO_MISSING_ERROR);
             if (F != NULL) {
-                while (!feof(F)) {
-                    DOSRead16((Uns16 *)&header, 2, F);
+                while (DOSRead16((Uns16 *)&header, 2, F)) {
                     if (header.type == 6 /* Sensor Sweep */
                         || header.type == 23 /* Bioscan */
                         || (gConfig->DarkSenseLocates && header.type == 3))