Page MenuHomeSchine - Phabricator

Starmade | build mode undo/redo is incomplete
Closed, FinishedPublic

Description

This has happened a few times now to me, thought I'd submit a bug report for it.

Since I always double-tap undo, it may be a part of the issue. But the game shouldnt crash from that...

Log from just before the crash:

[2016-03-23 16:18:08] [CONTROLLER][ADD-UNIT] (Client(20)): PlS[TechPriest ; id(2876)(19)f(10603)] Added to controllers: Ship[River Blue](2215)
[2016-03-23 16:18:10] [CLIENT] FORMATING: [368]; type: Integer
[2016-03-23 16:18:10] [CLIENT] FORMATING: [[SERVER]: SERVER AUTO-SAVING]; type: String
[2016-03-23 16:18:10] [CLIENT][POPUP] GAME: [SERVER]: SERVER AUTO-SAVING
[2016-03-23 16:18:15] [CLIENT][POPUP] ERROR: Server under heavy load.
If this message persists, tell an
admin to send a report.
[2016-03-23 16:18:15] [CLIENTPROCESSOR][WARNING] Ping time of client (20) exceeded time limit: retrying! pending requests: {}
[2016-03-23 16:18:18] DRAWING DEBUG: 20000482; ; 0; 2; 482; 
[2016-03-23 16:18:18] [SINGLE_BLOCK_DRAWER] CHECKING FOR ERROR
[2016-03-23 16:18:19] [UNDO] ADDING REDO obfuscated.cR@195fc333(;ADD: 1; REMOVES: 0)
[2016-03-23 16:18:20] [UNDO] ADDING REDO obfuscated.cR@7e68e6ce(;ADD: 1; REMOVES: 0)
[2016-03-23 16:18:20] [GLFRAME] THROWN: class java.lang.NullPointerException Now Printing StackTrace
[2016-03-23 16:18:20] java.lang.NullPointerException: Exception: REQUESTED TYPE 0 IS NULL
[2016-03-23 16:18:20] 	at org.schema.game.common.data.element.ElementKeyMap.getInfo(SourceFile:596)
[2016-03-23 16:18:20] 	at obfuscated.cR.a(SourceFile:45)
[2016-03-23 16:18:20] 	at org.schema.game.common.controller.EditableSendableSegmentController.undo(SourceFile:2443)
[2016-03-23 16:18:20] 	at obfuscated.ds.g(SourceFile:1801)
[2016-03-23 16:18:20] 	at obfuscated.da.e(SourceFile:155)
[2016-03-23 16:18:20] 	at obfuscated.of.callback(SourceFile:820)
[2016-03-23 16:18:20] 	at org.schema.schine.network.client.GUICallbackController.execute(SourceFile:40)
[2016-03-23 16:18:20] 	at obfuscated.C.updateStateInput(SourceFile:1365)
[2016-03-23 16:18:20] 	at obfuscated.avy.a(SourceFile:1167)
[2016-03-23 16:18:20] 	at obfuscated.C.h(SourceFile:2866)
[2016-03-23 16:18:20] 	at obfuscated.QF.run(SourceFile:92)
[2016-03-23 16:18:20] 	at java.lang.Thread.run(Unknown Source)
[2016-03-23 16:18:20] [GLFRAME] THROWN: class java.lang.NullPointerExceptionPrinting StackTrace DONE
[2016-03-23 16:18:20] java.lang.NullPointerException: Exception: REQUESTED TYPE 0 IS NULL
[2016-03-23 16:18:20] 	at org.schema.game.common.data.element.ElementKeyMap.getInfo(SourceFile:596)
[2016-03-23 16:18:20] 	at obfuscated.cR.a(SourceFile:45)
[2016-03-23 16:18:20] 	at org.schema.game.common.controller.EditableSendableSegmentController.undo(SourceFile:2443)
[2016-03-23 16:18:20] 	at obfuscated.ds.g(SourceFile:1801)
[2016-03-23 16:18:20] 	at obfuscated.da.e(SourceFile:155)
[2016-03-23 16:18:20] 	at obfuscated.of.callback(SourceFile:820)
[2016-03-23 16:18:20] 	at org.schema.schine.network.client.GUICallbackController.execute(SourceFile:40)
[2016-03-23 16:18:20] 	at obfuscated.C.updateStateInput(SourceFile:1365)
[2016-03-23 16:18:20] 	at obfuscated.avy.a(SourceFile:1167)
[2016-03-23 16:18:20] 	at obfuscated.C.h(SourceFile:2866)
[2016-03-23 16:18:20] 	at obfuscated.QF.run(SourceFile:92)
[2016-03-23 16:18:20] 	at java.lang.Thread.run(Unknown Source)
[2016-03-23 16:18:32] [CONTROLLERSTATE] Client(20); PlS[kalash ; id(6363)(23)f(10007)] CONTROLLER REQUEST RECEIVED  ControllerRequest [player=PlS[kalash ; id(6363)(23)f(10007)], fromId=6712 (PlayerCharacter[(ENTITY_PLAYERCHARACTER_kalash)(6712)]), fromPos=(0, 0, 0), toId=6184 (Ship[FM-Spongerl28](6184)), toPos=(8, 8, 8), hide=true]
[2016-03-23 16:18:32] [CONTROLLERSTATE] Client(20); PlS[kalash ; id(6363)(23)f(10007)] CONTROLLER REQUEST RECEIVED  ControllerRequest [player=PlS[kalash ; id(6363)(23)f(10007)], fromId=6712 (PlayerCharacter[(ENTITY_PLAYERCHARACTER_kalash)(6712)]), fromPos=(0, 0, 0), toId=6184 (Ship[FM-Spongerl28](6184)), toPos=(8, 8, 8), hide=true]
[2016-03-23 16:18:40] AGAIN PRINTING STACK TRACE
[2016-03-23 16:18:40] java.lang.NullPointerException: Exception: REQUESTED TYPE 0 IS NULL
[2016-03-23 16:18:40] 	at org.schema.game.common.data.element.ElementKeyMap.getInfo(SourceFile:596)
[2016-03-23 16:18:40] 	at obfuscated.cR.a(SourceFile:45)
[2016-03-23 16:18:40] 	at org.schema.game.common.controller.EditableSendableSegmentController.undo(SourceFile:2443)
[2016-03-23 16:18:40] 	at obfuscated.ds.g(SourceFile:1801)
[2016-03-23 16:18:40] 	at obfuscated.da.e(SourceFile:155)
[2016-03-23 16:18:40] 	at obfuscated.of.callback(SourceFile:820)
[2016-03-23 16:18:40] 	at org.schema.schine.network.client.GUICallbackController.execute(SourceFile:40)
[2016-03-23 16:18:40] 	at obfuscated.C.updateStateInput(SourceFile:1365)
[2016-03-23 16:18:40] 	at obfuscated.avy.a(SourceFile:1167)
[2016-03-23 16:18:40] 	at obfuscated.C.h(SourceFile:2866)
[2016-03-23 16:18:40] 	at obfuscated.QF.run(SourceFile:92)
[2016-03-23 16:18:40] 	at java.lang.Thread.run(Unknown Source)
[2016-03-23 16:18:40] [GLFrame] (ErrorDialog Chose Exit) Error Message: Exception: REQUESTED TYPE 0 IS NULL
[2016-03-23 16:18:40] [CLIENT] SAVING CLIENT CHANNEL all Open: false;
[2016-03-23 16:18:40] [CLIENT] SAVING CLIENT CHANNEL Scenarios Open: true;
[2016-03-23 16:18:40] [CLIENT] SAVING CLIENT CHANNEL Faction10005 Open: false;
[2016-03-23 16:18:40] [CLIENT] chat channels saved
[2016-03-23 16:18:40] !!!! THIS DISPLAYS THE STACKTRACE OF A REGULAR GL FRAME EXIT
[2016-03-23 16:18:40] org.schema.schine.graphicsengine.core.FinishedFrameException
[2016-03-23 16:18:40] 	at obfuscated.avy.a(SourceFile:173)
[2016-03-23 16:18:40] 	at obfuscated.gz.exit(SourceFile:1076)
[2016-03-23 16:18:40] 	at obfuscated.avy.a(SourceFile:291)
[2016-03-23 16:18:40] 	at obfuscated.avy.a(SourceFile:1167)
[2016-03-23 16:18:40] 	at obfuscated.C.h(SourceFile:2866)
[2016-03-23 16:18:40] 	at obfuscated.QF.run(SourceFile:92)
[2016-03-23 16:18:40] 	at java.lang.Thread.run(Unknown Source)
[2016-03-23 16:18:41] [AUDIO] Cleaning up sound system
[2016-03-23 16:18:41] SoundSystem shutting down...
[2016-03-23 16:18:41]     Author: Paul Lamb, www.paulscode.com
[2016-03-23 16:18:41] [CLIENT] CLIENT SHUTDOWN. Dumping client data!
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(485)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(477)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] WARNING: segment writing of Ship[Void Sprite Alpha](7706) on Client(20) took: 62 ms (file header: 0ms)
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(476)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] WARNING: segment writing of Ship[ENTITY_SHIP_D_14545631661890](7703) on Client(20) took: 19 ms (file header: 0ms)
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] WARNING: segment writing of Ship[KDI Totem-class Superblockade Runner](7668) on Client(20) took: 103 ms (file header: 0ms)
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(479)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(480)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] WARNING: segment writing of Ship[Napther_1458748858063](3460) on Client(20) took: 18 ms (file header: 0ms)
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(474)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(483)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] WARNING: segment writing of Ship[ENTITY_SHIP_Black Hole0](7652) on Client(20) took: 65 ms (file header: 0ms)
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(484)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(473)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(478)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(482)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [SENDABLESEGMENTVONTROLLER][WRITE] Client(20) skipping writing transient object Planet(470)[s467]Planet  (r50)[10000000hp]
[2016-03-23 16:18:41] [CLIENT] CLIENT SHUTDOWN. client data saved!
[2016-03-23 16:18:41] [CLIENT] CLIENT SHUTDOWN. thread pool terminated!
[2016-03-23 16:18:41] [GLFrame] terminated frame: exiting program; finished: true
[2016-03-23 16:18:41] Exiting because of terminated frame
[2016-03-23 16:18:41] org.schema.schine.network.client.ClientProcessor@2cbda06e sending logout
[2016-03-23 16:18:41] [CLIENT] CLOSING SOCKET
[2016-03-23 16:18:41] [CLIENT] CLOSING SOCKET
[2016-03-23 16:18:41] [CLIENT] SAVING CLIENT CHANNEL all Open: false;
[2016-03-23 16:18:41] [CLIENT] SAVING CLIENT CHANNEL Scenarios Open: true;
[2016-03-23 16:18:41] [CLIENT] SAVING CLIENT CHANNEL Faction10005 Open: false;
[2016-03-23 16:18:41] java.net.SocketException: Socket closed
[2016-03-23 16:18:41] 	at java.net.SocketInputStream.socketRead0(Native Method)
[2016-03-23 16:18:41] 	at java.net.SocketInputStream.socketRead(Unknown Source)
[2016-03-23 16:18:41] 	at java.net.SocketInputStream.read(Unknown Source)
[2016-03-23 16:18:41] 	at java.net.SocketInputStream.read(Unknown Source)
[2016-03-23 16:18:41] 	at java.net.SocketInputStream.read(Unknown Source)
[2016-03-23 16:18:41] 	at java.io.DataInputStream.readInt(Unknown Source)
[2016-03-23 16:18:41] 	at org.schema.schine.network.client.ClientProcessor.run(SourceFile:321)
[2016-03-23 16:18:41] 	at java.lang.Thread.run(Unknown Source)
[2016-03-23 16:18:41] [ClientProcessor] EXIT: Input Stream closed. Terminating Client Processor
[2016-03-23 16:18:41] [CLIENT] chat channels saved

