Author Topic: A server add-on that tells the host what datablock is being sent to clients  (Read 1005 times)

Some add-on(s) I have enabled on my server randomly crash people who are loading that datablock (when connecting) and considering the number of add-ons I have enabled, trying to figure out what add-on it is would take forever. Does an add-on exist that tells the host (in the console) the name of the datablock being sent to a connecting client? This way I could easily check what datablock caused the client to disconnect.
« Last Edit: February 19, 2016, 09:31:40 AM by Demian »

Unfortunately, no. However you can see the last received datablocks on the client side if you enable trace, it'll show something like Entering onDatablockObjectReceived(index, total).

I'm assuming this is what happens:

1) start writing packet
2) write 1 or 2 datablocks, currently at position 967
3) 967 is less than 1024, write next datablock
4) next datablock is really big and overflows the buffer of 1500 byte
5) corrupted packet is sent to client, crash

Basically the same problem as loading getting stuck.

do you happen to have port's footstep sounds mod enabled

I'm assuming this is what happens:

1) start writing packet
2) write 1 or 2 datablocks, currently at position 967
3) 967 is less than 1024, write next datablock
4) next datablock is really big and overflows the buffer of 1500 byte
5) corrupted packet is sent to client, crash

Basically the same problem as loading getting stuck.
p sure this is not what is happening, the only time i have encountered this is when a field from JumpSound was removed and some people (not all) were crashing because of it
« Last Edit: February 19, 2016, 09:25:06 AM by Gytyyhgfffff »

do you happen to have port's footstep sounds mod enabled
No.

Here's what I have.
Quote

ADDON Bot_Blockhead
ADDON Bot_Hole
ADDON Bot_Horse
ADDON Bot_Shark
ADDON Bot_Zombie
ADDOn Bot_Default

ADDON Brick_18Degree
ADDON Brick_1RandomPack
ADDON Brick_1x1_2side_print
ADDON Brick_2x2FRoundPrint
ADDON Brick_2x2Wedges
ADDON Brick_2x2x1print
ADDON Brick_2x_Cube
ADDON Brick_4x4fPrintPlateC
ADDON Brick_4x4f_PrintPlateFix
ADDON Brick_4x4Round
ADDON Brick_Arch
ADDON Brick_Checkpoint
ADDON Brick_Christmas_Tree
ADDON Brick_Corner
ADDON Brick_Deletion
ADDON Brick_DemiansBB
ADDON Brick_DemiansBB2
ADDON Brick_DemiansBB3
ADDON Brick_Domes
ADDON Brick_Doors
ADDON Brick_Doors_Demian
ADDON Brick_Doors_Demian_Arched
ADDON Brick_Doors_Demian_Big
ADDON Brick_Doors_Demian_Eastern
ADDON Brick_Doors_Demian_Half
ADDON Brick_Doors_Demian_Other
ADDON Brick_Doors_Demian_Thematic
ADDON Brick_Doors_Frameless
ADDON Brick_ExtraArches
ADDON Brick_ExtraPrintBricks
ADDON Brick_ExtraPrints
ADDON Brick_ExtraRamps
ADDON Brick_FloatCubes
ADDON Brick_Food
ADDON Brick_Glass
ADDON Brick_GlassPanes
ADDON Brick_GrillPlate
ADDON Brick_Halloween
ADDON Brick_HollowCubeSet
ADDON Brick_HorizPoles
ADDON Brick_InvertedCorners
ADDON Brick_Large_Cubes
ADDON Brick_ModTer_BasicPack
ADDON Brick_ModTer_InvertedPack
ADDON Brick_MoreRounds
ADDON Brick_Music_Extra
ADDON Brick_Pole
ADDON Brick_PoleAdapters
ADDON Brick_Poster_8x
ADDON Brick_PrintBaseplates
ADDON Brick_PrintBaseplatesCeiling
ADDON Brick_PrintCubes
ADDON Brick_Print_Icons
ADDON Brick_PublicBasePlates
ADDON Brick_Ramp_Prints
ADDON Brick_Round_Corners
ADDON Brick_ShortRangeMusic
ADDON Brick_SingleChest
ADDON Brick_Slanted
ADDON Brick_SmallRampsPack
ADDON Brick_SmallVehicleSpawn
ADDON Brick_Teledoor
ADDON Brick_Tiles
ADDON Brick_Treasure_Chest
ADDON Brick_V15
ADDON Brick_VerticalPlatePack
ADDON Brick_WaterPack
ADDON Brick_Wedge
ADDON Brick_WedgePlus
ADDON Brick_Window
ADDON Brick_Windows
ADDON Brick_Window_Prints
ADDON Brick_WireFence
//ADDON Content_DaleksDoors Console errors
ADDON Content_Kyle
ADDON Content_PackerDoors
ADDON Content_Phydeoux
ADDON Content_Safe
ADDON Content_ZonearkWindows

