Cannot run 1.4 on certain computers
by Ian Morrison · in Torque Game Engine · 12/26/2005 (2:11 pm) · 10 replies
I've recently bought TGE... just yesterday, in fact! I've had my eye on the engine for quite some time, and its nice to finally have my hands on it.
However, I've got a problem: something has happened in the update from 1.3 to 1.4 that makes my older computer that I use for software development choke up and die. While I could run the old 1.3 demo fine, the 1.4 demo does not work, much less the examples in the SDK. This happens ONLY on my old computer: the new one, my gaming rig, handles it perfectly. Unfortunately, using that as my game development computer would be problematic.
Whats happening is that whenever I try to run the example exe (or the demo exe) it hit an error half a second afterwards. This error seems to come far too early in the code for a log file to be generated, as no changes are made to the console.log file. Looking a page back through the threads in this forum, I'm not the only one getting this.
My specs:
Windows ME
AMD Athlon 1.4 Ghz
Geforce 2MX (drivers are updated)
512mb DDR RAM
I haven't tried compiling anything yet, but I should also mention that I'm using a "learning edition" of MSVC++ 6.0.
Does anyone have a solution to this problem? Alternately, is there a place where I can get TGE 1.3 instead? What features would I be missing out on if I went with that somewhat older version (aside from the tutorial and unicode)?
Thanks
However, I've got a problem: something has happened in the update from 1.3 to 1.4 that makes my older computer that I use for software development choke up and die. While I could run the old 1.3 demo fine, the 1.4 demo does not work, much less the examples in the SDK. This happens ONLY on my old computer: the new one, my gaming rig, handles it perfectly. Unfortunately, using that as my game development computer would be problematic.
Whats happening is that whenever I try to run the example exe (or the demo exe) it hit an error half a second afterwards. This error seems to come far too early in the code for a log file to be generated, as no changes are made to the console.log file. Looking a page back through the threads in this forum, I'm not the only one getting this.
My specs:
Windows ME
AMD Athlon 1.4 Ghz
Geforce 2MX (drivers are updated)
512mb DDR RAM
I haven't tried compiling anything yet, but I should also mention that I'm using a "learning edition" of MSVC++ 6.0.
Does anyone have a solution to this problem? Alternately, is there a place where I can get TGE 1.3 instead? What features would I be missing out on if I went with that somewhat older version (aside from the tutorial and unicode)?
Thanks
#2
It cuts out at the while(*str) line. Figuring out what that could MEAN is beyond me. All that I can think of is that the string must become somehow invalid (I'm not good with string manipulation) either before or during the loop. What in the world are "Logical Drive Strings"? Or Red Book Devices for that matter?
Anyways, does this give a clue as to what is happening?
12/26/2005 (3:16 pm)
//------------------------------------------------------------------------------
// Win32 specific
//------------------------------------------------------------------------------
void installRedBookDevices()
{
U32 bufSize = ::GetLogicalDriveStrings(0,0);
char * buf = new char[bufSize];
::GetLogicalDriveStringsA(bufSize, buf);
char * str = buf;
while(*str)
{
if(::GetDriveTypeA(str) == DRIVE_CDROM)
{
Win32RedBookDevice * device = new Win32RedBookDevice;
device->mDeviceName = new char[dStrlen(str) + 1];
dStrcpy(device->mDeviceName, str);
RedBook::installDevice(device);
}
str += dStrlen(str) + 1;
}
delete [] buf;
}It cuts out at the while(*str) line. Figuring out what that could MEAN is beyond me. All that I can think of is that the string must become somehow invalid (I'm not good with string manipulation) either before or during the loop. What in the world are "Logical Drive Strings"? Or Red Book Devices for that matter?
Anyways, does this give a clue as to what is happening?
#3
You might also want to consider upgrading, VC6 is no longer supported by Microsoft and we'll be dropping support for it soon as well. (This is the last VC6 compatible release of Torque.)
12/26/2005 (3:56 pm)
It suggests that the string from the windows API that is getting sent back is corrupt somehow. Or that it' NULL to begin with. I'd set a breakpoint at the start of this functin, then single step through (f11, I believe), and when I get to the char *str = buf line, see if str is null after that line is run. If so then you can just change the while to be (while str && *str) and you'll be set.You might also want to consider upgrading, VC6 is no longer supported by Microsoft and we'll be dropping support for it soon as well. (This is the last VC6 compatible release of Torque.)
#4
The string was null, so I took your suggestion and got past that at least. Thanks!
However, another problem has cropped up: I now get a "FileStream::_read NULL Destination pointer with non zero read request" error. I'll try to figure out where its from, but has anyone had a similar problem in the past?
12/26/2005 (5:08 pm)
An upgraded compiler is definitly on my wish list! I'll keep that in mind, for certain.The string was null, so I took your suggestion and got past that at least. Thanks!
However, another problem has cropped up: I now get a "FileStream::_read NULL Destination pointer with non zero read request" error. I'll try to figure out where its from, but has anyone had a similar problem in the past?
#5
The beginning of the function goes like this:
With the last line being the one coughing up the error.
To be totally honest, I don't have a clue where to start with this.
12/26/2005 (5:23 pm)
The error is coming up in an AssertFatal function in fileStream.cc at line 188.The beginning of the function goes like this:
bool FileStream::_read(const U32 i_numBytes, void *o_pBuffer)
{
AssertFatal(0 != mStreamCaps, "FileStream::_read: the stream isn't open");
AssertFatal(NULL != o_pBuffer || i_numBytes == 0, "FileStream::_read: NULL destination pointer with non-zero read request");With the last line being the one coughing up the error.
To be totally honest, I don't have a clue where to start with this.
#6
and from what procedure.
how many bytes are you requesting?
is the buffer valid? (o_pBuffer rather)
this Should read imho:
"FileStream::_read: NULL destination pointer Or non-zero read request"
12/26/2005 (6:03 pm)
Check the call stack, what file was being read from.and from what procedure.
how many bytes are you requesting?
is the buffer valid? (o_pBuffer rather)
this Should read imho:
"FileStream::_read: NULL destination pointer Or non-zero read request"
#7
Sorry, I barely know whats going on at ALL even when I step through the application up to where it cuts out on me. I have no experience with Torque. All I can tell you is that this code is from a FRESH install of the SDK, with no changes made to the source whatsoever.
Is there a way to download older versions of Torque? I'm fairly certain that 1.3 will run on this computer, even though 1.4 doesn't.
12/26/2005 (8:10 pm)
Call stack? How do I check that?Sorry, I barely know whats going on at ALL even when I step through the application up to where it cuts out on me. I have no experience with Torque. All I can tell you is that this code is from a FRESH install of the SDK, with no changes made to the source whatsoever.
Is there a way to download older versions of Torque? I'm fairly certain that 1.3 will run on this computer, even though 1.4 doesn't.
#8
when in the debugger say at a break point
Alt+4 will open and close the debug window "variables"
this window has a drop down box attached.
this box contains the "callstack" by function name
you can browse backward thru the stack it will open the corresponding code.
once you learn eventually what file is being accessed, or what method you can prolly figure things out.
Edit:
you can access other versions of torque by using one of the many cvs features.
first find out what revisions exist if you want to pull a revision
or you can pull by date, or even tag whatever you can learn more about cvs by typing in google
:
man cvs
12/26/2005 (9:05 pm)
Your using vs6.when in the debugger say at a break point
Alt+4 will open and close the debug window "variables"
this window has a drop down box attached.
this box contains the "callstack" by function name
you can browse backward thru the stack it will open the corresponding code.
once you learn eventually what file is being accessed, or what method you can prolly figure things out.
Edit:
you can access other versions of torque by using one of the many cvs features.
first find out what revisions exist if you want to pull a revision
or you can pull by date, or even tag whatever you can learn more about cvs by typing in google
:
man cvs
#9
At least, thats what a quick search of the forums told me.
Is CVS the only way to get old versions?
12/29/2005 (9:06 am)
I hear that the CVS for Torque has been depreciated. I assume that means that its unusable.At least, thats what a quick search of the forums told me.
Is CVS the only way to get old versions?
#10
The server is still up and we use it as a means of pushing hotfixes for advanced users. So go ahead and give it a try, but don't complain to GG if it doesn't work for you... :)
12/31/2005 (2:41 pm)
It's deprecated, which means we aren't obligated to go out of our way to make it work for you. We were spending time every day helping newbies learn how to use WinCVS, which isn't really part of our core mission.The server is still up and we use it as a means of pushing hotfixes for advanced users. So go ahead and give it a try, but don't complain to GG if it doesn't work for you... :)
Torque Owner Duncan Gray