Details

Commits
Restricted Diffusion Commit
Restricted Diffusion Commit
Restricted Diffusion Commit
Task Type
Bug
Testing Results
Affected Gamemode(s)
Single and Multi
Reproducible
Yes
Last tested (version)
0.199.535
Category
Engine
First occurrence (version)
0.19624
Hardware/Software/System
OS-Specific
No
Hardware-Specific
No
Video Card Vendor
NVIDIA
Video Card Model
GT530
Steps to reproduce
  1. get a new ship core
  2. place down a single line of 10 blocks, starting from the ship core
  3. remove a single block at the end of that line (furthest away from the shipcore, it should be in a different chunk than the ship core)
  4. undo twice, redo twice

It should crash on the last redo.

Tester information (Internal use only)

-QA Testing-

The nullpointer is fixed, I do however notice that in some cases an undo will not be complete.
There is no item loss or duplication, it just doesn't undo the entire action and it seems to be chunk related.

An easy example to reproduce is:

  1. place down a 10 x 10 x 10 cube of something right on a shipcore
  2. remove a 8 x 10 x 10 box at the side where the it crosses over into another chunk (just remove a part furthest away from the ship core)
  3. undo twice, redo twice
  4. undo once

You should see something like that picture instead.
Same can be done with redo.

This sort of thing used to crash you, which doesn't happen anymore but you get a broken undo/redo.