ADDON Emote_Alarm
ADDON Emote_Confusion
ADDON Emote_Critical
ADDON Emote_Hate
ADDON Emote_Love

//ADDON Event_EffingMagnets Insane trace spam
//ADDON Event_Print_Events Buggy
ADDON Event_2DCamera
ADDON Event_addRelativeVelocity
ADDON Event_BotCanJump
ADDON Event_BrickText
ADDON Event_Camera
ADDON Event_castRelay
ADDON Event_changeVehicle
ADDON Event_ClearMessages
ADDON Event_clTimescale
ADDON Event_Cushion
ADDON Event_Database
ADDON Event_doPlayerTeleport
ADDON Event_dropItem
ADDON Event_Elevators
ADDON Event_emote
ADDON Event_FireAtBrick
ADDON Event_FireRelayNum
ADDON Event_lastProjectile
ADDON Event_MessageBoxOK
ADDON Event_Minigame
ADDOn Event_onBotDamaged
ADDON Event_onChestOpen
ADDON Event_onItemPickup
ADDON Event_Owner
ADDON Event_Passwords
ADDON Event_PathCam
ADDON Event_playSound
ADDON Event_Print
ADDON Event_PromptEvents
ADDON Event_Racing
ADDON Event_RemoveItem
ADDON Event_SaveLoadItems
ADDON Event_setBrickOwnership
ADDON Event_setDamageFlash
ADDON Event_setEventTimeout
ADDON Event_SetExpression
ADDON Event_SetInventory
ADDON Event_SetItem
ADDON Event_setPlayerTransform
ADDON Event_SetProperties
ADDON Event_setTimescale
ADDON Event_setVehicleAsPlayerContr ol
ADDON Event_SetVignette
ADDON Event_spawnHomingProjectile
ADDON Event_VariableReplacers
ADDON Event_Variables
ADDON Event_Vehicle
ADDON Event_VehicleNames
ADDON Event_WaterBrickEvents
ADDON Event_WaterBricks
ADDON Event_Zones

//ADDON GameMode_ZAPT Director ticks trace spam

ADDON Item_Key
ADDON Item_Medpack
ADDON Item_Pill
ADDON Item_PillBottle
ADDON Item_Skis
ADDON Item_Sports
ADDON Item_Torch

ADDON Light_Ambient
ADDON Light_Animated
ADDON Light_Basic
ADDON Light_Candle
ADDON Light_Cityz
ADDON Light_Eksi
ADDON Light_FireLights
ADDON Light_Orb
ADDON Light_ZSNO

ADDON Particle_AdvancedLasers
ADDON Particle_Basic
ADDON Particle_Candle
ADDON particle_CasualBuild
ADDON Particle_CloudEmitters
ADDON particle_FoggyBuild
ADDON Particle_FX_Cans
ADDON Particle_Grass
ADDON Particle_Player
ADDON particle_SciFiBuild
ADDON Particle_SquareEmitters
ADDON Particle_Tools
ADDON Particle_Tools_Ext
ADDON particle_WeatherBuild

