Forum

Debugging my brain!

Discuss programming topics for the various GPL'd game engine sources.

Moderator: InsideQC Admins

Debugging my brain!

Postby r00k » Tue Dec 21, 2010 7:00 am

Arrgghh!!!

No it's not a shambler; it's worse, a bug!

I've tracked it down to sv_cullentities 2, which looks like this part of the code...

Code: Select all
    if ((!strcmp(pr_strings + seen->v.classname, "player")) || (sv_cullentities.value > 1))
    {
        for (i = 0; i < 64; i++)
        {
            end[0] = seen->v.origin[0] + offsetrandom(seen->v.mins[0], seen->v.maxs[0]);
            end[1] = seen->v.origin[1] + offsetrandom(seen->v.mins[1], seen->v.maxs[1]);
            end[2] = seen->v.origin[2] + offsetrandom(seen->v.mins[2], seen->v.maxs[2]);

            tr = SV_ClipMoveToEntity (sv.edicts, start, vec3_origin, vec3_origin, end);

            if (tr.fraction == 1)// line hit the ent
         {
            seen->tracetimer = sv.time + 1;
            return false;
         }
        }
    }


That works, just fine. Though, when I pick up an entity such as a shotgun shell, poof* i get this error here:
Code: Select all
First-chance exception at 0x005e9a02 in glQrack.exe: 0xC0000005: Access violation reading location 0x43f23a9b.


which is the 1st parameter in
Code: Select all
if (!strcmp(t,s))


within PF_FIND

all this is called from the touch function (SV_TouchLinks)
Code: Select all
      PR_ExecuteProgram (touch->v.touch);

when i pick it up.

Older versions work with out any code changes to the above code, i'm just trying to find exactly where i might have changed something to break this... :|

I only get this error when sv_cullentities > 1
r00k
 
Posts: 1110
Joined: Sat Nov 13, 2004 10:39 pm

Postby r00k » Sat Dec 25, 2010 5:51 am

Phew!

After numerous attempts of comparing one diff against another,
I finally found it!

Code: Select all
if ((ent == &cl.viewent) || (clmodel->modhint == MOD_FLAME)|| (clmodel->modhint == MOD_PLAYER))
   {
      R_RotateForViewEntity (ent);
   }
   


That MOD_PLAYER check was the problem! Ugh!!
r00k
 
Posts: 1110
Joined: Sat Nov 13, 2004 10:39 pm

Re: Debugging my brain!

Postby Baker » Sun Dec 26, 2010 12:22 pm

r00k wrote:
Code: Select all
First-chance exception at 0x005e9a02 in glQrack.exe: 0xC0000005: Access violation reading location 0x43f23a9b.


which is the 1st parameter in
Code: Select all
if (!strcmp(t,s))


Is this on a 64-bit Windows 7? Because the error message about the reading address looks like 32-bit/64-bit issue.

There are 2 recent instances of solving the 64-bit problem in a single version or 2 ... Quakespasm vs. FitzQuake SDL 0.85 and lxdnr's 64-bit Linux Qrack patch.

I mean why would Qrack be reading WAY, WAY, WAY out there at address 0x43f23a9b if this weren't some sort of 64-bit pointer problem.

(Then again, I've just recently delved into the 64-bit issuez. So maybe someone with some actual hands-on experience with matter should comment.)
The night is young. How else can I annoy the world before sunsrise? 8) Inquisitive minds want to know ! And if they don't -- well like that ever has stopped me before ..
User avatar
Baker
 
Posts: 3666
Joined: Tue Mar 14, 2006 5:15 am

Postby r00k » Sun Dec 26, 2010 10:20 pm

It's on a Win7-Pro 64bit machine but it's compiled for x86.

I had originally added the MOD_PLAYER portion because player models were interpolated in CL_RelinkEntities, so in R_DrawAliasModel I was trying to skip the origin interpolation of player model entities...
r00k
 
Posts: 1110
Joined: Sat Nov 13, 2004 10:39 pm


Return to Engine Programming

Who is online

Users browsing this forum: No registered users and 1 guest