Serverconfig (server.cfg)
<replace this line with the file content>
Clientconfig (settings.cfg)
<replace this line with the file content>

Event Timeline

Napther updated the task description. (Show Details)Mar 23 2016, 4:35 PM
Napther set First occurrence (version) to 0.19624.
Napther changed Video Card Vendor from uncertain to NVIDIA.
Napther set Video Card Model to GT530.
Napther edited Serverconfig (server.cfg). (Show Details)
Napther edited Clientconfig (settings.cfg). (Show Details)
Napther changed Affected Gamemode(s) from none/unspecified to Single and Multi.
Napther changed Reproducible from uncertain to Not on purpose.
Napther set Last tested (version) to 0.19624.
Napther edited Steps to reproduce. (Show Details)
Napther added a subscriber: Napther.
Napther created this task.
Restricted Application added a project: Issue Navigation. · View Herald TranscriptMar 23 2016, 4:35 PM

I should note that its on any ship combo it seems. Got a number of reports from players on Shattered Skies TS and Server that they are getting these random Build mode undo/redo crashes also

lancake claimed this task.

-Validated-

Should be reproducible, could be related to symmetry and a specific block, I've seen a similar issue when pasting a specific template over symmetry.
Logs are probably enough to fix it but I'll try to reproduce it first, no way to know if it's truly fixed otherwise.

