SphereServer BugTracker - SphereServer | |||||
View Issue Details | |||||
ID | Project | Category | View Status | Date Submitted | Last Update |
0002496 | SphereServer | executable - windows build | public | 21-03-15 12:38 | 25-03-15 16:25 |
Reporter | nolok | ||||
Assigned To | XuN | ||||
Priority | normal | Severity | crash | Reproducibility | sometimes |
Status | resolved | Resolution | fixed | ||
Platform | OS | OS Version | |||
Product Version | |||||
Target Version | Fixed in Version | 0.56c Nightly | |||
Nightly Version | Automated (specify build number) | ||||
Experimental Flags | None | ||||
Option Flags | None | ||||
Internal Build Number | |||||
Summary | 0002496: Crash probably due to highly crowded areas | ||||
Description | I'm using sphere to decorate my world with other guys, so i have sectors with 1200-1300 items. There isn't a big lag, but i think that sphere has difficulty to manage these sectors, in fact walking from a crowded sector to another makes the server crash very often and loop generating enormous logs, until i manually kill the server. I tested with nightly builds 0002150 and 0002215. Example log: 20:40:5:'x' commands 't'=1 (it's like .tele) 20:41:DEBUG:__ thread (1624) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 1624 | 0 | NetworkThread::tick | +0 20:41:DEBUG:>> 1624 | 1 | NetworkOutput::processOutput | +15 20:41:DEBUG:>> 1624 | 2 | NetworkOutput::processPacketQueue | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:>> 1624 | 3 | NetworkOutput::sendPacket | +0 20:41:DEBUG:__ thread (2280) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 2280 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:CRITICAL:"Access Violation" (0xfffcf153), in NetworkManager::Tick() 0000001 "cleaning queues" 20:41:CRITICAL:Exception, in NetworkOutput::processPacketQueue() 0000001 "sending" 20:41:DEBUG:id='5', pri='2', packet '2' of '50' to send, length '52' of '20000' 20:41:DEBUG:__ thread (1624) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 1624 | 0 | NetworkThread::tick | +0 20:41:DEBUG:>> 1624 | 1 | NetworkOutput::processOutput | +15 20:41:DEBUG:>> 1624 | 2 | NetworkOutput::processPacketQueue | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:>> 1624 | 3 | NetworkOutput::sendPacket | +16 20:41:DEBUG:id='5', pri='2', packet '3' of '50' to send, length '78' of '20000' 20:41:DEBUG:__ thread (1624) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 1624 | 0 | NetworkThread::tick | +0 20:41:DEBUG:>> 1624 | 1 | NetworkOutput::processOutput | +15 20:41:DEBUG:>> 1624 | 2 | NetworkOutput::processPacketQueue | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:>> 1624 | 3 | NetworkOutput::sendPacket | +16 20:41:DEBUG:__ thread (2280) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 2280 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:id='5', pri='2', packet '4' of '50' to send, length '104' of '20000' 20:41:DEBUG:__ thread (1624) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 1624 | 0 | NetworkThread::tick | +0 20:41:DEBUG:>> 1624 | 1 | NetworkOutput::processOutput | +15 20:41:DEBUG:>> 1624 | 2 | NetworkOutput::processPacketQueue | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:>> 1624 | 3 | NetworkOutput::sendPacket | +32 20:41:DEBUG:id='5', pri='2', packet '5' of '50' to send, length '130' of '20000' 20:41:DEBUG:__ thread (1624) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 1624 | 0 | NetworkThread::tick | +0 20:41:DEBUG:>> 1624 | 1 | NetworkOutput::processOutput | +15 20:41:DEBUG:>> 1624 | 2 | NetworkOutput::processPacketQueue | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:>> 1624 | 3 | NetworkOutput::sendPacket | +47 20:41:DEBUG:id='5', pri='2', packet '6' of '50' to send, length '156' of '20000' 20:41:DEBUG:__ thread (1624) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 1624 | 0 | NetworkThread::tick | +0 20:41:DEBUG:>> 1624 | 1 | NetworkOutput::processOutput | +15 20:41:DEBUG:>> 1624 | 2 | NetworkOutput::processPacketQueue | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:>> 1624 | 3 | NetworkOutput::sendPacket | +47 20:41:DEBUG:id='5', pri='2', packet '7' of '50' to send, length '182' of '20000' 20:41:DEBUG:__ thread (2280) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 2280 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:__ thread (1624) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 1624 | 0 | NetworkThread::tick | +0 20:41:DEBUG:>> 1624 | 1 | NetworkOutput::processOutput | +15 20:41:DEBUG:>> 1624 | 2 | NetworkOutput::processPacketQueue | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:>> 1624 | 3 | NetworkOutput::sendPacket | +63 20:41:DEBUG:id='5', pri='2', packet '8' of '50' to send, length '208' of '20000' 20:41:DEBUG:__ thread (1624) __ | # | _____ function _____________ | ticks passed from previous function start ______ 20:41:DEBUG:>> 1624 | 0 | NetworkThread::tick | +0 20:41:DEBUG:>> 1624 | 1 | NetworkOutput::processOutput | +15 20:41:DEBUG:>> 1624 | 2 | NetworkOutput::processPacketQueue | +0 <-- exception catch point (below is guessed and could be incorrect!) 20:41:DEBUG:>> 1624 | 3 | NetworkOutput::sendPacket | +78 20:41:DEBUG:id='5', pri='2', packet '9' of '50' to send, length '234' of '20000' And so on, for a nice 11 MB log (server crashed in the night, i killed it in the morning). In addition, i think those sectors are a problem also when nobody is there. A guy was working in another town, with very few dynamic items inside, and the server crashed. Here's the log: 23:39:5:'y' commands 'nudgeup 10'=1 23:39:'y' commands uid=040003d1d (paper lantern) to 'nudgeup 10'=1 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:CRITICAL:"Access Violation" (0xfffcf153), in NetworkManager::Tick() 0000001 "cleaning queues" 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) 23:39:DEBUG:__ thread (2352) __ | # | _____ function _____________ | ticks passed from previous function start ______ 23:39:DEBUG:>> 2352 | 0 | NetworkManager::tick | +0 <-- exception catch point (below is guessed and could be incorrect!) Then the server closed itself, so the error part of the log is that, i didn't cut anything. We all are using the Enhanced Client and FeatureSA = 0, but i don't think that's relevant. I also tried to increase in the ini MaxPacketsPerTick from 25 to 35 and 50, MaxQueueSize from 50 to 30, 40 and 60, MaxSizePerTick from 12000 to 13000 and 15000, but it didn't prevent server from crashing, instead in some cases it increased the lag (in the areas with 1200+ items). In the ini i also have UseAsyncNetwork=2, UsePacketPriority=1, UseExtraBuffer=1. | ||||
Steps To Reproduce | |||||
Additional Information | OptionFlags=01|08|080|0100|0200 Experimental=04|08|040|080|0400|0800|0200|080000|020000 I wrote them here because the list below isn't up to date. | ||||
Tags | No tags attached. | ||||
Relationships | |||||
Attached Files | |||||
Issue History | |||||
Date Modified | Username | Field | Change | ||
21-03-15 12:38 | nolok | New Issue | |||
22-03-15 01:43 | Shamino | Note Added: 0002744 | |||
23-03-15 01:32 | Coruja | Note Added: 0002745 | |||
23-03-15 15:41 | XuN | Note Added: 0002746 | |||
23-03-15 16:41 | nolok | Note Added: 0002750 | |||
24-03-15 08:20 | XuN | Note Added: 0002752 | |||
24-03-15 22:01 | nolok | Note Added: 0002753 | |||
25-03-15 16:24 | XuN | Note Added: 0002754 | |||
25-03-15 16:24 | XuN | Status | new => resolved | ||
25-03-15 16:24 | XuN | Fixed in Version | => 0.56c Nightly | ||
25-03-15 16:24 | XuN | Resolution | open => fixed | ||
25-03-15 16:24 | XuN | Assigned To | => XuN |
Notes | |||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|
||||
|
|||||
|
|