Emitter.cpp:471 error, corrupted maplist.con

Brad Davidson kiloman at oatmail.org
Fri Dec 13 14:54:42 EST 2002


Not sure if anyone else has run into this. It's not fatal, but didn't run into
it on Tobruk.

My maplist.con file is as follows:
game.addLevel Iwo_Jima
game.addLevel Tobruk
game.addLevel Bocage
game.addLevel GuadalCanal
game.setCurrentLevel Iwo_Jima

After loading the game and waiting for connections, the console spams the line:
STUB: might be important {Engine/WorldObjTemplFx/Emitter.cpp:471}.
at a rate of about 60 lines per second. I can see other events going on when I
connect and play, but they are scrolled off the screen immediately.

When I quit the server, the maplist.con was as follows:
---
<level list>
game.setCurrentLevel Tobruk
a
---

To test, I added the all the maps to the cycle, and tested to see what happens
on each map.
---
game.addLevel Battle_of_the_Bulge
game.addLevel Battleaxe
game.addLevel Berlin
game.addLevel Bocage
game.addLevel El_Alamein
game.addLevel Gazala
game.addLevel GuadalCanal
game.addLevel Iwo_Jima
game.addLevel Kharkov
game.addLevel Kursk
game.addLevel Market_Garden
game.addLevel Midway
game.addLevel Omaha_Beach
game.addLevel Stalingrad
game.addLevel Tobruk
game.addLevel Wake
game.setCurrentLevel Battle_of_the_Bulge
---

Battle_of_the_Bulge:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Battleaxe
the_Bulge
-
Battleaxe:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Berlin
xe
-
Berlin:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Bocage
-
Bocage:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel El_Alamein
-
El_Alamein:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Gazala
ein
-
Gazala:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel GuadalCanal
-
GuadalCanal:
Loads OK, SCROLLS. maplist.con set to:
game.setCurrentLevel Iwo_Jima
al
-
Iwo_Jima:
Loads OK, SCROLLS. maplist.con set to:
game.setCurrentLevel Kharkov
-
Kharkov:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Kursk
v
-
Kursk:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Market_Garden
-
Market_Garden:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Midway
Garden
-
Midway:
Loads OK, SCROLLS. maplist.con set to:
game.setCurrentLevel Omaha_Beach
-
Omaha_Beach:
Loads OK, SCROLLS. maplist.con set to:
game.setCurrentLevel Stalingrad
-
Stalingrad:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Tobruk
rad
-
Tobruk:
Loads OK, no scrolling. maplist.con set to:
game.setCurrentLevel Wake
k
-
Wake:
Loads OK, SCROLLS. maplist.con set to:
game.setCurrentLevel Battle_of_the_Bulge
-

So here's the pattern for the weird map cycle.
If the new game.setCurrentLevel line is shorter than the last one, then the
maplist.con file is corrupted.
How?
Looks to me like the server is doing the following:
Finds the beginning of the current game.setCurrentLevel line
    game.setCurrentLevel Battle_of_the_Bulge
Replaces, starting at the first char, the old line with a new one specifying the
next map in the cycle, followed by a newline char (for viewing sake, a ^)
    game.setCurrentLevel Battleaxe^
However, if the old string is longer, it does not truncate it to end at the
newline, leaving some old data
    game.setCurrentLevel Battle_of_the_Bulge
    game.setCurrentLevel Battleaxe^
    =
    game.setCurrentLevel Battleaxe^the_Bulge
which is printed in the config file as:
    game.setCurrentLevel Battleaxe
    the_Bulge
as we see, this is confirmed by looking at all of the occurances of a corrupted
cycle text.

This is a cumulative effect:
    game.setCurrentLevel Battle_of_the_Bulge
    game.setCurrentLevel Battleaxe
    game.setCurrentLevel Berlin
    =
    game.setCurrentLevel Berlin^xe^the_Bulge

    game.setCurrentLevel Berlin
    xe
    the_Bulge

For more general info, I've turned on extended debugging info. In
mods/BF1942/Settings/Default.con
set the following:
Game.DebugCallbackDisabled 0

I get the same spam about Emitter.cpp regardless of whether or not I have
extended debugging enabled.

The spamming is probably just a non-fatal engine error (related to island
levels, or levels with ships, it appears), but the corrupted maplist.con is
possibly related to what's causing the current seg faults on map change.  It
doesn't appear to be fatal outright... but it's probably not a good thing.

Theoretically you could work around it by setting your maplist.con so that the
largest map names are at the end of the cycle... but then it would corrupt when
it goes from the last to the first... Battle of the Bulge to Wake would leave a
trailing 'e_of_the_Bulge'.

-Brad



More information about the Bf1942 mailing list