This crash occurs whenever the game auto-saves.
Steps to reproduce:
Have your .minecraft folder pointed at a drive encrypted with SecureDoc. In my case, the .minecraft folder was in its usual place on the C drive, and that drive was the one encrypted.
Open the game, and load a singleplayer world.
Soon after starting a world, it will attempt to auto-save – and will crash.
Or, you could press the
Esc
key (attempting to get the Options screen), and it will crash at that point as well.
Observations
This happens in the
net.minecraft.stats.StatisticsManagerServer.saveStatFile()
method. (using MCP 9.37 naming).It's a
NoSuchMethodError
This means that whileorg.apache.commons.io.FileUtils.writeStringToFile(Ljava/io/File;Ljava/lang/String;)
was available at compile time, it's not available at runtime in this case. Given that this environment has a full-disk-encryption suite on it, it kinda makes sense that it would be choking off access toFileUtils
.Importantly, this is the only usage of that
writeStringToFile
method in the whole game, as evidenced in MCP 9.37.Other file-writes use different methods, and do succeed before and after this one fails: player data, and the crash report.
Possible remedy
Notably this issue does depend on some external software messing with the system, and I understand often that takes it out of the developer's hands, but naively I can think of ways to remedy this, and I leave it to those who know better whether they are reasonable or not.
Attempt another way to write the stats file: avoid that
writeStringToFile
method, and opt for something else, like whatever's used to write the crash report or the player data.Silently fail to write the stats file: There is already a catch block for an
IOException
, so adding a catch block for theNoSuchMethodError
would silently prevent the crash.
Crash report
/ I'm sorry, Dave.
Time: 2/12/17 10:17 AM
Description: Exception in server tick loop
java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.writeStringToFile(Ljava/io/File;Ljava/lang/String;)V
at nv.b(SourceFile:54)
at mt.b(SourceFile:292)
at ccg.b(SourceFile:25)
at mt.j(SourceFile:738)
at cch.C(SourceFile:143)
at net.minecraft.server.MinecraftServer.run(SourceFile:466)
at java.lang.Thread.run(Thread.java:745)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- System Details --
Details:
Minecraft Version: 1.11.2
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_25, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 211104392 bytes (201 MB) / 440995840 bytes (420 MB) up to 2134114304 bytes (2035 MB)
JVM Flags: 6 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx2G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M
IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95
Profiler Position: N/A (disabled)
Player Count: 1 / 8; [ly['REDACTED'/1702, l='New World 2', x=-11.68, y=74.00, z=238.61]]
Type: Integrated Server (map_client.txt)
Is Modded: Probably not. Jar signature remains and both client + server brands are untouched.
#@!@# Game crashed! Crash report saved to: #@!@# C:\Users\REDACTED\AppData\Roaming\.minecraft\crash-reports\crash-2017-02-12_10.17.38-server.txt
Related ticket
On this same machine, with the same disk encryption software, using the old launcher, I used to encounter MCL-1274, which was this same NoSuchMethodError
, also not finding org.apache.commons.io.FileUtils.writeStringToFile
.
Thanks.
Linked issues
is duplicated by 1
Attachments
Comments 5
I can vouch that SecureDoc encryption causes this problem. I was having the same exact issue. I just decrypted and removed Bitlocker from all drives. Game works fine. I can start new world, save, and reopen.
Other steps to reproduce than
?