minecraft VM crashes with VIA Chrome9

Started by Gnubeutel, October 05, 2010, 20:12:45

Previous topic - Next topic

Gnubeutel

I'm having trouble with some LWJGL based games.

First of all there's minecraft.net which runs in an applet. I can see some progressbars, then the game initializes and for a split second i can see the rendered 3D world before it crashes the VM.

Then there's planetmule.com. I can start the server lobby but when i start the game the VM crashes.

The game Bolzplatz2006 on the other hand works, as do the lwjgl demos as far as i can tell.

Since the VM crashes i can't really tell what's going on. Is there a tool or a test to narrow down the cause of the crashes? Or are there any logs i can analyze?

My computer is a laptop with a "VIA Chrome9 HC IGP Family" onboard chip.

kappa

crash is likely linked to weak graphics drivers, do you have the latest driver?

also which OS and Java version do you use?

Gnubeutel

Windows XP
Driver Version is 6.14.10.95 (the latest driver my laptop vendor has to offer)
Java JRE 1.6.0_20 and 1.5.0_22 (no idea which one is used for the applet)

bobjob

The fact that other LWJGL demos work, probably means thats the problem lies in Minecraft + mule.com's actual code.

Gnubeutel

I updated my graphics driver to version 6.14.10.232 (aka 20-10-02a) from 5. mar 2010, but the problem remains the same.

So, back to my original question: is there a way to find out exactly what is going wrong when i don't have access to the source code and the game developers don't have my chipset?

princec

It's truly a miracle anything works at all with that chipset - S3 manufacture it and they make truly awful stuff compared to Nvidia and ATI and even Intel.

There's a reasonable chance that the JVM will be leaving a hotspot error dump file somewhere - not sure where they go though for applets. Try the downloaded client instead; that's likely to write hotspot errors into the program installation directory.

Minecraft uses brain-dead simple rendering code - I mean, really simple, no fancy tricks whatsoever - if it doesn't work then it's unlikely a fix will be forthcoming.

As an exercise in futility you could try one of the games here and see if any of them run ok. But that is highly unlikely.

Cas :)

Gnubeutel

I tried Ultratron and DroidAssault and they worked just fine.
But neither seemed to use 3D.

I don't usually have a problem with 3D. Direct3D works, 3D in flash games works too. Not sure about OpenGL. I don't have a test for that.

And why does minecraft render the scene nicely for one frame before it crashes? There must be more to it than really simple code. Maybe a shadow/filter/antialiasing setting not supported by my chipset? Or maybe it's the menu overlay.

But in general i'd prefer my games to not just plain crash. So if there's something that will make the (probably unsafe) drivers for my chipset fail, i'd hope that you could prevent lwjgl from calling it.

princec

I'm afraid we really can't do that with LWJGL. It's a straight-to-the-metal binding; what the metal does isn't something we have any control over.

Surprised my games run. They are, in fact, in 3D, and they actually use reasonably modern rendering techniques too (though no shaders). Mostly flat 3D though  8)
I suspect Minecraft's problem is its reliance on Display Lists, which I've always found to be rather buggy myself.

Cas :)

bobjob

Quote from: princec on October 06, 2010, 18:38:52
I'm afraid we really can't do that with LWJGL. It's a straight-to-the-metal binding; what the metal does isn't something we have any control over.

Surprised my games run. They are, in fact, in 3D, and they actually use reasonably modern rendering techniques too (though no shaders). Mostly flat 3D though  8)
I suspect Minecraft's problem is its reliance on Display Lists, which I've always found to be rather buggy myself.

Cas :)
Cas, this this problem has been buggin me for a bit, but what should you use to store a basic Quad instead of a Display list of four points? VBO seems a bit much.

princec

A VBO. Seriously. But why you're storing a single quad in a VBO is beyond me. I store about 8,000 of them :)

Cas :)

bobjob

Quote from: princec on October 07, 2010, 09:23:34
A VBO. Seriously. But why you're storing a single quad in a VBO is beyond me. I store about 8,000 of them :)

Cas :)
but what if each quad uses a different texture? how would you do that without shaders?

kappa

Quote from: bobjob on October 07, 2010, 10:24:17
Quote from: princec on October 07, 2010, 09:23:34
A VBO. Seriously. But why you're storing a single quad in a VBO is beyond me. I store about 8,000 of them :)

Cas :)
but what if each quad uses a different texture? how would you do that without shaders?

