Oh, and don't run  ServerExecute(), you don't need to do that (it
shouldn't crash anything, but it isn't appropriate for you to call
that).

- Alfred

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Alfred
Reynolds
Sent: Sunday, March 27, 2005 1:23 PM
To: hlcoders@list.valvesoftware.com
Subject: RE: [hlcoders] Re: FireGameEvent, kickid, ServerExecute, crash

Looks like a null pointer is trying to be de-referenced. Have you
stepped the code and verified that this is not the problem?

- Alfred

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Mattie
Casper
Sent: Sunday, March 27, 2005 10:20 AM
To: hlcoders@list.valvesoftware.com
Subject: Re: [hlcoders] Re: FireGameEvent, kickid, ServerExecute, crash

Yep, though this is a little slow-going since it requires a player
connection / dedicated server to reproduce the issue.

I see two different problems since the latest Valve update. I can obtain
crash dumps if anyone is particularly keen on them. Yet, since the addon
produces this on any Windows dedicated server I tried, this should be
unnecessary.

First was a crash and this is when srcds.exe was launched in GUI mode.
It's a read access violaton on 0x0040:

00000040()
AdminServer.dll!025012d7()
kernel32.dll!7c81eb33()
AdminServer.dll!024db411()
vstdlib.dll!00877101()
AdminServer.dll!025012c6()
 AdminServer.dll!024cc89d()
 dedicated.dll!10004bd6()
 dedicated.dll!10018903()
dedicated.dll!10018957()

For a Windows console dedicated server, the crash appears to have
morphed into an infinite loop that eats all the server CPU cycles-- not
sure if the latest Valve update causes that or if trying to get a
debugger involved has changed the nature of the problem slightly.

-Mattie


----- Original Message -----
From: "Daniel Jennings" <[EMAIL PROTECTED]>
To: <hlcoders@list.valvesoftware.com>
Sent: Saturday, March 26, 2005 9:24 PM
Subject: Re: [hlcoders] Re: FireGameEvent, kickid, ServerExecute, crash


> Have you run it through a debugger to check the stack when it crashes?
>
> ----- Original Message -----
> From: "Adam "amckern" Mckern" <[EMAIL PROTECTED]>
> To: <hlcoders@list.valvesoftware.com>
> Sent: Saturday, March 26, 2005 5:13 PM
> Subject: Re: [hlcoders] Re: FireGameEvent, kickid, ServerExecute,
> crash
>
>
>> are your runing the lattest build of ded server, and have you thought

>> of adding a break point?
>>
>>
>> --- Mattie Casper <[EMAIL PROTECTED]> wrote:
>>
>> > Events are caused within events all the time--- people use events
>> > to do all sorts of things: kick players, make people swap teams,
>> > teamkill punishment, etc.
>> > Even if server event reentrance is a problem, we need some Valve
>> > documentation saying this is forbidden or dangerous.
>> >
>> > To clarify three points:
>> > 1. I'm not interested in specifically kicking a player. I'm
>> > interested in doing X during an event where X is anything the
>> > administrator wants. So if he wants to kick a player that's his
>> > thing. I, personally, am not trying to kick anyone during an event.

>> > I'm letting people run semi-special config files during an event.
>> > 2. The crash doesn't just happen when plugin code specifically
>> > kicks someone. It can happen when a player is kicked via some
>> > administrative plugin, by the console, etc. It just needs to happen

>> > at the around the time an event calls ServerExecute.
>> > 3. The example below is the smallest example I made to reproduce
>> > the problem.
>> > I'm no newbie to coding-- I've considered all sorts of workarounds.

>> > Like scheduling things independently via GameFrame, avoiding the
>> > ServerExecute, etc.
>> > Unfortunately, these alternatives are substandard/messy and,
>> > really, I just need someone at Valve to say "this is a bug, we'll
>> > fix it" or "ServerExecute during an event is unsupported because of

