Created
January 9, 2010 13:07
-
-
Save vvs/272884 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# A fatal error has been detected by the Java Runtime Environment: | |
# | |
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77227021, pid=6536, tid=3932 | |
# | |
# JRE version: 6.0_17-b04 | |
# Java VM: Java HotSpot(TM) Client VM (14.3-b01 mixed mode, sharing windows-x86 ) | |
# Problematic frame: | |
# C [ntdll.dll+0x67021] | |
# | |
# 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 (0x003d9400): JavaThread "main" [_thread_in_native, id=3932, stack(0x00090000,0x00290000)] | |
siginfo: ExceptionCode=0xc0000005, reading address 0x00525e87 | |
Registers: | |
EAX=0x00525e80, EBX=0x00510000, ECX=0x00001700, EDX=0x0051a680 | |
ESP=0x0028a058, EBP=0x0028a084, ESI=0x00510000, EDI=0x00510000 | |
EIP=0x77227021, EFLAGS=0x00010246 | |
Top of Stack: (sp=0x0028a058) | |
0x0028a058: 00510000 0051a570 0051a680 0051b000 | |
0x0028a068: 7724982e 771e8ea6 0000a000 00510000 | |
0x0028a078: 0051b000 0000a000 00510000 0028a0c4 | |
0x0028a088: 7724a38e 0051a680 0051a680 00001700 | |
0x0028a098: 00000001 00510000 0051a570 00000000 | |
0x0028a0a8: ee000092 00000000 0051b038 0051b038 | |
0x0028a0b8: 005100c4 00003bf8 0000077f 0028a1bc | |
0x0028a0c8: 771f3407 000007ff 0051a680 0028a18c | |
Instructions: (pc=0x77227021) | |
0x77227011: 00 00 01 00 89 5d f0 8b 45 08 8b 4d 10 8d 04 c8 | |
0x77227021: 80 78 07 03 89 45 ec 0f 84 14 02 00 00 83 65 f4 | |
Stack: [0x00090000,0x00290000], sp=0x0028a058, free space=2024k | |
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) | |
C [ntdll.dll+0x67021] | |
C [ntdll.dll+0x8a38e] | |
C [ntdll.dll+0x33407] | |
C [ntdll.dll+0x332f2] | |
C [msvcrt.dll+0x98cd] | |
C [jffi-0.6.dll+0x2bdd] | |
C [jffi-0.6.dll+0x32d3] | |
j com.kenai.jffi.Foreign.invokeArrayO1Int32(J[BLjava/lang/Object;III)I+0 | |
j com.kenai.jffi.Invoker.invokeArrayWithObjectsInt32(Lcom/kenai/jffi/Function;Lcom/kenai/jffi/HeapInvocationBuffer;Lcom/kenai/jffi/ObjectBuffer;)I+76 | |
j com.kenai.jffi.Invoker.invokeInt(Lcom/kenai/jffi/Function;Lcom/kenai/jffi/HeapInvocationBuffer;)I+13 | |
j org.jruby.ext.posix.WindowsLibC$jaffl$0._wmkdir([BI)I+26 | |
j org.jruby.ext.posix.WindowsPOSIX.mkdir(Ljava/lang/String;I)I+20 | |
j org.jruby.ext.posix.LazyPOSIX.mkdir(Ljava/lang/String;I)I+6 | |
j org.jruby.RubyDir.mkdirCommon(Lorg/jruby/Ruby;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;+88 | |
j org.jruby.RubyDir.mkdir(Lorg/jruby/runtime/builtin/IRubyObject;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;+27 | |
j org.jruby.RubyDir$s_method_0_1$RUBYINVOKER$mkdir.call(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;+36 | |
J org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject; | |
J org.jruby.internal.runtime.methods.DynamicMethod.call(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; | |
J org.jruby.runtime.callsite.CachingCallSite.call(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; | |
j ruby.jit.ruby.D_3a_.work.jruby_minus_dev.jruby.lib.ruby.$1_dot_8.fileutils.fu_mkdir33393055_9420495.__file__(Lruby/jit/ruby/D_3a_/work/jruby_minus_dev/jruby/lib/ruby/$1_dot_8/fileutils/fu_mkdir33393055_9420495;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;+208 | |
j ruby.jit.ruby.D_3a_.work.jruby_minus_dev.jruby.lib.ruby.$1_dot_8.fileutils.fu_mkdir33393055_9420495.__file__(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;+8 | |
J org.jruby.internal.runtime.methods.JittedMethod.call(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; | |
j |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public int _wmkdir(byte[] path); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Override | |
public int mkdir(String path, int mode) { | |
try { | |
byte[] widePath = appendWcharNul(path.getBytes("UTF-16LE")); | |
int res = ((WindowsLibC)libc())._wmkdir(widePath); | |
if (res < 0) { | |
int error = errno(); | |
handler.error(mapErrorToErrno(error), path); | |
} | |
return res; | |
} catch (UnsupportedEncodingException e) { | |
// should not really happen | |
handler.error(Errno.EINVAL, path); | |
return -1; | |
} | |
} | |
private static byte[] appendWcharNul(byte[] bytes) { | |
// adding two zero bytes at the end --> CRASH | |
// adding only ONE zery byte --> OK, but WHY? :) | |
byte[] withNul = new byte[bytes.length + 2]; | |
System.arraycopy(bytes, 0, withNul, 0, bytes.length); | |
return withNul; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment