I left my server on dm_steamlab overnight: no crash, and no Physical Mayhem 
bug.  (I'm still reluctant to say it's gone for good after 1 1/2 years of 
spending so much of my modding time on this.)

So then I reverted the fix and applied just the assert.  The instant I did 
changelevel dm_steamlab, the assert hit.  This corresponds with previous 
findings that dm_steamlab would always cause the Physical Mayhem bug.  The 
assert involved a prop_physics and a prop_physics_multiplayer, which are 
collisiongroups 1 and 17 respectively.

So now question the is, given that dm_steamlab caused the bad code path 
instantly, how was Valve ever able to play dm_steamlab WITHOUT hitting the bug? 
 There would seem to be some other factor at work, that leaves me wary that we 
haven't seen the last of this.

-bk

At 2006/05/28 11:51 PM, you wrote:
>The particular case Garry reported was with a prop set to
>COLLISION_GROUP_PUSHAWAY against another prop set to
>COLLISION_GROUP_DEBRIS.  The code in hl2mp gamerules returns different
>values for:
>ShouldCollide( COLLISION_GROUP_PUSHAWAY, COLLISION_GROUP_DEBRIS );
>And
>ShouldCollide( COLLISION_GROUP_DEBRIS, COLLISION_GROUP_PUSHAWAY );
>
>The code I posted fixes this.  The picture vs. the file cabinet in
>cs_office is such a case. Vphysics assumes this will not occur; if it
>does a bunch of unintended things can happen. (In this particular case
>it results in a dangling pointer but there are other possible effects
>depending on the callstack and cached collision state at the time of the
>bad data coming from the game DLL.  That's why it doesn't always crash
>or even show up as a problem.)
>
>Jay
>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of
>> [EMAIL PROTECTED]
>> Sent: Sunday, May 28, 2006 7:29 PM
>> To: [email protected]
>> Subject: RE: [hlcoders] Physical Mayhem in progress - no crash! (yet)
>>
>> Yeah part of my real job is engineering support so I
>> understand the importance of repro steps if engineering
>> hasn't seen an issue.  I'm a bit baffled though, given how
>> many people have reported it, that Valve hadn't seen it
>> regularly.  (Does Valve have a public HL2DM stress test
>> server?  If so, what's the IP?)
>>
>> I think you tried to answer my question, but perhaps I didn't
>> grasp the intracacies of the answer.  What scenario does the
>> CHL2MPRules::ShouldCollide change actually fix?  If it's as
>> simple as one prop hitting another, why doesn't it always break?
>>
>> Also, earlier when I reported the bouncing still occuring I
>> had only applied the fix server-side.  I've since applied it
>> client-side as well and for about 20 minutes and counting
>> I've not seen any physics issues.  Too early to call it dead,
>> but that's promising.
>>
>> -bk
>>
>> At 2006/05/28 06:34 PM, Jay Stelly wrote:
>> >Garry sent in a deterministic way to cause some bad physics behavior.
>> >Because of his repro case I was able to fix a bug with the code I
>> >posted below.  Personally, I have never been able to reproduce the
>> >behavior you've described.  I believe Adrian has seen the
>> behavior in
>> >HL2DM at some point, but noone at Valve has a set of steps for
>> >recreating the behavior as far as I know.  Also, I've looked at the
>> >minidumps you've posted and they don't help diagnose the problem.
>> >Garry's bug had the same characteristic - looking at the
>> state of the
>> >code after the bug had occurred was not helpful.  Being able to
>> >recreate the behavior in a controlled way is the shortest path to
>> >fixing the problem.  Sometimes bugs are easy and you can guess the
>> >cause based on the results, but often they are not.  In
>> those cases it
>> >is really desirable to go back through the steps that caused the bug
>> >and analyze what is happening in the code.  If you can't do
>> that then debugging is much more difficult.
>> >
>> >More info on what was happening here:
>> >In this case the problem is that the game DLL is not being
>> consistent
>> >in how it reports collision rules to vphysics.
>> ShouldCollide(a,b) is
>> >supposed to return the same value no matter how many times
>> it is called
>> >until you call CollisionRulesChanged() for a or b.  Also
>> >ShouldCollide(a,b) must always return the same result as
>> >ShouldCollide(b,a).  Vphysics uses this procedure call instead of
>> >storing some kind of matrix of possible collisions.  If this
>> function
>> >does not fulfill it's part of the contract it can cause vphysics to
>> >fail (including crashing).
>> >
>> >So given that the problem has similar symptoms to Garry's, it makes
>> >sense for you to instrument your code to test for cases of
>> the same bug.
>> >The simplest way to do that would be to wrap ShouldCollide() in
>> >src/dlls/physics.cpp:
>> >
>> >int CCollisionEvent::ShouldCollide( IPhysicsObject *pObj0,
>> >IPhysicsObject *pObj1, void *pGameData0, void *pGameData1 ) {
>> >        int x0 = ShouldCollide_Default(pObj0, pObj1, pGameData0,
>> >pGameData1);
>> >        int x1 = ShouldCollide_Default(pObj1, pObj0, pGameData1,
>> >pGameData0);
>> >        if ( x0 != x1 )
>> >        {
>> >                Assert(x0==x1); // break here and step
>> through the code
>> >to see what's wrong
>> >                ShouldCollide_Default(pObj0, pObj1, pGameData0,
>> >pGameData1);
>> >                ShouldCollide_Default(pObj1, pObj0, pGameData1,
>> >pGameData0);
>> >        }
>> >        return x0;
>> >}
>> >
>> >int CCollisionEvent::ShouldCollide_Default( IPhysicsObject *pObj0,
>> >IPhysicsObject *pObj1, void *pGameData0, void *pGameData1 ) // ....
>> >
>> >If you hit that assert, you know you've got the same bug and
>> you should
>> >be able to step through the code and fix it trivially.  I'll
>> try that
>> >as well with dm_steamlab in HL2DM since you are still reporting some
>> >kind of problem.  If you do hit the assert but don't know how to fix
>> >it, send me the steps to recreate the assert and I'm sure
>> I'll be able
>> >to fix it if I can make the assert happen.
>> >
>> >Jay
>> >
>> >> -----Original Message-----
>> >> From: [EMAIL PROTECTED]
>> >> [mailto:[EMAIL PROTECTED] On Behalf Of
>> >> [EMAIL PROTECTED]
>> >> Sent: Sunday, May 28, 2006 2:18 PM
>> >> To: [email protected]
>> >> Subject: RE: [hlcoders] Physical Mayhem in progress - no
>> crash! (yet)
>> >>
>> >> This is certainly a promising step - thanks all.
>> >>
>> >> However, can you explain what exactly this fixes?  Is this
>> supposed
>> >> to fix the classic Physical Mayhem Bug, or does this fix
>> something to
>> >> do with scripts/propdata_cs.txt, which is presumably irrelevant to
>> >> the generic HL2DM Physical Mayhem Bug?  Also does "I was able to
>> >> repro the bug with those changes" mean Valve has -only-
>> repro'd the
>> >> bug with those changes?  Ie, has Valve never repro'd the
>> bug in plain
>> >> HL2DM?
>> >>
>> >> I applied the patch and loaded up dm_steamlab.  Within about
>> >> 5 minutes, Physics bugs started occurring, but
>> behaviorally it's not
>> >> the same as the classic Physical Mayhem Bug.  Now items do
>> not fall
>> >> infinitely out of the world, and cpu usage is not 100% as
>> it normally
>> >> would be during the Physical Mayhem Bug.  However the warping and
>> >> repeat-bouncing is still occurring.
>> >>
>> >> This seems to be an improvement at least, but it's not a
>> whole fix.
>> >> It's still very difficult to play while this is occurring.
>>  I'm going
>> >> to leave it running on dm_steamlab to see if it crashes or if the
>> >> crasher aspect has gone away.
>> >>
>> >> Has anyone else tried Jay's patch?
>> >>
>> >> -bk
>> >>
>> >> At 2006/05/24 08:51 PM, Jay Stelly wrote:
>> >> >Ok, I was able to repro the bug with those changes.
>> Here's the fix:
>> >> >
>> >> >// add these lines to hl2mp_gamerules.cpp:
>> >> >
>> >> >bool CHL2MPRules::ShouldCollide( int collisionGroup0, int
>> >> >collisionGroup1 )
>> >> >{
>> >> >        if ( collisionGroup0 > collisionGroup1 )
>> >> >        {
>> >> >                // swap so that lowest is always first
>> >> >                swap(collisionGroup0, collisionGroup1);
>> >> >        }
>> >> >
>> >> >
>> >> >Jay
>> >> >
>> >> >
>> >> >> -----Original Message-----
>> >> >> From: [EMAIL PROTECTED]
>> >> >> [mailto:[EMAIL PROTECTED] On
>> Behalf Of Garry
>> >> >> Newman
>> >> >> Sent: Wednesday, May 24, 2006 3:14 AM
>> >> >> To: [email protected]
>> >> >> Subject: Re: [hlcoders] Physical Mayhem in progress - no
>> >> crash! (yet)
>> >> >>
>> >> >> Ok done it. It happens.
>> >> >>
>> >> >> I found the exact cause too. When you shoot these pictures
>> >> they fall
>> >> >> on the other physics objects..
>> >> >>
>> >> >> http://www.garry.tv/img/cs_office_phys.jpg
>> >> >>
>> >> >> And then the physical mayhem happens. Which is weird
>> >> because I always
>> >> >> thought those pictures were clientside so they
>> shouldn't even be
>> >> >> touching the other stuff..
>> >> >>
>> >> >> Here's the test mod
>> >> >>
>> >> >> http://www.garry.tv/img/phys_testmod.zip
>> >> >>
>> >> >> And here's the code changes (based on hl2mp mod)
>> >> >>
>> >> >> GameInterface.cpp line 493 after TheNavMesh = ...
>> >> >>
>> >> >> filesystem->MountSteamContent( 240 ); AddSearchPath( "cstrike",
>> >> >> filesystem->"GAME" );
>> >> >>
>> >> >> cdll_client_int.cpp line 523 after ClientWorldFactoryInit();
>> >> >>
>> >> >> filesystem->MountSteamContent( 240 ); AddSearchPath( "cstrike",
>> >> >> filesystem->"GAME" );
>> >> >>
>> >> >> props_shared.cpp line195
>> >> >>
>> >> >> if ( !m_pKVPropData->LoadFromFile( filesystem,
>> >> >> "scripts/propdata_cs.txt" ) )
>> >> >>
>> >> >> I changed the spawnpoints to use
>> >> info_player_counterterrorist too but
>> >> >> I doubt that affected it.
>> >> >>
>> >> >>
>> >> >>
>> >> >> On 5/24/06, Garry Newman <[EMAIL PROTECTED]> wrote:
>> >> >> > Yeah kinda. I'm based off HL2, and mounting CS:S using the
>> >> >> > filesystem->mount and addsearchpath (to tail) commands.
>> >> >> >
>> >> >> > I'll try it with a new mod to make sure it isn't something
>> >> >> that only
>> >> >> > happens with GMod..
>> >> >> >
>> >> >> > On 5/23/06, Adrian Finol <[EMAIL PROTECTED]> wrote:
>> >> >> > > I just tried to reproduce this by following these
>> steps and I
>> >> >> > > couldn't get it to happen.
>> >> >> > >
>> >> >> > > This is what I did so let me know if I missed something:
>> >> >> > >
>> >> >> > > I changed HL2DM's GameInfo.txt to also mount the cstrike
>> >> >> folder so I
>> >> >> > > could load cs_office and all its resources. I loaded
>> >> >> HL2DM on msdev
>> >> >> > > and built that, then I added the propdata folder
>> and renamed
>> >> >> > > Cstrike's propdata.txt to cs.txt and placed it there.
>> >> >> > >
>> >> >> > > Loaded cs_office and ran around shooting rockets
>> >> trying to get as
>> >> >> > > many physics objects in motion as I could. After 5
>> >> >> minutes running
>> >> >> > > around everything was behaving fine.
>> >> >> > >
>> >> >> > > Did I miss anything?
>> >> >> > >
>> >> >> > >
>> >> >> > >
>> >> >> > > -----Original Message-----
>> >> >> > > From: [EMAIL PROTECTED]
>> >> >> > > [mailto:[EMAIL PROTECTED] On
>> >> Behalf Of Garry
>> >> >> > > Newman
>> >> >> > > Sent: Tuesday, May 23, 2006 8:21 AM
>> >> >> > > To: [email protected]
>> >> >> > > Subject: Re: [hlcoders] Physical Mayhem in progress
>> - no crash!
>> >> >> > > (yet)
>> >> >> > >
>> >> >> > > Hey exactly a month later!
>> >> >> > >
>> >> >> > > Here's what I'm doing to cause the physical mayhem.
>> >> >> > >
>> >> >> > > In my mod/scripts folder I made a folder called propdata.
>> >> >> I copied
>> >> >> > > CS:S's propdata.txt to this folder and renamed in cs.txt.
>> >> >> > >
>> >> >> > > In CPropData::ParsePropDataFile I changed the
>> >> loadfromfile line
>> >> >> > > to
>> >> >> > >
>> >> >> > >     if ( !m_pKVPropData->LoadFromFile( filesystem,
>> >> >> > > "scripts/propdata/cs.txt" ) )
>> >> >> > >
>> >> >> > >
>> >> >> > > So I start my mod and go to cs_office. It's fine
>> for about 20
>> >> >> > > seconds of shooting props then they all start
>> bouncing around.
>> >> >> > >
>> >> >> > >
>> >> >> > > I find that this has prevented it.. (props.cpp:4747)
>> >> >> > >
>> >> >> > >     //LINK_ENTITY_TO_CLASS( prop_physics_multiplayer,
>> >> >> > > CPhysicsPropMultiplayer );
>> >> >> > >
>> >> >> > >     LINK_ENTITY_TO_CLASS( prop_physics_multiplayer,
>> >> >> CPhysicsProp );
>> >> >> > >
>> >> >> > > Obviously it's going to change all
>> >> prop_physics_multiplayer into
>> >> >> > > prop_physics.. so it might not be ideal for your mod. I'm
>> >> >> guessing
>> >> >> > > that my problem is different from yours though,
>> >> somehow.. even if
>> >> >> > > the symptoms are the same.
>> >> >> > >
>> >> >> > >
>> >> >> > >
>> >> >> > > On 4/23/06, [EMAIL PROTECTED]
>> >> >> > > <[EMAIL PROTECTED]> wrote:
>> >> >> > > > The mod players were getting restless so I
>> couldn't wait any
>> >> >> > > > longer
>> >> >> > > for a response from Valve so I had to shut it down.
>> >> >> Unfortunately
>> >> >> > > there's no documentation on how most of that stuff is
>> >> supposed to
>> >> >> > > work, and there are frightfully few asserts in the
>> >> SDK.  I guess
>> >> >> > > I'll have to do a lot of research to compare a working
>> >> >> vphysics.dll
>> >> >> > > to a broken vphysics.dll in order to pin down the
>> >> exact problem.
>> >> >> > > >
>> >> >> > > > At 2006/04/20 08:03 PM, Aaron Schiff wrote:
>> >> >> > > > >--
>> >> >> > > > >[ Picked text/plain from multipart/alternative ]
>> >> >> > > > >USE_OBB_COLLISION_BOUNDS just says to search within
>> >> >> the bounding
>> >> >> > > > >box constructed around a physical model to detect
>> >> >> other objects.
>> >> >> > > > >It's not the matter you should be worried about.
>> >> >> > > > >--
>> >> >> > > > >
>> >> >> > > > >_______________________________________________
>> >> >> > > > >To unsubscribe, edit your list preferences, or view the
>> >> >> > > > >list
>> >> >> > > archives, please visit:
>> >> >> > > > >http://list.valvesoftware.com/mailman/listinfo/hlcoders
>> >> >> > > >
>> >> >> > > > _______________________________________________
>> >> >> > > > To unsubscribe, edit your list preferences, or
>> view the list
>> >> >> > > > archives,
>> >> >> > > please visit:
>> >> >> > > > http://list.valvesoftware.com/mailman/listinfo/hlcoders
>> >> >> > > >
>> >> >> > > >
>> >> >> > >
>> >> >> > > _______________________________________________
>> >> >> > > To unsubscribe, edit your list preferences, or view
>> the list
>> >> >> > > archives, please visit:
>> >> >> > > http://list.valvesoftware.com/mailman/listinfo/hlcoders
>> >> >> > >
>> >> >> > >
>> >> >> > > _______________________________________________
>> >> >> > > To unsubscribe, edit your list preferences, or view the
>> >> >> list archives, please visit:
>> >> >> > > http://list.valvesoftware.com/mailman/listinfo/hlcoders
>> >> >> > >
>> >> >> > >
>> >> >> >
>> >> >>
>> >> >> _______________________________________________
>> >> >> To unsubscribe, edit your list preferences, or view the list
>> >> >> archives, please visit:
>> >> >> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>> >> >>
>> >> >>
>> >> >
>> >> >_______________________________________________
>> >> >To unsubscribe, edit your list preferences, or view the list
>> >> archives, please visit:
>> >> >http://list.valvesoftware.com/mailman/listinfo/hlcoders
>> >>
>> >> _______________________________________________
>> >> To unsubscribe, edit your list preferences, or view the list
>> >> archives, please visit:
>> >> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>> >>
>> >>
>> >
>> >_______________________________________________
>> >To unsubscribe, edit your list preferences, or view the list
>> archives, please visit:
>> >http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>
>> _______________________________________________
>> To unsubscribe, edit your list preferences, or view the list
>> archives, please visit:
>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>
>>
>
>_______________________________________________
>To unsubscribe, edit your list preferences, or view the list archives, please 
>visit:
>http://list.valvesoftware.com/mailman/listinfo/hlcoders

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to