Game Development Community

TGEA 1.7.0 Beta 1 Mission Load Lockups

by Matt Huston · in Torque Game Engine Advanced · 03/19/2008 (3:01 pm) · 15 replies

I am experiencing game freezes during mission loading after running the engine several times the lockup occurs at 'Loading Datablocks'. I also experienced a related problem where I ran the TGEA Feature Demo. The Feature demo only displayed 1 frame, however the GUI was fully functional and I was able to open the World Editor and GUI Editor, however the single frame of the 3d world remained constant throughout this time and never updated.

I encountered this error the first time when I installed TGEA 1.7 and only was able to have it properly run after I restarted my PC. The only fix at this point I see is restarting my PC.

#1
03/19/2008 (3:11 pm)
Hey Matt, can you duplicate this more than once? Can you send me your system specs as well, either in an email or in this post? Thanks
#2
03/19/2008 (3:42 pm)
Hi Ken,

To replicate, I just run it several times and close it down and then eventually the problem above occurs. I am using Windows XP Pro x64 version. Never had any troubles with it before but maybe a culprit. I'll try out replicating the error on my x86 partition tomorrow.

AMD AM2 4200+
GeForce 8800GT
2048mb RAM (DDR 800)
#3
03/19/2008 (4:33 pm)
Hmm--that sounds as if we're not using missionCleanup ourselves (mistake on our part)--can you check your memory usage after a couple of cycles of the mission?
#4
03/20/2008 (4:32 am)
Not sure, because for instance, I've been on my PC a couple hours this morning and haven't run TGEA 1.7, so I wanted to try T3D.exe for you, it opens up, I see the menu, all the buttons work but when I click Play Game, nothing happens.

//-------------------------- 3/20/2008 -- 11:31:26 -----
Processor Init:
   AMD (unknown), ~2.20 Ghz
     (timed at roughly 2.21 Ghz)
   FPU detected
   MMX detected
   3DNow detected
   SSE detected
 
Math Init:
   Installing Standard C extensions
   Installing Assembly extensions
   Installing FPU extensions
   Installing MMX extensions
   Installing 3DNow extensions
   Installing SSE extensions
 
Initializing platform...
Input Init:
   unknown0 input device created.
   unknown1 input device created.
   DirectInput enabled.

Done
--------- Loading MODS ---------

--------- Parsing Arguments ---------
Reading Display Device information...
   Primary Display Device Found:
      Vendor Id: VEN_0000
      Device Id: DEV_0000
Binding server port to default IP
UDP initialized on port 0
DirectX 9 version - 9.0.0 c
DirectX 8 version - 9.0$
Attempting to create GFX device: NVIDIA GeForce 8800 GT (D3D9)
Device created, setting adapter and enumerating modes
GFXD3D9Device - using 'd3dx9_35.dll' for dynamic linking.
   Cur. D3DDevice ref count=1
   Pix version detected: 3.000000
   Vert version detected: 3.000000
   Maximum number of simultaneous samplers: 8
Initializing GFXCardProfiler (D3D9)
   o Vendor : 'NVIDIA'
   o Card   : 'NVIDIA GeForce 8800 GT'
   o Version: '69.21'
   - Scanning card capabilities...
   - Loading card profiles...
      - Loading card profile profile/D3D9.cs
      - Loading card profile profile/D3D9.NVIDIA.cs
      - No card profile profile/D3D9.NVIDIA.NVIDIAGeForce8800GT.cs exists
      - No card profile profile/D3D9.NVIDIA.NVIDIAGeForce8800GT.6921.cs exists
Texture Manager
   - Approx. Available VRAM:  776994816
   - Threshold VRAM:  67108864
   - Quality mode: high
 % - Initialized Common

--------- Initializing MOD: FPS ---------
sfxStartup...
   Provider: DirectSound
   Device: Primary Sound Driver
   Hardware: Yes
   Buffers: 26

--------- Initializing FPS: Server ---------

--------- Initializing FPS: Client ---------
--------------
Attempting to set resolution to "800 600 false 32 60 0"
Accepted Mode: 
--Resolution : 800 600
--Full Screen : No
--Bits Per Pixel : 32
--Refresh Rate : 60
--FSAA Level 0
--------------
GFXPCD3D9Device::reset - depthstencil 31ac00 has 2 ref's
--- Resetting D3D Device ---
Binding server port to default IP
UDP initialized on port 0
Validation required for shape: scriptsAndAssets/data/shapes/players/SpaceOrc/SpaceOrc.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/BoomBot/BoomBot.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/Elf/Elf.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/ForgeSoldier/ForgeSoldier.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/SpaceOrc/SpaceOrc.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/Spacesuit/Spacesuit.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/TorqueOrc/TorqueOrc.dts
 % - Initializing common GUIs
 % - Initializing Tools
 % - Initializing Tools Base
 % - Initializing Base Editor
 % - Initializing Mission Editor
 % - Initializing Gui Builder
 % - Initializing Debugger