//ADDON Player_Atlas crashes clients
ADDON Player_Bull
ADDON Player_Cow
ADDON Player_Fuel_Jet
ADDON Player_Jump_Jet
ADDON Player_Leap_Jet
//ADDON Player_Mech errors 'n stuff
ADDON Player_NoMove
ADDON Player_No_Jet
//ADDON Player_PBody probs crashes
ADDON Player_Quake
ADDON Player_TopDown

ADDON Print_1x1f_DefaultPlus
ADDON Print_1x1f_DemiansArrows
ADDON Print_1x1f_FloorTile
ADDON Print_1x1f_KeyboardGeneric
ADDON Print_1x1_DemiansArrows
ADDON Print_1x2f_BLPRemote
ADDON Print_1x2f_Default
ADDON Print_1x2f_DefaultPlus
ADDON Print_1x2f_DemiansMoneyPrints
ADDON Print_1x2f_ExtendedBlanks
ADDON Print_1x2f_KeyboardGeneric
ADDON Print_2x2f_Crate
ADDON Print_2x2f_Default
ADDON Print_2x2f_DemiansArrows
ADDON Print_2x2f_Dice
ADDON Print_2x2F_JG_CratesPlus
ADDON Print_2x2r_Default
ADDON Print_2x2r_DemiansArrows
ADDON Print_2x2r_Monitor3
ADDON Print_Letters_Default
ADDON Print_Letters_Extra
ADDON Print_ModTer_Default

ADDON Projectile_GravityRocket
ADDON Projectile_Pinball
ADDON Projectile_Pong
ADDON Projectile_Radio_Wave
ADDOn Projectile_SynthPongs

ADDON Script_epicORB
ADDON Script_NoAdminFlood
ADDON Script_PaintCanPicker
ADDON Script_PathCam
ADDON Script_Wrench
ADDON Server_VignetteDamage

ADDON Sound_Beep-Pack
ADDON Sound_Beeps
ADDON Sound_Blockland
ADDON Sound_Phone
ADDON Sound_Synth4

ADDON Support_ClearPlayerEvents
ADDON Support_DediLoader
ADDON Support_Doors
ADDON Support_HeightControl
ADDON Support_Interactive_Vehicle
ADDON Support_InventorySlots
ADDON Support_LegacyDoors
ADDON Support_Player_Persistence

ADDON System_Use

ADDON Tool_NewDuplicator
ADDON Tool_Fill_Can
ADDON Tool_SwissArmyGun

ADDON Vehicle_AdvancedHorse
ADDON Vehicle_Ball
ADDON Vehicle_Basic_Skateboard
ADDON Vehicle_Bicycles
ADDON Vehicle_Biplane
ADDON Vehicle_BotKart
ADDON Vehicle_BrickKart
ADDON Vehicle_Dragster
ADDON Vehicle_DriftingJeep
ADDON Vehicle_Flammable_Barrel
ADDON Vehicle_Flying_Wheeled_Jeep
ADDON Vehicle_Fordor_Sedan
ADDON Vehicle_Funball
ADDON Vehicle_GravityJeep
ADDON Vehicle_Heavy_Machine_Gun
ADDON Vehicle_Horse
ADDON Vehicle_hoverboard
ADDON Vehicle_Jeep
ADDON Vehicle_Lavaboat
ADDON Vehicle_LegoQuad
ADDON Vehicle_Longhorn
ADDON Vehicle_Magic_Carpet
ADDON Vehicle_MotorcyclePack
ADDON Vehicle_Pirate_Cannon
ADDON Vehicle_Racing_Gokart
ADDON Vehicle_Rowboat
ADDON Vehicle_Scooter
ADDON Vehicle_Segway
ADDON Vehicle_Snail
ADDON Vehicle_Soapbox_Racer
ADDON Vehicle_SpeedKart
ADDON Vehicle_Stunt_Buggy
ADDON Vehicle_Tank
ADDON Vehicle_toboggan
ADDON Vehicle_Waterpark
ADDON Vehicle_WaterSports

