View previous topic :: View next topic |
Author |
Message |
Hyper
Joined: 24 Jan 2004 Posts: 1227 Location: Middelburg, The Netherlands
|
Posted: Fri Apr 09, 2004 3:40 pm Post subject: NaliPlayer crashing on reconnect or level switch |
|
|
The MCoopNaliPlayer causes my client to crash on reconnect or level switch. The server keeps running without problems. Any clues?
Quote: |
---------------------------
Critical Error
---------------------------
Assertion failed: Connection [File:C:\Build\UnrealGold\Engine\Src\UnScript.cpp] [Line: 1548]
History: AActor::ProcessRemoteFunction <- (Function MCoop2.MCoopNaliPlayer.NormallyVisible) <- UObject::ProcessEvent <- (MCoopNaliPlayer TheSunspire.MCoopNaliPlayer0, Function MCoop2.MCoopNaliPlayer.PlayerWalking.EndState) <- EndState <- ULevel::DestroyActor <- (MCoopNaliPlayer TheSunspire.MCoopNaliPlayer0) <- UPlayer::Destroy <- UNetConnection::Destroy <- UObject::ConditionalDestroy <- (TcpipConnection Transient.TcpipConnection0) <- DestroyServerConnection <- UNetDriver::Destroy <- UObject::ConditionalDestroy <- (TcpNetDriver Transient.TcpNetDriver0) <- DispatchDestroy <- (7104: TcpNetDriver Transient.TcpNetDriver0) <- DispatchDestroys <- UObject::PurgeGarbage <- UObject::CollectGarbage <- Cleanup <- UGameEngine::LoadMap <- AttemptLoadPending <- TickPending <- UGameEngine::Tick <- UpdateWorld <- MainLoop
---------------------------
OK
---------------------------
|
_________________ Alter your reality...forever.
Hyper.nl Unreal Services
unreal://hypercoop.tk |
|
Back to top |
|
|
Winged Unicorn
Joined: 22 Jan 2004 Posts: 87
|
Posted: Fri Apr 09, 2004 8:12 pm Post subject: |
|
|
Hmm, I'll give it a look as soon as I can. _________________ Ride to the starlight... there, where heroes lie |
|
Back to top |
|
|
dark-_|_-night Guest
|
Posted: Fri Apr 16, 2004 7:49 am Post subject: |
|
|
Hyper this happend mostly random on my ut server (im useing monster coop for ut )
Dose any one else crash randomly when people play as a monster cuz THIS happend to me ONCE when i played your server (i have unreal gold )
Mostly cuz i have to keep my name as a monster and when people see me i just hate it like he** when they start shooting at me
But for most these crashs are happen R-A-Ndomly on my lan server
P.S. hype could u tell people not to shoot monsters unless its a bot please thank you. |
|
Back to top |
|
|
dark-_|_-night Guest
|
Posted: Fri Apr 16, 2004 7:59 am Post subject: |
|
|
I see your probelm This never (well not always) happend when i use a REGULAR install (not bundled up versions) of unreal
So probley its cuz unreal gold's incombabality sh*t i guss
OR seeing that error has something to do with destroy u may have to make sure a "Clone Reaparence Glitch,CRG" didint appear when he connected This happens with bots on most of my mods
Also if this happend ot a player that assertion failed thing might pop up
U might need to check for erros in the script to fix this problem
Also when players connect it takes time for every thing to get on DUe to unreals crappy net code SO my clue is He mustiv goten killed and a CRG error occoured and all of the sudden BAMM!!! assertion failed
This happend to one of my players on my lan game all he had to do was change his player class (From CY23 to CY19 "my stable version) so i could fixe Model23 "CY23" Aslo i made a bot play test and when the bot was killed The body was there but some how something spawned above it and it had the same name of the bot i shot it with a chain burst and it dissapered (The CRG error striked back) So i dug into the code and i mangaed to fixed it :shakehead: So i got him to play test Model-23 and when he Suicided No crash When i killed him No crash so u may need to see if u have a "Syntax" glitch as far as i can say
Rember unreal Gold has a heck load of incompatabilitys dont forgit that |
|
Back to top |
|
|
Zombie
Joined: 27 Jan 2004 Posts: 295
|
Posted: Fri Apr 16, 2004 11:49 am Post subject: |
|
|
I tend to see those "ProcessRemoteFunction" errors whenever a client is destroyed or disconnects from the server at the moment of an initiated replication instance. I had quite a few of those while doing my v226 garbage collection experiements when a player disconnects. I think a Role<Authority always requires the client to recieve a replication reply back from the server before communication is closed or else it spits that error out.
According to normal destruction procedures the current state's EndState() is supposed to be called. My guess (and some obvious hints in that log) is the call to "NormallyVisible" in any EndState() on the PlayerPawn at destruction during disconnect/levelswitch results in the error. What you think? I'd say it's a safe bet to never try any form of Role<Authority replicated function calls in an EndState() and rather keep it to BeginState().
Last edited by Zombie on Fri Apr 16, 2004 12:27 pm; edited 1 time in total |
|
Back to top |
|
|
Winged Unicorn
Joined: 22 Jan 2004 Posts: 87
|
Posted: Fri Apr 16, 2004 4:41 pm Post subject: |
|
|
What you said is basically right, Zombie. In fact, by giving a look at the log you can easily get some useful hints:
Code: | History: AActor::ProcessRemoteFunction <- (Function MCoop2.MCoopNaliPlayer.NormallyVisible) <- UObject::ProcessEvent <- (MCoopNaliPlayer TheSunspire.MCoopNaliPlayer0, Function MCoop2.MCoopNaliPlayer.PlayerWalking.EndState) |
As you can easily see, that piece of log shows how the crash happened when the replicated (client -> server) function NormallyVisible() was called while leaving the PlayerWalking state (PlayerWalking.EndState()).
Now, so far we know where the crash happened, but we also know why it happened:
Code: | Assertion failed: Connection [File:C:\Build\UnrealGold\Engine\Src\UnScript.cpp] [Line: 1548] |
Basically, when a player calls a replicated function the engine will make sure that the player itself is valid. That's done with a simple assert( Connection ) where Connection is a pointer to the "network" player (UNetConnection).
If the player is not valid anymore - for example, if it has been destroyed due to a level change or he/she has disconnected (but the PlayerPawn actor hasn't been destroyed yet) - that Connection pointer will be NULL... therefore the assertion will result in a crash.
Possible solutions: as Zombie suggested, never call a replicated function in EndState() or, if that's absolutely needed, make sure that the UNetConnection is valid (that is, check that PlayerPawn.Player is not None) _________________ Ride to the starlight... there, where heroes lie |
|
Back to top |
|
|
|