minerllabs / minerl

MineRL Competition for Sample Efficient Reinforcement Learning - Python Package
http://minerl.io/docs/
Other
686 stars 154 forks source link

MineRL could not detect an X Server, Monitor, or Virtual Monitor! #34

Closed ghost closed 5 years ago

ghost commented 5 years ago

Hello, I've followed the installation steps to get jdk 1.8, minerl (upgraded to 0.1.5), and installed xvfb. But i'm still getting the "MineRL could not detect an X Server, Monitor, or Virtual Monitor!" Error. I

I run the hello world program like so.

root@dd57e1fe29f8:/workspace/helloworld# xvfb-run python helloworld.py `

I get the following log output.

INFO:minerl.env.malmo:Starting Minecraft process: ['/opt/conda/lib/python3.6/site-packages/minerl/env/Malmo/Minecraft/launchClient.sh', '-port', '9000', '-env']
DEBUG:minerl.env.malmo:This mapping 'snapshot_20161220' was designed for MC 1.11! Use at your own peril.
DEBUG:minerl.env.malmo:#################################################
DEBUG:minerl.env.malmo:         ForgeGradle 2.2-SNAPSHOT-3966cea
DEBUG:minerl.env.malmo:  https://github.com/MinecraftForge/ForgeGradle
DEBUG:minerl.env.malmo:#################################################
DEBUG:minerl.env.malmo:               Powered by MCP unknown
DEBUG:minerl.env.malmo:             http://modcoderpack.com
DEBUG:minerl.env.malmo:         by: Searge, ProfMobius, Fesh0r,
DEBUG:minerl.env.malmo:         R4wk, ZeuX, IngisKahn, bspkrs
DEBUG:minerl.env.malmo:#################################################
DEBUG:minerl.env.malmo:Found AccessTransformer: malmomod_at.cfg
DEBUG:minerl.env.malmo::deobfCompileDummyTask
DEBUG:minerl.env.malmo::deobfProvidedDummyTask
DEBUG:minerl.env.malmo::sourceApiJava
DEBUG:minerl.env.malmo::compileApiJava UP-TO-DATE
DEBUG:minerl.env.malmo::processApiResources UP-TO-DATE
DEBUG:minerl.env.malmo::apiClasses UP-TO-DATE
DEBUG:minerl.env.malmo::copyModToClient
DEBUG:minerl.env.malmo::copyModToServer
DEBUG:minerl.env.malmo::extractMcpData SKIPPED
DEBUG:minerl.env.malmo::extractMcpMappings SKIPPED
DEBUG:minerl.env.malmo::getVersionJson
DEBUG:minerl.env.malmo::extractUserdev UP-TO-DATE
DEBUG:minerl.env.malmo::genSrgs SKIPPED
DEBUG:minerl.env.malmo::copySrg
DEBUG:minerl.env.malmo::deleteSchemas
DEBUG:minerl.env.malmo::copySchemas
DEBUG:minerl.env.malmo::jaxb
DEBUG:minerl.env.malmo::sourceMainJava
DEBUG:minerl.env.malmo::compileJavawarning: [options] bootstrap class path not set in conjunction with -source 1.6
DEBUG:minerl.env.malmo:Note: SpongePowered MIXIN Annotation Processor Version=0.7.5
DEBUG:minerl.env.malmo:Note: ObfuscationServiceMCP supports type: "searge"
DEBUG:minerl.env.malmo:Note: ObfuscationServiceMCP supports type: "notch"
DEBUG:minerl.env.malmo:Note: Loading searge mappings from /root/.gradle/caches/minecraft/de/oceanlabs/mcp/mcp_snapshot/20161220/1.11.2/srgs/mcp-srg.srg
DEBUG:minerl.env.malmo:Note: Loading notch mappings from /root/.gradle/caches/minecraft/de/oceanlabs/mcp/mcp_snapshot/20161220/1.11.2/srgs/mcp-notch.srg
DEBUG:minerl.env.malmo:Note: Writing refmap to /opt/conda/lib/python3.6/site-packages/minerl/env/Malmo/Minecraft/build/tmp/compileJava/compileJava-refmap.json
DEBUG:minerl.env.malmo:Note: Writing searge output SRGs to /opt/conda/lib/python3.6/site-packages/minerl/env/Malmo/Minecraft/build/tmp/compileJava/mcp-srg.srg
DEBUG:minerl.env.malmo:Note: Writing notch output SRGs to /opt/conda/lib/python3.6/site-packages/minerl/env/Malmo/Minecraft/build/tmp/compileJava/mcp-notch.srg
DEBUG:minerl.env.malmo:Note: Writing refmap to /opt/conda/lib/python3.6/site-packages/minerl/env/Malmo/Minecraft/build/tmp/compileJava/compileJava-refmap.json
DEBUG:minerl.env.malmo:Note: Writing searge output SRGs to /opt/conda/lib/python3.6/site-packages/minerl/env/Malmo/Minecraft/build/tmp/compileJava/mcp-srg.srg
DEBUG:minerl.env.malmo:Note: Writing notch output SRGs to /opt/conda/lib/python3.6/site-packages/minerl/env/Malmo/Minecraft/build/tmp/compileJava/mcp-notch.srg
DEBUG:minerl.env.malmo:Note: Some input files use or override a deprecated API.
DEBUG:minerl.env.malmo:Note: Recompile with -Xlint:deprecation for details.
DEBUG:minerl.env.malmo:Note: Some input files use unchecked or unsafe operations.
DEBUG:minerl.env.malmo:Note: Recompile with -Xlint:unchecked for details.
DEBUG:minerl.env.malmo:
DEBUG:minerl.env.malmo::processResources
DEBUG:minerl.env.malmo::classes
DEBUG:minerl.env.malmo::jar
DEBUG:minerl.env.malmo::extractNatives SKIPPED
DEBUG:minerl.env.malmo::getAssetIndex UP-TO-DATE
DEBUG:minerl.env.malmo::getAssets
DEBUG:minerl.env.malmo::makeStart SKIPPED
DEBUG:minerl.env.malmo::runClient
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [GradleStart]: Extra: []
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [GradleStart]: Found and added coremod: com.microsoft.Malmo.OverclockingPlugin
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, /root/.gradle/caches/minecraft/assets, --assetIndex, 1.11, --accessToken{REDACTED}, --version, 1.11.2, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [FML]: Forge Mod Loader version 13.20.0.2228 for Minecraft 1.11.2 loading
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [FML]: Java is OpenJDK 64-Bit Server VM, version 1.8.0_212, running on Linux:amd64:4.1.12-94.3.9.el7uek.x86_64, installed at /usr/lib/jvm/java-8-openjdk-amd64/jre
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [FML]: Found a command line coremod : com.microsoft.Malmo.OverclockingPlugin
DEBUG:minerl.env.malmo:[19:43:02] [main/WARN] [FML]: The coremod com.microsoft.Malmo.OverclockingPlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [mixin]: SpongePowered MIXIN Subsystem Version=0.7.5 Source=file:/root/.gradle/caches/modules-2/files-2.1/org.spongepowered/mixin/0.7.5-SNAPSHOT/c989878008c2c5ff1a7c6491c4103d8faa221d19/mixin-0.7.5-SNAPSHOT.jar Service=LaunchWrapper Env=CLIENT
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [mixin]: Compatibility level set to JAVA_8
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [GradleStart]: Injecting location in coremod com.microsoft.Malmo.OverclockingPlugin
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Loading tweak class name org.spongepowered.asm.mixin.EnvironmentStateTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
DEBUG:minerl.env.malmo:[19:43:02] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
DEBUG:minerl.env.malmo:[19:43:02] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
DEBUG:minerl.env.malmo:[19:43:03] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [LaunchWrapper]: Calling tweak class org.spongepowered.asm.mixin.EnvironmentStateTweaker
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [mixin]: Initialised Mixin FML Remapper Adapter with net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper@3fcdcf
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
DEBUG:minerl.env.malmo:[19:43:03] [main/WARN] [mixin]: Reference map 'mixins.replaymod.refmap.json' for mixins.overclocking.malmomod.json could not be read. If this is a development environment you can ignore this message
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:transform:58]: MALMO: Attempting to transform MinecraftServer
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:overclockRenderer:129]: MALMO: Found Minecraft, attempting to transform it
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:overclockRenderer:135]: MALMO: Found Minecraft.runGameLoop() method, attempting to transform it
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:overclockRenderer:150]: MALMO: Hooked into call to Minecraft.updateDisplay()
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [mixin]: A re-entrant transformer '$wrapper.com.microsoft.Malmo.OverclockingClassTransformer' was detected and will no longer process meta class data
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:transform:58]: MALMO: Attempting to transform MinecraftServer
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:overclockRenderer:129]: MALMO: Found Minecraft, attempting to transform it
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:overclockRenderer:135]: MALMO: Found Minecraft.runGameLoop() method, attempting to transform it
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:overclockRenderer:150]: MALMO: Hooked into call to Minecraft.updateDisplay()
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:transform:42]: Transformed Name: net.minecraft.client.entity.EntityPlayerSP
DEBUG:minerl.env.malmo:[19:43:03] [main/INFO] [STDOUT]: [com.microsoft.Malmo.OverclockingClassTransformer:transform:42]: Transformed Name: net.minecraft.client.entity.AbstractClientPlayer
DEBUG:minerl.env.malmo:[19:43:04] [Client thread/INFO]: Setting user: Player150
DEBUG:minerl.env.malmo:[19:43:06] [Client thread/WARN]: Skipping bad option: lastServer:
DEBUG:minerl.env.malmo:[19:43:06] [Client thread/INFO]: LWJGL Version: 2.9.4
DEBUG:minerl.env.malmo:[19:43:06] [Client thread/INFO]: [STDOUT]: MALMO: Attempting to transform MinecraftServer
DEBUG:minerl.env.malmo:[19:43:06] [Client thread/INFO]: [STDOUT]: MALMO: Found GlStateManager, attempting to transform it
DEBUG:minerl.env.malmo:[19:43:06] [Client thread/INFO]: [STDOUT]: MALMO: Found GlStateManager.bindTexture() method, attempting to transform it
DEBUG:minerl.env.malmo:[19:43:06] [Client thread/INFO]: [STDOUT]: MALMO: Hooked into call to GlStateManager.bindTexture()
DEBUG:minerl.env.malmo:[19:43:06] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:600]: ---- Minecraft Crash Report ----
DEBUG:minerl.env.malmo:// Surprise! Haha. Well, this is awkward.
DEBUG:minerl.env.malmo:
DEBUG:minerl.env.malmo:Time: 6/10/19 7:43 PM
DEBUG:minerl.env.malmo:Description: Initializing game
DEBUG:minerl.env.malmo:
DEBUG:minerl.env.malmo:java.lang.ExceptionInInitializerError
DEBUG:minerl.env.malmo: at net.minecraft.client.Minecraft.setWindowIcon(Minecraft.java:670)
DEBUG:minerl.env.malmo: at net.minecraft.client.Minecraft.init(Minecraft.java:467)
DEBUG:minerl.env.malmo: at net.minecraft.client.Minecraft.run(Minecraft.java:387)
DEBUG:minerl.env.malmo: at net.minecraft.client.main.Main.main(Main.java:118)
DEBUG:minerl.env.malmo: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
DEBUG:minerl.env.malmo: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
DEBUG:minerl.env.malmo: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
DEBUG:minerl.env.malmo: at java.lang.reflect.Method.invoke(Method.java:498)
DEBUG:minerl.env.malmo: at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
DEBUG:minerl.env.malmo: at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
DEBUG:minerl.env.malmo: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
DEBUG:minerl.env.malmo: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
DEBUG:minerl.env.malmo: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
DEBUG:minerl.env.malmo: at java.lang.reflect.Method.invoke(Method.java:498)
DEBUG:minerl.env.malmo: at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
DEBUG:minerl.env.malmo: at GradleStart.main(GradleStart.java:26)
DEBUG:minerl.env.malmo:Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
DEBUG:minerl.env.malmo: at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:951)
DEBUG:minerl.env.malmo: at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738)
Traceback (most recent call last):
  File "helloworld.py", line 30, in <module>
    main()
  File "helloworld.py", line 9, in main
    env = gym.make('MineRLNavigateDense-v0')
  File "/opt/conda/lib/python3.6/site-packages/gym/envs/registration.py", line 156, in make
    return registry.make(id, **kwargs)
  File "/opt/conda/lib/python3.6/site-packages/gym/envs/registration.py", line 101, in make
    env = spec.make(**kwargs)
  File "/opt/conda/lib/python3.6/site-packages/gym/envs/registration.py", line 73, in make
    env = cls(**_kwargs)
  File "/opt/conda/lib/python3.6/site-packages/minerl/env/core.py", line 126, in __init__
    self.init(observation_space, action_space, port=port)
  File "/opt/conda/lib/python3.6/site-packages/minerl/env/core.py", line 152, in init
    self.instance = InstanceManager.get_instance().__enter__()
  File "/opt/conda/lib/python3.6/contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "/opt/conda/lib/python3.6/site-packages/minerl/env/malmo.py", line 89, in get_instance
    inst = cls._Instance(cls._get_valid_port())
  File "/opt/conda/lib/python3.6/site-packages/minerl/env/malmo.py", line 259, in __init__
    self.launch(port, existing)
  File "/opt/conda/lib/python3.6/site-packages/minerl/env/malmo.py", line 286, in launch
    _check_for_launch_errors(line)
  File "/opt/conda/lib/python3.6/site-packages/minerl/env/malmo.py", line 484, in _check_for_launch_errors
    "ERROR! MineRL could not detect an X Server, Monitor, or Virtual Monitor! "
RuntimeError: ERROR! MineRL could not detect an X Server, Monitor, or Virtual Monitor! Currently minerl only supports environment rendering in headed environments (servers with monitors attached).

In order to run minerl environments without a head use a software renderer such as 'xvfb':
        xvfb-run python3 <your_script.py>
If you're receiving this error and there is a monitor attached, make sure your current displayvariable is set correctly:
         DISPLAY=:0 python3 <your_script.py>
If none of these steps work, please complain in the discord!
ghost commented 5 years ago

@MadcowD Hey, I found a way to make the script run. Basically, I installed both xorg and xvbf and then modified the xvfb-run command a bit. Here is the workflow that I had success with.

install xorg (needed for xvfb to work, for me) apt-get install xorg openbox

install xvfb for rendering in headless server apt-get install xvfb

the command below tests xvfb-run xvfb-run -s "-ac -screen 0 1280x1024x24" xvinfo

run python script with xvfb-run and some arguments xvfb-run -s "-ac -screen 0 1280x1024x24" python helloworld.py

This serves as a crutch for me. I don't understand why this works while the original command does not. At least I can move forward now.