Opened 11 years ago

Closed 10 years ago

#1966 closed defect (fixed)

JS OOM error in the simulation during multiplayer game

Reported by: Yves Owned by: Yves
Priority: Release Blocker Milestone: Alpha 16
Component: UI & Simulation Keywords:
Cc: Patch:

Description

We played a 3vs3 multiplayer game today. After maybe 20 minutes an out of memory error happend which caused the game to get out of sync.

Cache: 500 (total: 3952) MiB
TIMER| InitVfs: 4.94179 ms
Sound: AlcInit success, using OpenAL Soft
TIMER| CONFIG_Init: 14.4756 ms
TIMER| InitScripting: 18.5805 ms
TIMER| RunHardwareDetection: 30.655 ms
TIMER| write_sys_info: 16.4898 ms
TIMER| InitRenderer: 7.86208 ms
TIMER| ps_console: 3.21151 ms
TIMER| ps_lang_hotkeys: 832.736 us
TIMER| common/setup.xml: 1.95271 ms
TIMER| common/styles.xml: 452.336 us
TIMER| common/sprite1.xml: 2.5114 ms
TIMER| common/init.xml: 2.50576 ms
TIMER| common/common_sprites.xml: 2.61173 ms
TIMER| common/common_styles.xml: 542.565 us
TIMER| pregame/sprites.xml: 1.32224 ms
TIMER| pregame/styles.xml: 181.876 us
TIMER| pregame/mainmenu.xml: 8.33216 ms
TIMER| common/global.xml: 735.943 us
TIMER| common/setup.xml: 712.346 us
TIMER| common/styles.xml: 41.314 us
TIMER| common/sprite1.xml: 1.87188 ms
TIMER| common/common_sprites.xml: 2.26623 ms
TIMER| common/common_styles.xml: 313.529 us
TIMER| splashscreen/styles.xml: 1.08722 ms
TIMER| splashscreen/setup.xml: 315.275 us
TIMER| splashscreen/splashscreen.xml: 1.5622 ms
Using Xcursor to sys_cursor_create 32 x 32 cursor
TIMER| common/setup.xml: 2.28497 ms
TIMER| common/styles.xml: 126.826 us
TIMER| common/sprite1.xml: 5.8688 ms
TIMER| common/common_sprites.xml: 5.36695 ms
TIMER| common/common_styles.xml: 277.615 us
TIMER| gamesetup/setup.xml: 1.09997 ms
TIMER| gamesetup/sprites.xml: 325.028 us
TIMER| gamesetup/styles.xml: 216.078 us
TIMER| gamesetup/gamesetup_mp.xml: 3.55686 ms
TIMER| common/global.xml: 362.411 us
TIMER| common/setup.xml: 2.21615 ms
TIMER| common/styles.xml: 126.313 us
TIMER| common/sprite1.xml: 6.00183 ms
TIMER| common/common_sprites.xml: 7.13513 ms
TIMER| common/common_styles.xml: 903.011 us
TIMER| gamesetup/setup.xml: 208.275 us
TIMER| gamesetup/sprites.xml: 123.895 us
TIMER| gamesetup/styles.xml: 158.583 us
TIMER| gamesetup/gamesetup.xml: 29.0741 ms
TIMER| common/global.xml: 484.77 us
TIMER| common/setup.xml: 693.198 us
TIMER| common/styles.xml: 39.894 us
TIMER| common/sprite1.xml: 1.88863 ms
TIMER| common/init.xml: 1.37923 ms
TIMER| common/common_sprites.xml: 2.1852 ms
TIMER| common/common_styles.xml: 284.766 us
TIMER| loading/styles.xml: 1.03156 ms
TIMER| loading/sprites.xml: 631.974 us
TIMER| loading/loading.xml: 1.75788 ms
TIMER| common/global.xml: 348.165 us
Using Xcursor to sys_cursor_create 32 x 32 cursor
TIMER| ParseTerrain: 10.7844 ms
TIMER| LoadDLL: 4.54799 ms
TIMER| ParseEntities: 1.34597 s
TIMER| common/setup.xml: 728.721 us
TIMER| common/styles.xml: 41.43 us
TIMER| common/sprite1.xml: 1.8051 ms
TIMER| common/icon_sprites.xml: 415.679 us
TIMER| common/common_sprites.xml: 2.15779 ms
TIMER| common/common_styles.xml: 280.854 us
TIMER| session/sprites.xml: 3.95126 ms
TIMER| session/setup.xml: 183.894 us
TIMER| session/styles.xml: 359.639 us
TIMER| session/session.xml: 119.652 ms
TIMER| common/global.xml: 1.50363 ms
GAME STARTED, ALL INIT COMPLETE
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
WARNING: OpenAL: stereo sounds can't be positioned: audio/interface/alarm/alarmcreatecavalry_1.ogg
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
WARNING: OpenAL: stereo sounds can't be positioned: audio/interface/alarm/alarmcreateworker_1.ogg
Using Xcursor to sys_cursor_create 32 x 32 cursor
Using Xcursor to sys_cursor_create 32 x 32 cursor
ERROR: CXeromyces: Parse error: (null):0: Extra element Melee in interleave
ERROR: CXeromyces: Parse error: units/cart_hero_hannibal:1: Element Attack failed to validate content
ERROR: RelaxNGValidator: Validation failed
ERROR: Failed to validate entity template 'units/cart_hero_hannibal'
ERROR: JavaScript error: simulation/helpers/Player.js line 178
out of memory
ERROR: Script message handler OnUpdate failed
TIMER| common/setup.xml: 809.924 us
TIMER| common/styles.xml: 49.285 us
TIMER| common/sprite1.xml: 1.97374 ms
TIMER| common/common_sprites.xml: 2.33563 ms
TIMER| common/common_styles.xml: 317.041 us
TIMER| msgbox/msgbox.xml: 2.1085 ms
ERROR: JavaScript error: simulation/components/Attack.js line 264
out of memory
ERROR: Script message handler OnUpdate failed
ERROR: Error in timer on entity 6371, IID 73, function TimerHandler: TypeError: this.order is undefined
  ([object Object])@simulation/components/UnitAI.js:1400
  ([object Object],[object Object])@simulation/helpers/FSM.js:274
  ([object Object],800)@simulation/components/UnitAI.js:2917
  ([object Object])@simulation/components/Timer.js:93