//ADDON Weapon_PortalGun Insane trace spam
ADDON Weapon_Bow
ADDON Weapon_Chainsaw
ADDON Weapon_DemiansDodgeball
ADDON Weapon_GravityGun
ADDON Weapon_Gun
ADDON Weapon_Guns_Akimbo
ADDON Weapon_Horse_Ray
ADDON Weapon_LaserPointer
ADDON Weapon_Melee_Extended
ADDON Weapon_Molotov
ADDON Weapon_Package_Explosive1
ADDON Weapon_Package_Explosive2
ADDON Weapon_Package_Tier1
ADDON Weapon_Package_Tier1A
ADDON Weapon_Package_Tier2
ADDON Weapon_Package_Tier2A
ADDON Weapon_Push_Broom
ADDON Weapon_Rocket_Akimbo
ADDON Weapon_Rocket_Launcher
ADDON Weapon_ShockWave
ADDON Weapon_Shotgun
ADDON Weapon_Snowball
ADDON Weapon_Spear
ADDON Weapon_Sword
//ADDON Weapon_WH40k_Tau missing pngs

p sure this is not what is happening, the only time i have encountered this is when a field from JumpSound was removed and some people (not all) were crashing because of it
The weird thing is that clients do get in if they try enough times.

p sure this is not what is happening, the only time i have encountered this is when a field from JumpSound was removed and some people (not all) were crashing because of it

I'm pretty sure that's what's happening, it's also why it happens seemingly randomly. Eventually someone will say something in chat or any other event happens which causes it to start writing the big datablock at almost the end of a packet.

For example, if you're loading files in a server with noone talking, and send a ~50-60 character text message at the right time, everyone's load will break.

Datablocks can be quite big so they suffer from the same problem.

wait demian are you talking about something like a crash that sends clients to desktop or are we talking about a load freeze

wait demian are you talking about something like a crash that sends clients to desktop or are we talking about a load freeze

Loading files will just stop on a corrupted packet, but a datablock event is expected to have an exact structure. If it doesn't, blockland can easily crash.

wait demian are you talking about something like a crash that sends clients to desktop or are we talking about a load freeze
I have no idea. All I know is that the clients disconnect.

I'm pretty sure that's what's happening, it's also why it happens seemingly randomly. Eventually someone will say something in chat or any other event happens which causes it to start writing the big datablock at almost the end of a packet.

For example, if you're loading files in a server with noone talking, and send a ~50-60 character text message at the right time, everyone's load will break.

Datablocks can be quite big so they suffer from the same problem.
Sounds to me like the datablock loading system is fundamentally flawed if you crash clients by sending a chat message.

I have no idea. All I know is that the clients disconnect.

And... you didn't ask them what happened?

And... you didn't ask them what happened?
Few clients come back after the second crash and if they do they're only in for a second or two before another crash. Not enough time to chat. I also can't contact them outside my server because RTB IRC is no longer a thing.

it would help considerably if someone could tell you what the error message the popup dialog says

i used to have issues like this but they were always tracable to some vehicle addon or datablock being incorrectly overwritten or written - namely, the same datablock is being told to use a different .dts after being initialized with a different one. try disabling your vehicles list and see if that's the problem

Sounds to me like the datablock loading system is fundamentally flawed if you crash clients by sending a chat message.

The system essentially work like this:

while(event queue not empty)
{
    if(current position in buffer > 1024)
        break

    write next event to buffer
}

The buffer is 1500 byte long. If you start writing a 700 byte event at position 900 the packet will be corrupted.

This is why loading files used to break if you reset the minigame and similar stuff.