I agree more documentation of the closed source API's would be nice.

On 9/3/06, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
There's already a MDLCACHE_CRITICAL_SECTION(); in C_BaseEntity::PostDataUpdate 
that should take care of that one.  Post a stack trace if you're certain you 
haven't regressed that one.

At 2006/09/03 02:21 PM, Robbie Groenewoudt wrote:
>--
>[ Picked text/plain from multipart/alternative ]
>My first crash with this:
>
>void C_HL2MP_Player::Initialize( void )
>{
>    m_headYawPoseParam = LookupPoseParameter( "head_yaw" );
>    GetPoseParameterRange( m_headYawPoseParam, m_headYawMin, m_headYawMax );
>
>    m_headPitchPoseParam = LookupPoseParameter( "head_pitch" );
>    GetPoseParameterRange( m_headPitchPoseParam, m_headPitchMin,
>m_headPitchMax );
>
>    CStudioHdr *hdr = GetModelPtr();
>for ( int i = 0; i < hdr->GetNumPoseParameters() ; i++ )
>
>On 9/3/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]>
>wrote:
>>
>> New patch available:
>>
>> 
http://developer.valvesoftware.com/wiki/SDK_Known_Issues_List#IsFrameLocking_assert
>>
>> Since the scopes were moved higher, it's a little harder to say that the
>> patch is airtight.  But it fixes everything trivially encountered by just
>> loading up HL2DM and moving around a bit.
>>
>> At 2006/09/02 06:06 PM, [EMAIL PROTECTED] wrote:
>> >Thanks, I'm going to assume this means that FrameLocking is an expensive
>> operation and would cause noticeable slow-down machines if done too
>> frequently.  I haven't noticed any problems, but I'll develop another patch
>> with the locks up higher in the stack.
>> >
>> >It sure would be nice to document this API, since modders can't read the
>> closed-source code.
>> >
>> >So my comment in the wiki is correct though that all of those spots
>> represent potential crashers?
>> >
>> >-bk
>> >
>> >At 2006/09/02 05:40 PM, Jay Stelly wrote:
>> >>No, we just rely on virtual memory for that.  This is for when you hit
>> >>the cache ceiling (which is usually 256MB depending on the physical ram
>> >>on the machine).  Obviously on consoles it's lower given the usual
>> >>memory configurations there (which isn't relevant to any of you guys,
>> >>but is to us).
>> >>
>> >>Also, I would definitely NOT recommend the code changes you posted on
>> >>the wiki.  That will cause way too much overhead to protect against a
>> >>pointer dangling.  The scope frames should be at a much higher level.
>> >>
>> >>Jay
>> >>
>> >>
>> >>> -----Original Message-----
>> >>> From: [EMAIL PROTECTED]
>> >>> [mailto:[EMAIL PROTECTED] On Behalf Of
>> >>> [EMAIL PROTECTED]
>> >>> Sent: Saturday, September 02, 2006 12:17 PM
>> >>> To: hlcoders@list.valvesoftware.com
>> >>> Subject: RE: [hlcoders] AssertOnce( pModelCache->IsFrameLocking() );
>> >>>
>> >>> So if the box is low on ram, the HL2 core will memory it's
>> >>> not actively using right that moment?  I think I now
>> >>> understand what the issue is, although I'm confused by the
>> >>> use of scope locking for something like this.
>> >>>
>> >>> In any case I've added MDLCACHE_CRITICAL_SECTION per Jay's
>> >>> instruction, and the result is several dozen fixes, added to
>> >>> the KI list:
>> >>>
>> >>> http://developer.valvesoftware.com/wiki/SDK_Known_Issues_List#
>> >>> IsFrameLocking_assert
>> >>>
>> >>> Confirmation from Valve would be appreciated that this is
>> >>> correct with respect to the way the closed-source core works.
>> >>>
>> >>> -bk
>> >>>
>> >>> At 2006/08/30 09:02 PM, Jay Stelly wrote:
>> >>> >Since there are no explicit unlock operations on the studio
>> >>> headers we
>> >>> >use a concept we call "frame locking" where they are guaranteed to
>> >>> >remain in memory (i.e. not get flushed for some other memory
>> >>> allocation
>> >>> >request) as long as the frame is in scope.  There's a macro for
>> >>> >generating these lock frames called:
>> >>> >
>> >>> >                MDLCACHE_CRITICAL_SECTION();
>> >>> >
>> >>> >
>> >>> >If you search, you'll see these frames declared at the top
>> >>> of a bunch
>> >>> >of the systems (entity think, save/load, etc)  So any studio headers
>> >>> >that are loaded in the scope of that can't be freed until
>> >>> you exit that
>> >>> >scope.  The assert is saying that you aren't within one of
>> >>> those scopes
>> >>> >so theoretically your pointer could get freed if some other memory
>> >>> >request causes the cache to fill later on - so it's not safe
>> >>> to hang on
>> >>> >to this pointer and still call memory management functions
>> >>> in datacache.
>> >>> >
>> >>> >It's easy enough to fix the assert by adding a frame using the macro
>> >>> >above  to whatever entry point is causing you to page in the model.
>> >>> >Don't put one in GetModelPtr() however as that defeats the whole
>> >>> >purpose of this debug instrumentation.
>> >>> >
>> >>> >Jay
>> >>> >
>> >>> >
>> >>> >
>> >>> >> -----Original Message-----
>> >>> >> From: [EMAIL PROTECTED]
>> >>> >> [mailto:[EMAIL PROTECTED] On Behalf Of Aaron
>> >>> >> Schiff
>> >>> >> Sent: Wednesday, August 30, 2006 5:47 PM
>> >>> >> To: hlcoders@list.valvesoftware.com
>> >>> >> Subject: Re: [hlcoders] AssertOnce(
>> >>> pModelCache->IsFrameLocking() );
>> >>> >>
>> >>> >> --
>> >>> >> [ Picked text/plain from multipart/alternative ] More like
>> >>> a problem
>> >>> >> with the calls we make to them.  It seems to only show up when
>> >>> >> initially showing a model...
>> >>> >>
>> >>> >> On 8/30/06, Ryan Sheffer <[EMAIL PROTECTED]> wrote:
>> >>> >> >
>> >>> >> > --
>> >>> >> > [ Picked text/plain from multipart/alternative ] Im also
>> >>> wondering
>> >>> >> > what this is, IsFrameLocking()... Possible problem with
>> >>> our models?
>> >>> >> >
>> >>> >> > On 8/26/06, [EMAIL PROTECTED]
>> >>> >> > <[EMAIL PROTECTED]
>> >>> >> > >
>> >>> >> > wrote:
>> >>> >> > >
>> >>> >> > > AssertOnce( pModelCache->IsFrameLocking() );
>> >>> >> > >
>> >>> >> > > This assert is always hit, both server-side
>> >>> >> baseanimating.cpp(2352)
>> >>> >> > > and client-side c_baseanimating.cpp(931) when a player joins a
>> >>> >> > > server.  The purpose of this assert is unclear.
>> >>> >> Unfortunately the
>> >>> >> > > function it is asserting is closed-source with no
>> >>> >> documentation on
>> >>> >> > > its purpose either.  I've added a KI recommending
>> >>> >> commenting it out for now.
>> >>>
>> >>> _______________________________________________
>> >>> 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