lancake updated the task description. (Show Details)Mar 27 2016, 12:27 AM
lancake shifted this object from the S1 Public space to the S3 Starmade space.
lancake changed the visibility from "Custom Policy" to "Public (No Login Required)".
lancake changed the edit policy from "Task Author" to "Starmade (Project)".
lancake set Task Type to Bug.
lancake set Category to Engine.
lancake set OS-Specific to No.
lancake set Hardware-Specific to No.
lancake renamed this task from Build Mode Undo causing crash to Build Mode Undo causing nullpointerexception.
lancake triaged this task as High priority.
Restricted Application added a subscriber: AndyP. · View Herald TranscriptMar 27 2016, 12:27 AM
lancake added a comment.EditedMar 27 2016, 2:48 PM

You can get the same issue with redo, it seems to be caused by sections that cross uninitialized chunks. Seems it's unable to undo or redo those sections without crashing

[2016-03-27 16:47:16] java.lang.NullPointerException: Exception: REQUESTED TYPE 0 IS NULL
[2016-03-27 16:47:16] 	at org.schema.game.common.data.element.ElementKeyMap.getInfo(SourceFile:596)
[2016-03-27 16:47:16] 	at obfuscated.cR.a(SourceFile:45)
[2016-03-27 16:47:16] 	at org.schema.game.common.controller.EditableSendableSegmentController.redo(SourceFile:2332)
[2016-03-27 16:47:16] 	at obfuscated.ds.h(SourceFile:1815)
[2016-03-27 16:47:16] 	at obfuscated.da.f(SourceFile:163)
[2016-03-27 16:47:16] 	at obfuscated.oh.callback(SourceFile:849)
[2016-03-27 16:47:16] 	at org.schema.schine.network.client.GUICallbackController.execute(SourceFile:40)
[2016-03-27 16:47:16] 	at obfuscated.C.updateStateInput(SourceFile:1365)
[2016-03-27 16:47:16] 	at obfuscated.avy.a(SourceFile:1167)
[2016-03-27 16:47:16] 	at obfuscated.C.h(SourceFile:2866)
[2016-03-27 16:47:16] 	at obfuscated.QF.run(SourceFile:92)
[2016-03-27 16:47:16] 	at java.lang.Thread.run(Unknown Source)
lancake changed Reproducible from Not on purpose to Yes.Mar 27 2016, 3:03 PM
lancake edited Steps to reproduce. (Show Details)
lancake edited Tester information (Internal use only). (Show Details)
lancake moved this task from Open / Validated to Confirmed on the Issue Navigation board.
lancake renamed this task from Build Mode Undo causing nullpointerexception to build mode undo/redo causing nullpointerexception.
lancake changed the task status from Open to In Queue (Game).
lancake raised the priority of this task from High to Release Blocker.
Restricted Application edited projects, added Starmade, Game Development; removed Issue Navigation. · View Herald TranscriptMar 27 2016, 3:03 PM

