[bf1942] Emitter.cpp:471 error, corrupted maplist.con

Dan Beimborn bf at beimborn.com
Fri Dec 13 14:17:18 EST 2002


nice debug, that should really nail down the maplist cycle bug

On Fri, 13 Dec 2002, Brad Davidson wrote:

> 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