Mojira Archive
MC-113977

Crash when attempting to auto-save the game on an encrypted drive

This crash occurs whenever the game auto-saves.

Steps to reproduce:

  1. 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.
  2. Open the game, and load a singleplayer world.
  3. Soon after starting a world, it will attempt to auto-save – and will crash.
  4. 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 while org.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 to FileUtils.
  • 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.

  1. 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.
  2. Silently fail to write the stats file: There is already a catch block for an IOException, so adding a catch block for the NoSuchMethodError 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.

Cannot Reproduce

Sealbudsman

2017-02-18, 11:19 PM

2021-02-26, 10:28 AM

2021-02-26, 10:28 AM

2

6

Community Consensus

Crash

Minecraft 1.11.2, Minecraft 1.12, Minecraft 1.13.1

-