>> > X and we'll document it as such going forward". If I've missed
>> > existing documentation to this effect, I'm hoping someone on the
>> > list can point me to it. (Educated guesses stated as if they were
>> > fact won't help me, though.)
>> >
>> > Thanks,
>> > -Mattie
>> >
>> >
>> > cheeseh wrote:
>> >
>> ---------------------------------------------------------------------
>> ----
>> >
>> > I am guessing that when you kick a player another event is
>> > triggered that tells that the player was kicked/left the server.
>> > You cannot have two events fire inside each other, I am taking this

>> > from the old "net message" code that was from HL1, you could not
>> > have two messages start before they end.
>> >
>> > Instead of kicking the player there, try raising a flag (try
>> > storing a global boolean variable and the player id) and check it
>> > on startframe (or GameFrame () as it is now in HL2 I think) when
>> > the flag is true, kick the stored player id, then set the flag to
>> > false. In the event code replace it with setting the boolean to
>> > true and setting the playerid to the userid.----- Original Message
>> > -----
>> > From: "Mattie Casper" <[EMAIL PROTECTED]>
>> > To: <hlcoders@list.valvesoftware.com>
>> > Sent: Saturday, March 26, 2005 9:25 AM
>> > Subject: FireGameEvent, kickid, ServerExecute, crash
>> >
>> >
>> > > Hello,
>> > >
>> > > I've found what seems, for me, to be a really
>> > annoying bug in CSS (and
>> > > probably mods). The following problem happens
>> > regardless of whether you use
>> > > IGameEventListener or IGameEventListener2.
>> > >
>> > > My Windows server crashes 98% of the time with the
>> > following code in a
>> > > listener/plugin:
>> > >
>> > >
>> > > void CEmptyServerPlugin::FireGameEvent( IGameEvent
>> > * event )
>> > > {
>> > > const char * name = event->GetName();
>> > >    if (FStrEq(name, "player_changename"))
>> > >    {
>> > >        if(tester_cvar.GetInt()==1)
>> > >        {
>> > >            Msg("Kicking ya.\n");
>> > >            int userid = event->GetInt("userid");
>> > >            char szMessage[1024];
>> > >            sprintf(szMessage, "kickid %d Go
>> > away.\n", userid);
>> > >            engine->ServerCommand(szMessage);
>> > >            if (tester2_cvar.GetInt()==1)
>> > >            {
>> > >                // Crashes the server
>> > >                engine->ServerExecute();
>> > >            }
>> > >        }
>> > >    }
>> > > }
>> > >
>> > > Basically, this silly code causes a player to get
>> > kicked immediately when he
>> > > tries to change his name. He certainly does get
>> > kicked, but the server crashes
>> > > immediately after.
>> > >
>> > > This is just the sample reproduction code, but the
>> > problem shows itself at a
>> > > much deeper point in my EventScripts plugin when
>> > users are kicked in the
>> > > middle of an event. It can happen at times
>> > regardless of whether the event
>> > > handler is doing the kicking (i.e. another plugin
>> > or user could be kicking the
>> > > player while my event handlers are firing). I
>> > believe it is a timing or
>> > > threading issue because if I place a Windows
>> > Sleep(100) after the above
>> > > ServerExecute call, the crash usually doesn't
>> > happen.
>> > >
>> > > Avoiding ServerExecute() is not really an option
>> > for me because I truly need
>> > > the command (not necessarily kick) executed
>> > immediately (typically an exec of
>> > > a cfg file). Regardless, the documentation places
>> > no caveats on when
>> > > ServerExecute() can be called, so I haven't been
>> > afraid to do so when needed.
>> > >
>> > > Anyone have any recommendations or thoughts here?
>> > >
>> > > Thanks for your help,
>> > > -Mattie
>> > >
>> > >
>> >
>> >
>> > _______________________________________________
>> > To unsubscribe, edit your list preferences, or view the list
>> > archives, please visit:
>> >
>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>> >
>> >
>>
>>
>> http://ammahls.com
>>
>>
>>
>>
>> __________________________________
>> Do you Yahoo!?
>> Make Yahoo! your home page
>> http://www.yahoo.com/r/hs
>>
>> _______________________________________________
>> 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