ERROR: Error in timer on entity 6371, IID 73, function TimerHandler: TypeError: this.order is undefined
  ([object Object])@simulation/components/UnitAI.js:1400
  ([object Object],[object Object])@simulation/helpers/FSM.js:274
  ([object Object],300)@simulation/components/UnitAI.js:2917
  ([object Object])@simulation/components/Timer.js:93

ERROR: JavaScript error: simulation/components/UnitAI.js line 1733
out of memory
ERROR: Script message handler OnUpdate failed
ERROR: Error in timer on entity 6371, IID 73, function TimerHandler: TypeError: this.order is undefined
  ([object Object])@simulation/components/UnitAI.js:1400
  ([object Object],[object Object])@simulation/helpers/FSM.js:274
  ([object Object],300)@simulation/components/UnitAI.js:2917
  ([object Object])@simulation/components/Timer.js:93

ERROR: JavaScript error: simulation/components/ResourceGatherer.js line 248
out of memory
ERROR: Script message handler OnUpdate failed
ERROR: JavaScript error: simulation/helpers/Player.js line 178
out of memory
ERROR: Script message handler OnUpdate failed
ERROR: JavaScript error: simulation/components/ResourceGatherer.js line 137
out of memory
ERROR: Script message handler OnUpdate failed
ERROR: JavaScript error: out of memory
terminate called after throwing an instance of 'PSERROR_Serialize_ScriptError'
  what():  JS_ValueToString failed
Abgebrochen (Speicherabzug geschrieben)

Attachments (1)

alpha123-commands.txt.gz (120.7 KB ) - added by alpha123 11 years ago.

Download all attachments as: .zip

Change History (16)

by alpha123, 11 years ago

Attachment: alpha123-commands.txt.gz added

comment:1 by alpha123, 11 years ago

I did not get the out-of-memory error nor was I ever disconnected, but here's my commands.txt anyway.

comment:2 by sanderd17, 11 years ago

See also #1436?

comment:3 by scythetwirler, 11 years ago

#2035 may be similar.

comment:4 by ben, 11 years ago

In 13659:

Increases simulation script runtime to 32 MB to reduce OOM errors, refs #1436, #1966, #2035

comment:5 by historic_bruno, 11 years ago

Resolution: fixed
Status: newclosed

I'm going to resolve these as fixed, but if you get more JS OOM errors, please reopen or create a new ticket and describe the game setup so we can adjust the limit (AIs, num players, map and size, player OSes, etc.)

comment:6 by leper, 11 years ago

In 13794:

Increase simulation script runtime size again. Refs #1436, #1966 and #2035.

comment:7 by scythetwirler, 10 years ago

Milestone: Alpha 14Alpha 16
Resolution: fixed
Status: closedreopened

I've gotten reports from many users in the lobby that the OOM is still happening in long or large games.

comment:8 by Yves, 10 years ago

#2241 makes everything in the same thread use the same runtime. Therefore the limit isn't separate anymore for the GUI, the Simulation, the AI etc. but we have a single limit for all of them. That's mandatory because the new SpiderMonkey asserts that not more than one JS Runtime runs in the same thread and I think it's also better because having one hardcoded limit is better than having multiple hardcoded limits.

comment:9 by Niek, 10 years ago

Could it be due to the fact that Alpha 15 players are mixed up with SVN players?

I mean: I've got recently some OOS errors (without AI) directly at startup of the game.

Last edited 10 years ago by Niek (previous) (diff)

in reply to:  9 comment:10 by Yves, 10 years ago

Replying to niektb:

Could it be due to the fact that Alpha 15 players are mixed up with SVN players?

I mean: I've got recently some OOS errors (without AI) directly at startup of the game.

This is about OOM (Out Of Memory) errors and not OOS (Out Of Sync) errors.

comment:11 by Niek, 10 years ago

Oh, my fault.

comment:12 by Yves, 10 years ago

In 14496:

Removes g_ScriptingHost and implements global to compartment 1 to 1 relation.
Each GUI Page gets its own compartment and all ScriptInterfaces in the same thread should now use the same JS Runtime.
This is required for the SpiderMonkey upgrade.
Check the ticket for details.

Closes #2241
Refs #1886
Refs #1966

comment:13 by Yves, 10 years ago

Owner: set to Yves
Status: reopenednew

The plan is to get the SpiderMonkey upgrade ready for Alpha 16. The upgrade will change the runtime size, what contexts/compartments are part of the runtime and the GC behaviour. Tweaking the runtime size or GC frequency before the upgrade does not make sense and we'll have to test again if there are OOM errors left after the upgrade.

comment:14 by Yves, 10 years ago

Status: newassigned

comment:15 by Yves, 10 years ago

Resolution: fixed
Status: assignedclosed

Closing this ticket because the SpiderMonkey upgrade (#1886) has basically changed everything in regard to Javascript memory and garbage collection. If the problem still happens, we have to reopen this ticket.

Note: See TracTickets for help on using tickets.