This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
Syli's profile picture

[1.4.2][SMP/FTB][CC v1.46]Turtle looses his Mining pickaxe after Server Crash

Started by Syli, 08 December 2012 - 11:00 PM
Syli #1
Posted 09 December 2012 - 12:00 AM
ComputerCraft Version: 1.46 Client on a FTB Server

Description of Bug:
After a Server crash my mining Miningturtles looses his Pickaxes, wich are running with a own programmed Mining script, after the server Restarts they where "normal" turtles without his previus Inventory (Inventory was empty), this happend now 2 times.
First time 2 out of 2 Turtes are affected of this bug
Second time only 2 out of 3 turtles are affected (differend Mining programms - eventually the one uneffected stands still, and waited for Input, not shure)

Steps to Reproduce Bug:
The Server Admin wasent online, so i didn't get a chance to get the Server crash log, but if this happends if he is online i will get it next times, to see why the server was crashed, the Server is a small one with 10-20 ppls Online around the clock! If I get the log file i will post it here.


This Bug is very Strange, because you loose the Turtle Inventory aswell as the Turtle Tool.



PS: this is my first Post and i want to thank you for Making this awsome mod. This is a realy good Opertunity to learn the lua Syntax ;)/>

greetings
Syli
Cloudy #2
Posted 09 December 2012 - 12:25 AM
Without a crash log there's absolutely nothing we can do.
g0shujinsama #3
Posted 04 January 2013 - 12:46 PM
If it is the same problem we just encountered this on our server and think we figured out what is happening.

It seems to be a known issue with mystcraft not saving dimensions correctly and only happens when a turtle is moving during a crash or restart. The turtle's block and TileEntity end up at different locations which breaks all customization done to the turtle.

Let me know if your problem is also happening in a mystcraft dimension.
sketchypyjamas #4
Posted 04 January 2013 - 06:34 PM
The same thing happened to me for this bug: http://www.computercraft.info/forums2/index.php?/topic/7987-146cc-1481smp-server-freeze-during-turtle-program/

My wireless mining turtle lost its pick and modem after I restarted the server. This was not in a mystworld dimension. It was just in the regular world.
immibis #5
Posted 06 January 2013 - 02:37 PM
This has happened to me too, in the overworld, without Mystcraft.
richie3366 #6
Posted 11 January 2013 - 05:11 AM
Same problem on my server (mc 1.4.6 / cc 1.481), my turtles lost their inventory, programs and their tools/peripherals… very annoying bug :/
Cloudy #7
Posted 11 January 2013 - 07:58 AM
Things break on a crash? Surely not. Yet no one has provided us with a crash log.
maclof #8
Posted 13 January 2013 - 04:24 AM
Cloudy: I've had this issue occur a few times on a public server I play on too, however the crashes arn't being caused by ComputerCraft but another mod so I'm unsure what a crash log would do for you.

The problem is if the Turtle is currently active and doing something, such as mining out an area (chunk loaded) when the crash happens, it will reset back to a default Turtle with no label, scripts or modifications (such as upgrading it to a Mining Turtle).

I'll try and replicate this shortly on one of my servers, however I can almost guarantee the crash log will mention nothing to assist you.
drewpyqb #9
Posted 17 January 2013 - 08:18 PM
Just had this same issue twice. There was no crash, and no crash report. There was no bug reported onto the log.

1st time: I just barely left the chunk region the turtle was mining in (noone else was in it). When I returned to the chunk a minute later, the turtle had stopped; the name reset; the fuel gone; the inventory empty; and the pick was removed.

2nd time: I had gotten killed while within range of the turtle. Another person was also standing nearby the turtle. When I returned and the person hadn't left, the turtle had reset.

Again, no error reports for either incident. The server did not crash.

Hope this helps.
zeta0134 #10
Posted 18 January 2013 - 06:14 AM
Signed up to report a more pointed issue that seems to be related to this. Confirming what other users have posted: a server crash or hang while the turtles are moving causes them to lose their inventory. Non-moving turtles are not affected, and turtles in item form (in the player's inventory) are also safe.

In our case, the crash itself seems to be related to lua coroutines. The server hang was caused by ComputerCraft, and seems to be related to some function attempting to get the ID of the computer. Our networking library uses the os.getComputerID() function in parallel to a thread which runs the turtle's main program, and I suspect that what's happening is the ID is occasionally being requested during a turtle's movement, in a tiny window during which the turtle is also trying to request its ID, and causing the deadlock.

I don't know if this qualifies as a crash log; basically, I used Ctrl+\ to attempt to kill the server during a hang, and got this lovely greeting instead. I don't have the full history of it (I screen my servers, and this was all the scrollback buffer I had) but I'll try to grab a more complete report when it happens again.
Spoiler

		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c51fd118> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-30" prio=10 tid=0x00007fb6f8001800 nid=0x5cc2 in Object.wait() [0x00007fb7d3efd000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c51d6708> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c51d6708> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-29" prio=10 tid=0x00007fb764053800 nid=0x5cc1 in Object.wait() [0x00007fb7d3ffe000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c51fb810> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c51fb810> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-25" prio=10 tid=0x00007fb710001000 nid=0x5cbc in Object.wait() [0x00007fb7d8430000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c50d7150> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c50d7150> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-24" prio=10 tid=0x00007fb70c00b800 nid=0x5cbb in Object.wait() [0x00007fb7d852f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c50bd808> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c50bd808> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-23" prio=10 tid=0x00007fb70c001800 nid=0x5cba in Object.wait() [0x00007fb7d8632000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c50d3d28> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c50d3d28> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-22" prio=10 tid=0x00007fb764030000 nid=0x5cb9 in Object.wait() [0x00007fb7d8733000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c509f6d0> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c509f6d0> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-18" prio=10 tid=0x00007fb724001000 nid=0x5cb4 in Object.wait() [0x00007fb7d8b37000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c51718d8> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c51718d8> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-17" prio=10 tid=0x00007fb730003800 nid=0x5cb3 in Object.wait() [0x00007fb7d8c36000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c51617f0> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c51617f0> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-16" prio=10 tid=0x00007fb730001800 nid=0x5cb2 in Object.wait() [0x00007fb7d8d39000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c516e490> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c516e490> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-15" prio=10 tid=0x00007fb76404f800 nid=0x5cb1 in Object.wait() [0x00007fb7d8e3a000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c51469d0> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c51469d0> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-11" prio=10 tid=0x00007fb748001000 nid=0x5cac in Object.wait() [0x00007fb7d923e000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c50370a8> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c50370a8> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-10" prio=10 tid=0x00007fb744003000 nid=0x5cab in Object.wait() [0x00007fb7d933d000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c5019068> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c5019068> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-9" prio=10 tid=0x00007fb744001000 nid=0x5caa in Object.wait() [0x00007fb7d9440000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c502dce8> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c502dce8> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-8" prio=10 tid=0x00007fb764027000 nid=0x5ca9 in Object.wait() [0x00007fb7d9541000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c5000ab0> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c5000ab0> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-4" prio=10 tid=0x00007fb75c001000 nid=0x5ca4 in Object.wait() [0x00007fb7d9945000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c5001950> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c5001950> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-3" prio=10 tid=0x00007fb768004800 nid=0x5ca3 in Object.wait() [0x00007fb7d9a44000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c4fccb68> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c4fccb68> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-2" prio=10 tid=0x00007fb768001000 nid=0x5ca2 in Object.wait() [0x00007fb7d9b47000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c4ffa980> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c4ffa980> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Coroutine-1" prio=10 tid=0x00007fb764050800 nid=0x5ca1 in Object.wait() [0x00007fb7d9c48000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at org.luaj.vm2.LuaThread$State.lua_yield(Unknown Source)
		- locked <0x00000000c4fb2480> (a org.luaj.vm2.LuaThread$State)
		at org.luaj.vm2.LuaThread.yield(Unknown Source)
		at org.luaj.vm2.lib.CoroutineLib.invoke(Unknown Source)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.lib.BaseLib.pcall(Unknown Source)
		at org.luaj.vm2.lib.BaseLib$BaseLibV.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c4fb2480> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Thread-10" prio=10 tid=0x00007fb785639800 nid=0x5c8e waiting for monitor entry [0x00007fb7e81dd000]
   java.lang.Thread.State: BLOCKED (on object monitor)
		at dan200.computer.core.Computer.abort(Computer.java:278)
		- waiting to lock <0x00000000c5075008> (a dan200.computer.core.Computer)
		at dan200.computer.core.ComputerThread$1.run(ComputerThread.java:87)
		at java.lang.Thread.run(Thread.java:722)
"Listen thread" prio=10 tid=0x00007fb784c31000 nid=0x5c8c runnable [0x00007fb7e8d52000]
   java.lang.Thread.State: RUNNABLE
		at java.net.PlainSocketImpl.socketAccept(Native Method)
		at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
		at java.net.ServerSocket.implAccept(ServerSocket.java:522)
		at java.net.ServerSocket.accept(ServerSocket.java:490)
		at hu.run(ServerListenThread.java:81)
"TC Aura Update Thread" prio=10 tid=0x00007fb78549f000 nid=0x5c8a waiting on condition [0x00007fb7e8e53000]
   java.lang.Thread.State: WAITING (parking)
		at sun.misc.Unsafe.park(Native Method)
		- parking to wait for  <0x00000000c11fc830> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
		at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
		at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
		at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
		at thaumcraft.common.AuraUpdateThread.run(AuraUpdateThread.java:21)
		at java.lang.Thread.run(Thread.java:722)
"TC Aura Deletion Thread" prio=10 tid=0x00007fb78549e000 nid=0x5c89 waiting on condition [0x00007fb7e8f54000]
   java.lang.Thread.State: WAITING (parking)
		at sun.misc.Unsafe.park(Native Method)
		- parking to wait for  <0x00000000c11fca18> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
		at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
		at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
		at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
		at thaumcraft.common.AuraDeleteThread.run(AuraDeleteThread.java:14)
		at java.lang.Thread.run(Thread.java:722)
"TC Aura Calculation Thread" prio=10 tid=0x00007fb78549a000 nid=0x5c88 waiting on condition [0x00007fb7e9055000]
   java.lang.Thread.State: WAITING (parking)
		at sun.misc.Unsafe.park(Native Method)
		- parking to wait for  <0x00000000c11fccb8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
		at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
		at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
		at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
		at thaumcraft.common.AuraCalculationThread.run(AuraCalculationThread.java:19)
		at java.lang.Thread.run(Thread.java:722)
"Thread-5" daemon prio=10 tid=0x00007fb784001800 nid=0x5c80 runnable [0x00007fb7f08a7000]
   java.lang.Thread.State: RUNNABLE
		at java.io.FileInputStream.readBytes(Native Method)
		at java.io.FileInputStream.read(FileInputStream.java:242)
		at java.io.BufferedInputStream.read1(BufferedInputStream.java:273)
		at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
		- locked <0x00000000c01a09b8> (a java.io.BufferedInputStream)
		at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
		at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
		at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
		- locked <0x00000000c024e508> (a java.io.InputStreamReader)
		at java.io.InputStreamReader.read(InputStreamReader.java:184)
		at java.io.BufferedReader.fill(BufferedReader.java:154)
		at java.io.BufferedReader.readLine(BufferedReader.java:317)
		- locked <0x00000000c024e508> (a java.io.InputStreamReader)
		at java.io.BufferedReader.readLine(BufferedReader.java:382)
		at hq.run(SourceFile:68)
"DestroyJavaVM" prio=10 tid=0x00007fb7fc009000 nid=0x5c6b waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
"Server thread" prio=10 tid=0x00007fb7fc722800 nid=0x5c7f waiting for monitor entry [0x00007fb7ea613000]
   java.lang.Thread.State: BLOCKED (on object monitor)
		at dan200.computer.shared.WirelessModemPeripheral.pollChanged(WirelessModemPeripheral.java:50)
		- waiting to lock <0x00000000c5075e78> (a dan200.turtle.shared.TurtleModem$Peripheral)
		at dan200.turtle.shared.TurtleModem$Peripheral.update(TurtleModem.java:66)
		at dan200.computer.core.apis.PeripheralAPI$PeripheralWrapper.update(PeripheralAPI.java:100)
		at dan200.computer.core.apis.PeripheralAPI.advance(PeripheralAPI.java:349)
		- locked <0x00000000c5075e20> (a [Ldan200.computer.core.apis.PeripheralAPI$PeripheralWrapper;)
		at dan200.computer.core.Computer.advance(Computer.java:552)
		- locked <0x00000000c5075aa0> (a java.util.ArrayList)
		- locked <0x00000000c5075008> (a dan200.computer.core.Computer)
		at dan200.computer.shared.NetworkedComputerHelper.update(NetworkedComputerHelper.java:112)
		at dan200.turtle.shared.TileEntityTurtle.g(TileEntityTurtle.java:2368)
		at yc.h(World.java:2155)
		at in.h(WorldServer.java:516)
		at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:679)
		at ho.r(DedicatedServer.java:270)
		at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:598)
		at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:497)
		at fy.run(SourceFile:849)
"Thread-3" daemon prio=10 tid=0x00007fb7fc722000 nid=0x5c7e waiting on condition [0x00007fb7ea714000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
		at java.lang.Thread.sleep(Native Method)
		at hp.run(SourceFile:52)
"Snooper Timer" daemon prio=10 tid=0x00007fb7fc717800 nid=0x5c7d in Object.wait() [0x00007fb7ea815000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at java.util.TimerThread.mainLoop(Timer.java:552)
		- locked <0x00000000c01f7398> (a java.util.TaskQueue)
		at java.util.TimerThread.run(Timer.java:505)
"Thread-1" prio=10 tid=0x00007fb7fc451000 nid=0x5c7c waiting on condition [0x00007fb7eacdf000]
   java.lang.Thread.State: WAITING (parking)
		at sun.misc.Unsafe.park(Native Method)
		- parking to wait for  <0x00000000c0210480> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
		at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
		at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
		at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
		at cpw.mods.fml.relauncher.FMLRelaunchLog$ConsoleLogThread.run(FMLRelaunchLog.java:64)
		at java.lang.Thread.run(Thread.java:722)
"Service Thread" daemon prio=10 tid=0x00007fb7fc25e800 nid=0x5c7a runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" daemon prio=10 tid=0x00007fb7fc25c000 nid=0x5c79 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" daemon prio=10 tid=0x00007fb7fc259800 nid=0x5c78 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=10 tid=0x00007fb7fc257000 nid=0x5c77 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=10 tid=0x00007fb7fc201000 nid=0x5c76 in Object.wait() [0x00007fb7f15c9000]
   java.lang.Thread.State: WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
		- locked <0x00000000c0130e40> (a java.lang.ref.ReferenceQueue$Lock)
		at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
		at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)
"Reference Handler" daemon prio=10 tid=0x00007fb7fc1fe800 nid=0x5c75 in Object.wait() [0x00007fb7f16ca000]
   java.lang.Thread.State: WAITING (on object monitor)
		at java.lang.Object.wait(Native Method)
		at java.lang.Object.wait(Object.java:503)
		at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
		- locked <0x00000000c01d8138> (a java.lang.ref.Reference$Lock)
"VM Thread" prio=10 tid=0x00007fb7fc1f6000 nid=0x5c74 runnable
"GC task thread#0 (ParallelGC)" prio=10 tid=0x00007fb7fc016800 nid=0x5c6c runnable
"GC task thread#1 (ParallelGC)" prio=10 tid=0x00007fb7fc018800 nid=0x5c6d runnable
"GC task thread#2 (ParallelGC)" prio=10 tid=0x00007fb7fc01a800 nid=0x5c6e runnable
"GC task thread#3 (ParallelGC)" prio=10 tid=0x00007fb7fc01c800 nid=0x5c6f runnable
"GC task thread#4 (ParallelGC)" prio=10 tid=0x00007fb7fc01e000 nid=0x5c70 runnable
"GC task thread#5 (ParallelGC)" prio=10 tid=0x00007fb7fc020000 nid=0x5c71 runnable
"GC task thread#6 (ParallelGC)" prio=10 tid=0x00007fb7fc022000 nid=0x5c72 runnable
"GC task thread#7 (ParallelGC)" prio=10 tid=0x00007fb7fc023800 nid=0x5c73 runnable
"VM Periodic Task Thread" prio=10 tid=0x00007fb7fc269000 nid=0x5c7b waiting on condition
JNI global references: 484

Found one Java-level deadlock:
=============================
"Coroutine-170":
  waiting to lock monitor 0x00007fb71c0175d8 (object 0x00000000c5075008, a dan200.computer.core.Computer),
  which is held by "Server thread"
"Server thread":
  waiting to lock monitor 0x00007fb7ac006e38 (object 0x00000000c5075e78, a dan200.turtle.shared.TurtleModem$Peripheral),
  which is held by "Coroutine-170"
Java stack information for the threads listed above:
===================================================
"Coroutine-170":
		at dan200.computer.core.Computer.getID(Computer.java:409)
		- waiting to lock <0x00000000c5075008> (a dan200.computer.core.Computer)
		at dan200.computer.core.Computer$APIEnvironment.getComputerID(Computer.java:62)
		at dan200.computer.core.apis.PeripheralAPI$PeripheralWrapper.getID(PeripheralAPI.java:202)
		- locked <0x00000000c5075e48> (a dan200.computer.core.apis.PeripheralAPI$PeripheralWrapper)
		at dan200.computer.shared.WirelessModemPeripheral.callMethod(WirelessModemPeripheral.java:171)
		- locked <0x00000000c5075e78> (a dan200.turtle.shared.TurtleModem$Peripheral)
		at dan200.computer.core.apis.PeripheralAPI$PeripheralWrapper.call(PeripheralAPI.java:111)
		- locked <0x00000000c5075e48> (a dan200.computer.core.apis.PeripheralAPI$PeripheralWrapper)
		at dan200.computer.core.apis.PeripheralAPI.callMethod(PeripheralAPI.java:459)
		at dan200.computer.core.LuaJLuaMachine$2.invoke(LuaJLuaMachine.java:299)
		- locked <0x00000000c50e0c80> (a dan200.computer.core.LuaJLuaMachine$2)
		at org.luaj.vm2.lib.VarArgFunction.onInvoke(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.eval(Unknown Source)
		at org.luaj.vm2.TailcallVarargs.arg1(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.call(Unknown Source)
		at org.luaj.vm2.LuaClosure.execute(Unknown Source)
		at org.luaj.vm2.LuaClosure.onInvoke(Unknown Source)
		at org.luaj.vm2.LuaClosure.invoke(Unknown Source)
		at org.luaj.vm2.LuaThread$State.run(Unknown Source)
		- locked <0x00000000c5f51480> (a org.luaj.vm2.LuaThread$State)
		at java.lang.Thread.run(Thread.java:722)
"Server thread":
		at dan200.computer.shared.WirelessModemPeripheral.pollChanged(WirelessModemPeripheral.java:50)
		- waiting to lock <0x00000000c5075e78> (a dan200.turtle.shared.TurtleModem$Peripheral)
		at dan200.turtle.shared.TurtleModem$Peripheral.update(TurtleModem.java:66)
		at dan200.computer.core.apis.PeripheralAPI$PeripheralWrapper.update(PeripheralAPI.java:100)
		at dan200.computer.core.apis.PeripheralAPI.advance(PeripheralAPI.java:349)
		- locked <0x00000000c5075e20> (a [Ldan200.computer.core.apis.PeripheralAPI$PeripheralWrapper;)
		at dan200.computer.core.Computer.advance(Computer.java:552)
		- locked <0x00000000c5075aa0> (a java.util.ArrayList)
		- locked <0x00000000c5075008> (a dan200.computer.core.Computer)
		at dan200.computer.shared.NetworkedComputerHelper.update(NetworkedComputerHelper.java:112)
		at dan200.turtle.shared.TileEntityTurtle.g(TileEntityTurtle.java:2368)
		at yc.h(World.java:2155)
		at in.h(WorldServer.java:516)
		at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:679)
		at ho.r(DedicatedServer.java:270)
		at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:598)
		at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:497)
		at fy.run(SourceFile:849)
Found 1 deadlock.
Heap
PSYoungGen	  total 191744K, used 26588K [0x00000000eaab0000, 0x00000000f6c10000, 0x0000000100000000)
  eden space 185728K, 14% used [0x00000000eaab0000,0x00000000ec4a7228,0x00000000f6010000)
  from space 6016K, 0% used [0x00000000f6630000,0x00000000f6630000,0x00000000f6c10000)
  to   space 6144K, 0% used [0x00000000f6010000,0x00000000f6010000,0x00000000f6610000)
ParOldGen	   total 699072K, used 699068K [0x00000000c0000000, 0x00000000eaab0000, 0x00000000eaab0000)
  object space 699072K, 99% used [0x00000000c0000000,0x00000000eaaaf1e0,0x00000000eaab0000)
PSPermGen	   total 50816K, used 50782K [0x00000000b5a00000, 0x00000000b8ba0000, 0x00000000c0000000)
  object space 50816K, 99% used [0x00000000b5a00000,0x00000000b8b97990,0x00000000b8ba0000)
2013-01-17 09:13:50 [INFO] [STDERR] java.io.IOException: Input/output error
2013-01-17 09:13:50 [INFO] [STDERR]	 at java.io.FileInputStream.readBytes(Native Method)
2013-01-17 09:13:50 [INFO] [STDERR]	 at java.io.FileInputStream.read(FileInputStream.java:242)
2013-01-17 09:13:50 [INFO] [STDERR]	 at java.io.BufferedInputStream.read1(BufferedInputStream.java:273)
2013-01-17 09:13:50 [INFO] [STDERR]	 at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
2013-01-17 09:13:50 [INFO] [STDERR]	 at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
2013-01-17 09:13:50 [INFO] [STDERR]	 at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
2013-01-17 09:13:50 [INFO] [STDERR]	 at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
2013-01-17 09:13:50 [INFO] [STDERR]	 at java.io.InputStreamReader.read(InputStreamReader.java:184)
2013-01-17 09:13:50 [INFO] [STDERR]	 at java.io.BufferedReader.fill(BufferedReader.java:154)
2013-01-17 09:13:50 [INFO] [STDERR]	 at java.io.BufferedReader.readLine(BufferedReader.java:317)
2013-01-17 09:13:50 [INFO] [STDERR]	 at java.io.BufferedReader.readLine(BufferedReader.java:382)
2013-01-17 09:13:50 [INFO] [STDERR]	 at hq.run(SourceFile:68)
Edited by
Cloudy #11
Posted 18 January 2013 - 06:35 AM
Yeah last crash is fixed in next version.
KaoS #12
Posted 18 January 2013 - 01:35 PM
man cmon. do people not see the bbc code button there. spoiler please
maximal #13
Posted 18 January 2013 - 10:04 PM
I have the same problem, MC 1.4.6 / cc 1.48 SSP. Happens everytime server crash. You can try to reproduce it by making a bunch of turtles dig tunnels then kill a server and start it again.
g0shujinsama #14
Posted 28 January 2013 - 10:34 AM
This is definitely reproducible. You don't have to crash a server and there isn't any associated crash report to turn in. It only happens when turtles are moving and maybe only on servers. In our case we are using the Mindcrack mod pack from the FTB Launcher, though I've also encountered the problem in testing with the BetaA and Direwolf20 packs. If the chunk is unloaded while the turtles are moving there is a high probability that the turtle will be reset and lose all peripherals, programs, label, etc… From what I can tell it occurs because the turtle block get separated from its TileEntity momentarily when it is moving. When the chunk is reloaded, the block can't find its Tile Entity so reverts to a basic turtle.

Again, this happens if the chunk is unloaded for any reason: crash, normal shutdown, player leaves the area, etc…
PixelToast #15
Posted 29 January 2013 - 03:53 AM
-snip-
managed to revert a couple
Tabris #16
Posted 29 January 2013 - 06:12 PM
Having this problem on 1.4.7, what i can see thus far:

It will mostly, if not always happen when Minecraft crashes without the opportunity to save the world, that also means there will not be a crashlog. What is happening is that when the world is loaded again for some reason the turtles are assigned new ids, so they lose the tools they had and also their fuel ID and etc. From looking into the save files i can confirm that the files are still there, so there may even be a way to restore the turtles, i however don'tk now enough about how they work to do that

All this i noticed while playing on SSP, not sure how it works on SMP but i believe it's similar. Most of the time it happened because of a completely unrelated bug between InvTweaks and Redpower2 that makes the game freeze if you try to ctrl + shift a type of item into the project table, the game freezes permanently and i have to terminate it on task manager but i believe i also had the same problem when my computer turned off mid play because the power went down.
Luanub #17
Posted 01 February 2013 - 07:01 PM
This hit my server today. Took out quite a few turtles, some were totally lost, others just lost any attached peripherals/tools, and one even came back thinking it was an advanced computer and was bricked due to the fact. Had to scrap it. Hopefully a fix for this is coming soon? I'm rather hesitant to use turtles currently….
stylish #18
Posted 05 February 2013 - 03:47 PM
I made a program for my turtles to mine a huge quarry and the shortly after I run the program it would either just crash the server or just mine normally. This has been happening rather frequently now… The more turtles I deploy the more likely it crashes,
Cloudy #19
Posted 06 February 2013 - 01:22 AM
Crash log?
stylish #20
Posted 06 February 2013 - 02:32 PM
Crash log?

The server just freezes and requires to be force closed. Not really leaving a crash log.
Cloudy #21
Posted 06 February 2013 - 02:41 PM
Then it is the modem deadlock which is fixed in the next version (prerelease coming soon)!
Cloudy #22
Posted 07 February 2013 - 08:08 AM
I cannot reproduce this locally on vanilla Minecraft. Can someone set up a server with only ComputerCraft on it, and test? It could possibly be a bug in one of the peripheral mods.
PixelToast #23
Posted 07 February 2013 - 12:58 PM
i will test it now
does 10 turtles moving back and fourth in a loop sound good to test it?

EDIT: defenetly happens for vanilla CC
Cloudy #24
Posted 07 February 2013 - 02:20 PM
How did you reproduce it? Details please - I cannot reproduce it without them. This is really infuriating. If you quit the server/client, HOW do you quit it?
stylish #25
Posted 07 February 2013 - 04:35 PM
I have gotten the Turtles to freeze up. If I clicked disconnect the screen hangs at "Shutting Down Internal Server…" and I usually just close the java.exe process whether that's the right thing to-do or not. I just ran my Turtle Quarry program and after a roughly 30ish Turtles got deployed the game froze.
PixelToast #26
Posted 07 February 2013 - 04:40 PM
how i did it is i just closed the server forcefully (the red X when using -nogui)
i want able to repoduce using the stop command, havent tried unloading the turtles
immibis #27
Posted 07 February 2013 - 06:13 PM
I have gotten the Turtles to freeze up. If I clicked disconnect the screen hangs at "Shutting Down Internal Server…" and I usually just close the java.exe process whether that's the right thing to-do or not. I just ran my Turtle Quarry program and after a roughly 30ish Turtles got deployed the game froze.
That's also the rednet deadlock, to be fixed in the next version.
Eyadish #28
Posted 14 February 2013 - 02:59 AM
Also wish to vertify this.

Turtles looses all settings, what equipment and ID (and therefor loosing all fuel). My crashes has come from that windows gets a bluescreen mostly, and therefor I draw the conclusion that when the server aint shutted down correctly, it can't save. Also happening while the turtle is moving ONLY

This seems to happen in my FTB server log tonight, so not sure if it was a sever crash or a bluescreen

What I can tell from my ForgeModLoader logs, this command is never happening when the problem has occured for me, but remember, my problems is often related to bluescreens. But I get this feeling that a bluescreen shouldn't stop me from saving my data in only CC.
2013-02-13 00:36:22 [FINER] [ForgeModLoader] Sending event FMLServerStoppedEvent to mod ComputerCraft
timdiels #29
Posted 28 February 2013 - 01:59 AM
Is this bug supposed to be fixed in CC 1.5? (Edit: I guess not seeing that this thread has no [Fixed] in its title. Is this a hard bug to fix?)

I have a mining program for one of my turtles. After some time my turtle freezes. The CPU doesn't sky-rocket, so it's not an infinite loop. When this happens in SSP the game will hang on "Shutting down internal server". When this happens in SMP, every player loses connection as the server hangs. I then have to close the server by closing its terminal window rather than its java gui server window (which I'm guessing kills it rather than shutting it down nicely). My turtle queries its gps location a few (= 3 to 20) times after every move (i.e. rednet). Sometimes it loses its tools, fuel, label, files, inventory after restarting the server when the server hung.

The last few times I checked, the server did not log any errors.

Forge version: Forge Mod Loader version 4.7.4.520 for Minecraft 1.4.7

The mods I have:
- CC 1.5
- dimensional-anchor 52.1.9
- immibis-core 52.4.4
- RedPowerCore 2.0pr6
- RedPowerDigital 2.0pr6
- RedPowerMechanical 2.0pr6

Lengthy steps to reproduce:
1) Provide it with GPS (I placed GPS in top layer with a dimensional anchor all in the same chunk)
2) Grab a zip or clone the repo at this tag here: https://github.com/l...g_reproduction1
3) Place the files on a floppy
4) Put a wireless mining turtle next to disk drive with floppy, reboot it
5) Fuel it with a stack of coal (just so it doesn't run out of fuel)
6) Add to its startup: shell.run("mine")
7) Reboot it and wait. It probably freezes within an hour. I'll run it again later to see how long it generally takes.
Kaidenyo #30
Posted 08 March 2013 - 02:08 AM
[1.4.7][SMP] Turtles lose their properties ( Pickaxe, Chunkloader Module, Scripts, Fuel ) when server restarts/crashes.


Bug:
Turtles lose all of their Properties

ComputerCraft Version Information: 1.5 Client / 1.5 Server ( Ultimate Pack, latest Version )

Description of Bug:
I was quarrying with AustinKK's ( TRtdTB19 ) quarry script. 4x Chunkloader Turtles, 64x64 area in an Mystcraft Age ( but this also happens in the Overworld! ). 3 of the Turtles ( they just stood around at the position they had, when the server went down as a normal turtle ) lost their properties as stated above, but one was still fine. That means it still had the chunkloader/pickaxe/fuel.

Steps to Reproduce Bug:

Try the script and crash/reboot/shutdown the server, in SSP try alt+f4 or reboot pc.

EDIT: Server crashed again. Turtle lost fuel, Chunkloader and pick. Definitely has something to do with the turtle being in motion when the server crashes.
OniBait #31
Posted 11 March 2013 - 03:01 AM
This might provide some more info on it. It is the most frustrating bug to me right now because I have turtles almost non-stop in motion harvesting trees and a server crash will lead to turtles that have lost their identity.

Bug:
Turtles lose all of their properties (lose their upgrades and their identity)

ComputerCraft Version Information: 1.5 Client/1.5 Server

Description of Bug:
Any turtles that are in motion when a server either crashes or is force killed will lose all upgrades and their identity.

Steps to Reproduce:
Run something like "excavate 64" with a turtle and kill the java process while they are moving.

Error log info: (on server restart, cause of the crash does not matter!)
(repeats for each turtle that was in motion)


2013-03-08 20:46:26 [INFO] Attempted to place a tile entity (dan200.turtle.shared.RedPowerTileEntityTurtleExpanded@ca94246) at -401,74,-129 (AIR) where there was no entity tile!
2013-03-08 20:46:26 [INFO] Chunk coordinates: -416,-144
2013-03-08 20:46:26 [SEVERE] java.lang.Exception
2013-03-08 20:46:26 [SEVERE] at zz.a(Chunk.java:1086)
2013-03-08 20:46:26 [SEVERE] at zz.a(Chunk.java:1050)
2013-03-08 20:46:26 [SEVERE] at aam.loadEntities(AnvilChunkLoader.java:509)
2013-03-08 20:46:26 [SEVERE] at aam.a(AnvilChunkLoader.java:77)
2013-03-08 20:46:26 [SEVERE] at im.f(ChunkProviderServer.java:269)
2013-03-08 20:46:26 [SEVERE] at im.getChunkAt(ChunkProviderServer.java:167)
2013-03-08 20:46:26 [SEVERE] at im.c(ChunkProviderServer.java:136)
2013-03-08 20:46:26 [SEVERE] at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:563)
2013-03-08 20:46:26 [SEVERE] at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:447)
2013-03-08 20:46:26 [SEVERE] at ho.c(DedicatedServer.java:203)
2013-03-08 20:46:26 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:724)
2013-03-08 20:46:26 [SEVERE] at fy.run(ThreadMinecraftServer.java:16)
Cloudy #32
Posted 11 March 2013 - 08:23 AM
You're using MCPC+ which probably messes with things. There's alsp really little we can do if Minecraft crashes. If it crashes it doesn't save the chunk, if it doesn't save the chunk it doesn't save the turtles new information. I can't really think of a way to safeguard against it.
ShaadowKnight #33
Posted 11 March 2013 - 12:18 PM
Well it seem to me if the ID was saved in a different way, then there might not be a problem. What I am finding is the information for your turtle is there, but when you log back in after a crash you basically have a new turtle, it has a new ID. Because it is considered a new turtle all the properties are lost, fuel, pickaxe, etc…
Cloudy #34
Posted 11 March 2013 - 12:26 PM
Please tell me how you can save information about a tile entity without it being stored in the tile entity (hint - you can't). Even if you could if it crashes then it won't save anyway.

I will look into trying to get it to force it to save somehow but don't hold your breath.
immibis #35
Posted 11 March 2013 - 12:58 PM
If it's saving the block ID but not the TE, then something's weird.
Cloudy #36
Posted 11 March 2013 - 01:02 PM
If it's saving the block ID but not the TE, then something's weird.

Agreed. Need to see how to fix it.
Cranium #37
Posted 12 March 2013 - 03:31 AM
I'm no java programmer, but is it possible to have it look in a 1 block radius fron the turtle, and try to match the objects together? From there, could you just merge the data?
Just a thought that might help.


EDIT: I'm a derp. I just reread what you guys were saying, meaning that the Tile Entity was gone completely. Ignore me.
OniBait #38
Posted 12 March 2013 - 12:52 PM
You're using MCPC+ which probably messes with things. There's alsp really little we can do if Minecraft crashes. If it crashes it doesn't save the chunk, if it doesn't save the chunk it doesn't save the turtles new information. I can't really think of a way to safeguard against it.

Yep and I'm totally aware that it messes with things. However, looking at the code in CraftBukkit where this was modified, the only change for this particular section is to actually report that an error occurred rather than just silently swallowing it like a Vanilla server would. The point of posting that was to try and help give more info on a bug that is happening on vanilla servers as well.

If it's saving the block ID but not the TE, then something's weird.

Agreed. Need to see how to fix it.

I can try and reproduce it and take a look at the NBTs and see. I suspect that what I'll see is that the TileEntity position doesn't match up with the Block's position.

I see other mods have a similar issue (portal mod does for example) but either recover from it gracefully or else I don't notice it. I'd have to look at the code a bit closer, but wouldn't the block and TE position updates be done at the same time? In which case it is even more confusing as to how it could happen. Both would be in the same region file and all…

Even weirder is that MCPC+ (and spigot) turn chunk saving off and leave it to plugins to save chunks – in which case I'd have expected on a crash for the chunk to be "outdated" (whenever the last save was) but not for it to have TileEntities that don't line up with their Blocks.

EDIT: I'm a derp. I just reread what you guys were saying, meaning that the Tile Entity was gone completely. Ignore me.

No Cranium, the TileEntity isn't gone completely, it is just in the wrong place. When the server tries to place it, it sees that an invalid block is there and ends up just tossing the TE away at that point.
OniBait #39
Posted 13 March 2013 - 06:28 AM
Okay – yeah. Looking at the NBT what I see is the TileEntity's position is there, but the block isn't.

For example: I have a turtle at rest, the TE will be at something like: -385, 64, -143 and looking for that block in the section data, I see the 04CC block at the same spot (ex: here would be Region -1,-1 – Section 4 Add has a 04 (or 40) and Data has a CC.

But, if I look at a turtle that is currently in motion, I see a TE with a position of: -386, 107, -128 and looking for the block data there I don't see any turtle blocks at all (I actually looked for it in the entire chunk just to make sure it wasn't misplaced ;)/>)

So the question is… why isn't the block being updated with the tile?
Abdiel #40
Posted 13 March 2013 - 06:29 AM
Alright, I'm not a modder, I don't know how Forge internals work, so I might be miles off. Ignore this post if it is so. But I am a programmer and I think I understand the bug.

Right now, moving turtles do something like this:

TileEntity temp = tile entity of the old position of the turtle
remove the turtle block at the old position
create a MovingTurtle entity at the old position
animate moving this entity into the new position
destroy MovingTurtle
create a new turtle block at the new position
assign the temp tile entity to this block

If the server crashes somewhere between the first and the last line, the tile entity data is lost. I propose the following:

create a FakeTurtle block at the new position (block is completely transparent)
copy the tile entity data from the turtle to the FakeTurtle
destroy the turtle block
create, animate, and destroy a MovingTurtle entity
replace the FakeTurtle block with an actual turtle block, preserving tile entity data

This way, tile entity data is never lost. At worst a FakeTurtle will be created, but never turned real, if the server crashes before that happens. You could periodically check a list of all FakeTurtles, or just schedule its deletion if Forge allows that (I seem to recall Minecraft code having this functionality).
Cloudy #41
Posted 13 March 2013 - 08:25 AM
That is not how it works at all. The block IS created first.
OniBait #42
Posted 13 March 2013 - 11:15 AM
Yeah – looking at the code, it is creating the new block, copies the TileEntity state, removes the old block and animates.

What I can't figure out is how if the turtle block is just completely gone, why is it that we log in to find a turtle (albeit a "blank" turtle)? I suspect that there is some code in there that kinda "recovers" from the missing TileEntity, but the route it takes ends up with ComputerCraft supplying a non-upgraded turtle block and the TE not matching that block id either (just a wild guess at this point though).

Problem is looking at the code in MCPC+ (and since they comment where they change code for both bukkit and MCPC it is easy to see vanilla works similar) – there doesn't seem to be an easy hook to try and find "orphaned" TileEntities before the chunk is loaded and they are attempted to be created in either Forge or Bukkit – (something like a Chunk.onPreLoad would be nice).

A semi-ugly solution would be to store "Backup" type data in an NBT and check it for inconsistencies on the chunk load event – at the very least, you'd end up with some consistent state if the server crashed. That way if the CC NBT says "you should have X turtle tile entities at these coordinates" but the chunk says "nuh uh, because the block data didn't get flushed" you could correct it. Is pretty hacky tho.
immibis #43
Posted 13 March 2013 - 07:47 PM
Yeah – looking at the code, it is creating the new block, copies the TileEntity state, removes the old block and animates.

What I can't figure out is how if the turtle block is just completely gone, why is it that we log in to find a turtle (albeit a "blank" turtle)? I suspect that there is some code in there that kinda "recovers" from the missing TileEntity, but the route it takes ends up with ComputerCraft supplying a non-upgraded turtle block and the TE not matching that block id either (just a wild guess at this point though).

Problem is looking at the code in MCPC+ (and since they comment where they change code for both bukkit and MCPC it is easy to see vanilla works similar) – there doesn't seem to be an easy hook to try and find "orphaned" TileEntities before the chunk is loaded and they are attempted to be created in either Forge or Bukkit – (something like a Chunk.onPreLoad would be nice).

A semi-ugly solution would be to store "Backup" type data in an NBT and check it for inconsistencies on the chunk load event – at the very least, you'd end up with some consistent state if the server crashed. That way if the CC NBT says "you should have X turtle tile entities at these coordinates" but the chunk says "nuh uh, because the block data didn't get flushed" you could correct it. Is pretty hacky tho.

I think a better solution is to find out why the TE gets out of sync from the block, then fix it so that an inconsistent state is never saved to disk.
Barek #44
Posted 21 March 2013 - 02:35 AM
Any news on this?

Is this going to be addressed in the 1.5 update?
Cloudy #45
Posted 21 March 2013 - 02:37 AM
No. It may be addressed in the 1.5.1 update if I have time to look into it.
Barek #46
Posted 21 March 2013 - 03:37 AM
Thanks.

It is a bit of an inconvenience having to go to each excavating turtle after a crash (which sadly sometimes happen) and spawning it in again, getting back the programming, and restoring fuel.
theoriginalbit #47
Posted 21 March 2013 - 03:40 AM
Thanks.

It is a bit of an inconvenience having to go to each excavating turtle after a crash (which sadly sometimes happen) and spawning it in again, getting back the programming, and restoring fuel.
Label the turtle, mine it up, put it in the crafting table with another pick. bang. done. you have your mining turtle, with all its code and its fuel level.
Ville Saari #48
Posted 27 March 2013 - 02:22 PM
This has happened to me twice in singleplayer without a crash. After quitting the game normally and then restarting it one of my turtles got replaced with a blank turtle with a different computer id. Peripherals, inventory, fuel, programs and label gone. Old data directory under the original computer id still existed, so I could recover my data by renaming the directory to the new id but the very expensive MiscPeripherals inventory upgrade was gone :(/>

This happened in overworld in FTB Mindcrack pack, but the pack has updated couple of times after the last time it happened, so I have no idea what the ComputerCraft version was.
OniBait #49
Posted 02 April 2013 - 05:09 AM
Thinking about this some more and looking through the code, I think that it might be due to the multi-threaded nature of CC updating blocks in the middle of a save. That is purely speculation though, perhaps I'll try and run stuff through with a debugger attached to get a better idea.
Cloudy #50
Posted 02 April 2013 - 07:00 AM
It is purely speculation and wrong. If people continue to post incorrect theories it will be locked.
Avous #51
Posted 21 April 2013 - 01:28 AM
I've ran into this problem twice now All I did was let the Excavate Program run with a Chickenchunk loader (on size ten) on my server keeping them loaded whilst I slept. When I come back the Turtle stripped of equipment, label, fuel, and programs. The server has a tendency to crash once every few days so that might be it because it automatically resets if it does.

I don't know if it will help but I used this setup,

I had Turtles surrounding an Enderchest outwards with a Chunk Loader directly below the Chest and it was running excavate 64 starting with roughly 500,000 fuel each.

I had the Ender Chest linked to an automatic RP2 sorting system about 200 blocks away. The sorting system consists of a Timer, Filter, and a lot of Pneumatic Pipes going into the top of quite a bit of barrels, a lot of which with Extra-Dimensional Upgrades. I have another Chickenchunk Loader below that Ender Chest with the radius of 10 again.

All four turtles were completely reset when I found them in random positions.

Sorry I can't provide any logs or more detail. That's all I did down to a T both times.

It's odd because my most recent map reset (two weeks ago) is the first time I've ran into this bug on FTB Ultimate Pack (I manually removed Mystcraft) and it's happened twice now with barely a few days passing between them and I've played the FTB Modpack since Dec. 1st. nearly five months ago.
oxgon #52
Posted 22 April 2013 - 01:33 PM
Hum really weird problem, it's happening to me also. I'm on a new server with FTB ultimate and on my old server never ONCE has this happened so pretty weird.
immibis #53
Posted 11 August 2013 - 08:38 AM
Does CC call World.updateTileEntityChunkAndDoNothing at all when turtles move?
If it doesn't set the TE data for the new turtle block at the same time it sets the block ID, then there would be a chance the server would save the chunk in between.

updateTileEntityChunkAndDoNothing is badly named, it marks the chunk as "modified" so it gets saved. Setting block ID or metadata already does this for you.
karelmikie3 #54
Posted 12 August 2013 - 06:20 AM
Crash log?

The server just freezes and requires to be force closed. Not really leaving a crash log.

aka deadlock
Cloudy #55
Posted 12 August 2013 - 10:35 PM
Crash log?

The server just freezes and requires to be force closed. Not really leaving a crash log.

aka deadlock

Congratulations, you replied to a post that was 6 months old. *slow claps*
Barek #56
Posted 12 September 2013 - 07:17 AM
Does CC call World.updateTileEntityChunkAndDoNothing at all when turtles move?
If it doesn't set the TE data for the new turtle block at the same time it sets the block ID, then there would be a chance the server would save the chunk in between.

updateTileEntityChunkAndDoNothing is badly named, it marks the chunk as "modified" so it gets saved. Setting block ID or metadata already does this for you.

Cloudy, immibis brought the thread back up. Just making sure his post is not overlooked.