Skip to content

Instantly share code, notes, and snippets.

@vvs
Created January 9, 2010 13:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vvs/272884 to your computer and use it in GitHub Desktop.
Save vvs/272884 to your computer and use it in GitHub Desktop.
#
# 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
public int _wmkdir(byte[] path);
@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