You can get the same issue with redo, it seems to be caused by sections that cross uninitialized chunks. Seems it's unable to undo or redo those sections without crashing

I confirm it was the case when T1291 occured and in the next session where a totally similar case occured too. That time I tried to UNDO that 25 X x 25 Z piece of brown hulls where 100 blocks didn't showed up.


A screen of the above-mentionned degenerated brown piece I had tried to undo. I'll continue to test that kind of 25x25 piece, cause that's the 2nd time in one day that a malformed piece is generated, if it's really recurrent I'll open a bug for that one.

thatothermitch added a commit: Restricted Diffusion Commit.Mar 31 2016, 9:32 PM
thatothermitch changed the task status from In Queue (Game) to Resolved by committing Restricted Diffusion Commit.
Restricted Application edited projects, added Quality Assurance; removed Game Development. · View Herald TranscriptMar 31 2016, 9:32 PM
lancake changed the task status from Resolved to In Queue (Game).Apr 2 2016, 12:15 PM

-QA Testing-

The nullpointer is fixed, I do however notice that in some cases an undo will not be complete.
There is no item loss or duplication, it just doesn't undo the entire action and it seems to be chunk related.

An easy example to reproduce is:

  1. place down a 10 x 10 x 10 cube of something right on a shipcore
  2. remove a 8 x 10 x 10 box at the side where the it crosses over into another chunk (just remove a part furthest away from the ship core)
  3. undo twice, redo twice
  4. undo once

You should see something like that picture instead.
Same can be done with redo.

This sort of thing used to crash you, which doesn't happen anymore but you get a broken undo/redo.

Restricted Application edited projects, added Game Development; removed Quality Assurance. · View Herald TranscriptApr 2 2016, 12:15 PM
lancake edited Tester information (Internal use only). (Show Details)Apr 2 2016, 12:15 PM
lancake renamed this task from build mode undo/redo causing nullpointerexception to build mode undo/redo is incomplete.Apr 8 2016, 7:29 PM
lancake mentioned this in Unknown Object (Maniphest Task).Apr 26 2016, 10:13 AM

Don't know if it's related but during an undo-redo-undo-redoish sequence involving clear/substitute filter, the tetra block involved lost their respective orientation after a redo and was all oriented all same instead of pyramidal.

lancake lowered the priority of this task from Release Blocker to High.Aug 26 2016, 9:50 AM
AndyP changed the task status from In Queue (Game) to In Queue.Mar 10 2017, 5:06 PM
Restricted Application added a project: Engine. · View Herald TranscriptMar 10 2017, 5:06 PM
AndyP moved this task from Backlog / Unclassed to Building on the Engine board.Mar 15 2017, 8:03 PM
AndyP edited projects, added Engine (Building); removed Engine.
schema added a commit: Restricted Diffusion Commit.Mar 21 2017, 5:37 AM
schema changed the task status from In Queue to Resolved by committing Restricted Diffusion Commit.
Restricted Application added a project: Quality Assurance. · View Herald TranscriptMar 21 2017, 5:37 AM
schema added a commit: Restricted Diffusion Commit.Mar 21 2017, 3:22 PM

-QA Testing-

Fix confirmed.

lancake changed Last tested (version) from 0.19624 to 0.199.535.Jun 16 2017, 2:45 PM
lancake closed this task as Closed.Jun 16 2017, 8:12 PM
Restricted Application removed a project: Quality Assurance. · View Herald TranscriptJun 16 2017, 8:12 PM
Restricted Application removed a subscriber: AndyP. · View Herald Transcript