Engine initialized...
Exporting server prefs...
... Shape with old version.
Object 'RocketExplosionSound' is not a member of the 'SFXProfile' data block class
Validation required for shape: scriptsAndAssets/data/shapes/players/SpaceOrc/SpaceOrc.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/BoomBot/BoomBot.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/Elf/Elf.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/ForgeSoldier/ForgeSoldier.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/SpaceOrc/SpaceOrc.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/Spacesuit/Spacesuit.dts
Validation required for shape: scriptsAndAssets/data/shapes/players/TorqueOrc/TorqueOrc.dts

//-----------------------------------------------
Loading light datablocks from: common/lighting/lights/

//-----------------------------------------------
Loading light datablocks from: common/lighting/filters/
*** LOADING MISSION: scriptsAndAssets/data/missions/simple.mis
*** Stage 1 load
*** Stage 2 load
*** Mission loaded
Connect request from: IP:0.0.0.0:0
Connection established 2121
CADD: 2122 local
*** Sending mission load to client: scriptsAndAssets/data/missions/simple.mis
Mapping string: ServerMessage to index: 0
Mapping string: MsgConnectionError to index: 1
onServerMessage:

So it is at this point and just 'hanging' at the main menu.
#5
03/20/2008 (5:04 am)
Ok, here's an example of what I have done to cause this.

1) Loaded T3D
2) Press Play Game
...Mission Loads Fine
3) In World Editor I began messing with texelsPerMeter, set it to 32
4) Set clipMapSizeLog2 to 11
5) (Crash) - Note, I haven't saved the .mis or anything.
6) Loaded T3D
7) Press Play Game
8) Hangs at Main Menu - after a time it actually did go to 'Loading Datablocks' but stayed at 0% and never changed. (Memory use at this point is 62,000kb)

- Note, I tried this on my x86 Windows XP partition and had same results.
#6
03/23/2008 (5:24 am)
Has anyone else had this problem? I was wondering, what version of DX-SDK is best to be used. I do have March 2008 SDK installed, maybe this was a problem?
#7
03/23/2008 (10:14 am)
While trying to reproduce this i got various crashes:

The main one (happened after clicking apply when changing the values of the terrain you specified):
First-chance exception at 0x00bf2347 in T3D_DEBUG.exe: 0xC0000005: Access violation writing location 0x0f711040.
Fatal: (c:\torque\tgea_1_7_0_beta_1\engine\source\gfx\d3d9\gfxd3d9device.h @ 36) D3DERR_INVALIDCALL
Invalid call

www.niodesign.com/ggresources/error.jpg

This only happened once:

reBase.h line 56:
>	T3D_DEBUG.exe!RefObjectRef::RefObjectRef(RefBase * object=0x00000000)  Line 57 + 0x12 bytes	C++
 	T3D_DEBUG.exe!RefPtr<GFXTextureObject>::RefPtr<GFXTextureObject>()  Line 88 + 0x16 bytes	C++
 	T3D_DEBUG.exe!GFXTexHandle::GFXTexHandle()  Line 20 + 0x14 bytes	C++
 	T3D_DEBUG.exe!ClipMap::ClipStackEntry::ClipStackEntry()  Line 76 + 0x29 bytes	C++
 	T3D_DEBUG.exe!constructInPlace<ClipMap::ClipStackEntry>(ClipMap::ClipStackEntry * p=0x0000001c)  Line 553 + 0x26 bytes	C++
 	T3D_DEBUG.exe!Vector<ClipMap::ClipStackEntry>::construct(unsigned int start=1, unsigned int end=4294967288)  Line 250 + 0x18 bytes	C++
 	T3D_DEBUG.exe!Vector<ClipMap::ClipStackEntry>::setSize(unsigned int size=4294967288)  Line 284 + 0x10 bytes	C++
 	T3D_DEBUG.exe!ClipMap::initClipStack()  Line 129	C++
 	T3D_DEBUG.exe!TerrainBlock::unpackUpdate(NetConnection * __formal=0x087c4bd8, BitStream * stream=0x010d2b7c)  Line 1328	C++
#8
03/23/2008 (5:18 pm)
Here's some more information from the debugger. I have just loaded up T3D, I see the main menu, I haven't pressed anything and this comes up.

Error Message
console/simManager.cpp @ 218
EventQueue::process: cannot advance time in the past