a VBO for each texture? and if you can get away with it (i.e. no texture tiling) then you can use a Texture Atlas and a single VBO.

princec

One VBO. Lots of calls to glDrawElements interleaved with glBindTexture2D. Same way as always?

Cas :)

bobjob

thanx that makes sense, yet seems very different than just creating a single display list (for something as simple as four points), and binding the texture as needed.

In regards to a similar concern.
Using a single texture yet many quads, In the case of handle something like a font without shaders, what do you think is best?
Some ideas Im considering.
1. create a dynamic VBO and minipulate points as needed, seems like alot of math calculations on multiple vectors at a time, rather than a single quad at a time.
2. create a single quad in a VBO, and translate as needed, yet will require many calls to drawElements.

Im sure I could do a performance test between the two methods, yet was hoping you guys would know the best way, or a better way.

Gnubeutel

Oh look! I found a dump file. I'm not sure what attempt this is from, since it's a few days old and i tried some "hacky" things to run minecraft.
I'm not too keen on posting all of my system data online, so i'll just post the first part, hoping you can tell what my problem is from looking at it.


#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0d4d0a2d, pid=2812, tid=5124
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode windows-x86 )
# Problematic frame:
# C  [s3gIGPgl.dll+0x1c0a2d]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x04c6c400):  JavaThread "Thread-13" [_thread_in_native, id=5124, stack(0x052a0000,0x052f0000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000008

Registers:
EAX=0x00000000, EBX=0x53b36f68, ECX=0x00000000, EDX=0x53b50938
ESP=0x052ef920, EBP=0x052ef97c, ESI=0x0ea70048, EDI=0x00000001
EIP=0x0d4d0a2d, EFLAGS=0x00210216

Top of Stack: (sp=0x052ef920)
0x052ef920:   04c6c400 53b36f68 052ef97c 53b36f68
0x052ef930:   0d6c4320 052f5f19 00000001 00d09f47
0x052ef940:   04c6c510 052ef984 00000001 0d314ab0
0x052ef950:   00000000 052ef954 00000000 052ef95c
0x052ef960:   00000000 052ef994 53b50938 00000000
0x052ef970:   53b36f68 00000000 052ef98c 052ef9b8
0x052ef980:   00d02da1 53b507a0 00d08269 0d314ab0
0x052ef990:   00000000 00000001 052ef998 53b36eaf

Instructions: (pc=0x0d4d0a2d)
0x0d4d0a1d:   24 18 8b f0 8b 86 20 44 01 00 8b 8e 24 44 01 00
0x0d4d0a2d:   8b 50 08 8b 14 8a 8b 12 3b d7 0f 85 d5 01 00 00


Stack: [0x052a0000,0x052f0000],  sp=0x052ef920,  free space=13e052ef454k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [s3gIGPgl.dll+0x1c0a2d]
j  org.lwjgl.opengl.GL11.glCallList(I)V+15
com.mojang.minecraft.l.run()V+4320
java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub
V  [jvm.dll+0xf049c]
V  [jvm.dll+0x17fcf1]
V  [jvm.dll+0xf0667]
V  [jvm.dll+0xf06dd]
V  [jvm.dll+0x11a2a0]
V  [jvm.dll+0x1ddb14]
V  [jvm.dll+0x17f96c]
C  [msvcr71.dll+0x9565]
C  [kernel32.dll+0xb729]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.lwjgl.opengl.GL11.nglCallList(IJ)V+0
j  org.lwjgl.opengl.GL11.glCallList(I)V+15
com.mojang.minecraft.l.run()V+4320
java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x04c4e800 JavaThread "Keep-Alive-Timer" daemon [_thread_blocked, id=4580, stack(0x18dd0000,0x18e20000)]
  0x03be3800 JavaThread "Resource download thread" daemon [_thread_in_native, id=4556, stack(0x18cc0000,0x18d10000)]
  0x03be3400 JavaThread "Thread-18" daemon [_thread_blocked, id=5524, stack(0x18c70000,0x18cc0000)]
  0x03bc9800 JavaThread "Java Sound Event Dispatcher" daemon [_thread_blocked, id=704, stack(0x0fdd0000,0x0fe20000)]