>	T3D_DEBUG.exe!Platform::debugBreak()  Line 16	C++
 	T3D_DEBUG.exe!Sim::advanceToTime(unsigned int targetTime=9529)  Line 220	C++
 	T3D_DEBUG.exe!Sim::advanceTime(unsigned int delta=4294967294)  Line 241 + 0xe bytes	C++
 	T3D_DEBUG.exe!processTimeEvent(int elapsedTime=-2)  Line 393 + 0x9 bytes	C++
 	T3D_DEBUG.exe!Signal<int,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType>::DelegateFunction<void (__cdecl*)(int)>::operator()(int a=-2)  Line 270 + 0x18 bytes	C++
 	T3D_DEBUG.exe!Signal<int,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType>::trigger(int a=-2)  Line 126 + 0x11 bytes	C++
 	T3D_DEBUG.exe!JournaledSignal<int,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType>::journal1(int a=-2)  Line 35 + 0x18 bytes	C++
 	T3D_DEBUG.exe!Journal::Call<JournaledSignal<int,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType>,int>(JournaledSignal<int,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType> * obj=0x0012fc98, void (int)* method=0x0076ba1a, int a=-2)  Line 487 + 0xd0 bytes	C++
 	T3D_DEBUG.exe!JournaledSignal<int,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType>::trigger(int a=-2)  Line 136 + 0x12 bytes	C++
 	T3D_DEBUG.exe!TimeManager::_updateTime()  Line 30	C++
 	T3D_DEBUG.exe!Signal<EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType>::DelegateMethod<TimeManager *,void (__thiscall TimeManager::*)(void)>::operator()()  Line 255 + 0x1a bytes	C++
 	T3D_DEBUG.exe!Signal<EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType,EmptyType>::trigger()  Line 132 + 0xd bytes	C++
 	T3D_DEBUG.exe!Process::processEvents()  Line 53	C++
 	T3D_DEBUG.exe!StandardMainLoop::doMainLoop()  Line 445 + 0x5 bytes	C++
 	T3D_DEBUG.exe!TorqueMain(int argc=1, const char * * argv=0x029a7698)  Line 38	C++
 	T3D_DEBUG.exe!run(int argc=1, const char * * argv=0x029a7698)  Line 285 + 0xd bytes	C++
 	T3D_DEBUG.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * __formal=0x00000000, char * lpszCmdLine=0x002220aa, HINSTANCE__ * __formal=0x00000000)  Line 341 + 0x17 bytes	C++
 	T3D_DEBUG.exe!__tmainCRTStartup()  Line 315 + 0x35 bytes	C
 	T3D_DEBUG.exe!WinMainCRTStartup()  Line 187	C
#9
03/29/2008 (4:47 am)
It looks like whatever was causing this has been fixed in Beta 2 as I'm able to consistently get it to run.
#10
03/31/2008 (4:35 pm)
Awesome!
#11
04/18/2008 (7:42 am)
Hmm, this problem is now back for me. Looking into it... notice the ElapsedTime is 4294967295, then the simulation locks.

Printed some values into the Console.log
void processTimeEvent - (ElapsedTime) 1
void advanceToTime     - (S32 elapsedTime): 16341 (getCurrentTime)16340
void processTimeEvent - (ElapsedTime) 4294967295
void advanceToTime     - (S32 elapsedTime): 16340 (getCurrentTime)16341
void processTimeEvent - (ElapsedTime)0
void advanceToTime     - (S32 elapsedTime): 16340 (getCurrentTime)16340
void processTimeEvent - (ElapsedTime) 0
#12
04/23/2008 (7:06 am)
After I installed the AMD Dual Core Optimizer available at http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_871_9706,00.html, I rarely encountered this problem. Though I can't say 100% that I haven't had the problem crop up since.

AMD Dual-Core Optimizer - The AMD Dual-Core Optimizer can help improve some PC gaming video performance by compensating for those applications that bypass the Windows API for timing by directly using the RDTSC (Read Time Stamp Counter) instruction. Applications that rely on RDTSC do not benefit from the logic in the operating system to properly account for the affect of power management mechanisms on the rate at which a processor core's Time Stamp Counter (TSC) is incremented. The AMD Dual-Core Optimizer helps to correct the resulting video performance effects or other incorrect timing effects that these applications may experience on dual-core processor systems, by periodically adjusting the core time-stamp-counters, so that they are synchronized.
#13
04/27/2008 (5:38 am)
Ah this sounds similar to what I've been experiencing (http://www.garagegames.com/mg/forums/result.thread.php?qt=74644)

I thought it might be something related to Dual Core, but changing the affinity from windows Task manager so that only 1 core was used didn't help. I'm trying the optimizer now to see what that does...
#14
04/27/2008 (5:42 am)
Success! That worked so it's now running nicely.
#15
04/27/2008 (12:47 pm)
Good to hear, I haven't had the issue recently either so this seems to be the fix.