=>0x04c6c400 JavaThread "Thread-13" [_thread_in_native, id=5124, stack(0x052a0000,0x052f0000)]
  0x03ae3400 JavaThread "Thread-12" daemon [_thread_blocked, id=2944, stack(0x05250000,0x052a0000)]
  0x03b45c00 JavaThread "ConsoleWriterThread" daemon [_thread_blocked, id=3132, stack(0x04b90000,0x04be0000)]
  0x03136400 JavaThread "Windows Tray Icon Thread" [_thread_in_native, id=6028, stack(0x04aa0000,0x04af0000)]
  0x0317c400 JavaThread "TimerQueue" daemon [_thread_blocked, id=4388, stack(0x04a50000,0x04aa0000)]
  0x03b28800 JavaThread "thread applet-org.lwjgl.util.applet.AppletLoader-1" [_thread_blocked, id=5100, stack(0x049a0000,0x049f0000)]
  0x03af2c00 JavaThread "AWT-EventQueue-1" [_thread_blocked, id=6140, stack(0x048f0000,0x04940000)]
  0x03ab3400 JavaThread "AWT-EventQueue-2" [_thread_blocked, id=3880, stack(0x04950000,0x049a0000)]
  0x03ac9c00 JavaThread "Applet 1 LiveConnect Worker Thread" [_thread_blocked, id=2412, stack(0x03ed0000,0x03f20000)]
  0x03ab3c00 JavaThread "Browser Side Object Cleanup Thread" [_thread_blocked, id=4832, stack(0x04850000,0x048a0000)]
  0x03aa7400 JavaThread "CacheCleanUpThread" daemon [_thread_blocked, id=904, stack(0x04010000,0x04060000)]
  0x03158000 JavaThread "CacheMemoryCleanUpThread" daemon [_thread_blocked, id=4480, stack(0x03ca0000,0x03cf0000)]
  0x03a98400 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=3764, stack(0x03f70000,0x03fc0000)]
  0x03a97000 JavaThread "Java Plug-In Heartbeat Thread" [_thread_blocked, id=3260, stack(0x03f20000,0x03f70000)]
  0x03a93000 JavaThread "AWT-Windows" daemon [_thread_in_native, id=3164, stack(0x03e30000,0x03e80000)]
  0x03a91800 JavaThread "AWT-Shutdown" [_thread_blocked, id=5320, stack(0x03de0000,0x03e30000)]
  0x03a90c00 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=480, stack(0x03d90000,0x03de0000)]
  0x03159800 JavaThread "Java Plug-In Pipe Worker Thread (Client-Side)" daemon [_thread_in_native, id=2996, stack(0x03cf0000,0x03d40000)]
  0x03157400 JavaThread "Timer-0" [_thread_blocked, id=2792, stack(0x03c50000,0x03ca0000)]
  0x0311f800 JavaThread "traceMsgQueueThread" daemon [_thread_blocked, id=6080, stack(0x039b0000,0x03a00000)]
  0x0310fc00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=1512, stack(0x03360000,0x033b0000)]
  0x03109c00 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2960, stack(0x03310000,0x03360000)]
  0x03108000 JavaThread "Attach Listener" daemon [_thread_blocked, id=4736, stack(0x032c0000,0x03310000)]
  0x03106c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=5836, stack(0x03270000,0x032c0000)]
  0x030f7c00 JavaThread "Finalizer" daemon [_thread_blocked, id=1996, stack(0x03220000,0x03270000)]
  0x030f3000 JavaThread "Reference Handler" daemon [_thread_blocked, id=4684, stack(0x031d0000,0x03220000)]
  0x00bf6c00 JavaThread "main" [_thread_blocked, id=5312, stack(0x00c80000,0x00cd0000)]

Other Threads:
  0x030f0400 VMThread [stack: 0x03180000,0x031d0000] [id=4416]
  0x03112800 WatcherThread [stack: 0x033b0000,0x03400000] [id=5300]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
def new generation   total 14272K, used 6746K [0x20d10000, 0x21c80000, 0x317b0000)
  eden space 12736K,  52% used [0x20d10000, 0x213a6848, 0x21980000)
  from space 1536K,   0% used [0x21980000, 0x21980000, 0x21b00000)
  to   space 1536K,   0% used [0x21b00000, 0x21b00000, 0x21c80000)
tenured generation   total 31512K, used 18906K [0x317b0000, 0x33676000, 0x52d10000)
   the space 31512K,  59% used [0x317b0000, 0x32a269f0, 0x32a26a00, 0x33676000)
compacting perm gen  total 15872K, used 15736K [0x52d10000, 0x53c90000, 0x56d10000)
   the space 15872K,  99% used [0x52d10000, 0x53c6e080, 0x53c6e200, 0x53c90000)
No shared spaces configured.