GithubHelp home page GithubHelp logo

fusesource / jansi-native Goto Github PK

View Code? Open in Web Editor NEW
32.0 32.0 21.0 572 KB

Builds the JNI libraries for the jansi project

Home Page: http://fusesource.github.io/jansi/

License: Apache License 2.0

Java 69.35% C 11.41% Makefile 15.40% M4 3.83%

jansi-native's People

Contributors

aaron1011 avatar ccustine avatar chirino avatar dependabot[bot] avatar gnodet avatar hboutemy avatar jdillon avatar mihnita avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jansi-native's Issues

Jansi on ppc64le, arm64v8, and s390x

Sorry for opening this as an issue. I tried to post it on the mailing list, but I think my message must be pending or something (plus there doesn't seem to be much activity there).

I'm trying to fix some errors I have in the Docker Groovy images on the ppc64le, arm64v8, and s390x architectures. I don't personally have any experience working with these architectures. Here are the errors I get

powerpc64le

Caused by: java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no jansi in java.library.path, /tmp/libjansi-64-6177151729256195035.so: Error relocating /tmp/libjansi-64-6177151729256195035.so: unsupported relocation type 7 (Possible cause: can't load AMD 64-bit .so on a Power PC 64-bit platform)]
at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182)
at org.fusesource.hawtjni.runtime.Library.load(Library.java:140)
at org.fusesource.jansi.internal.CLibrary.(CLibrary.java:42)
at org.fusesource.jansi.AnsiConsole.wrapOutputStream(AnsiConsole.java:48)
at org.fusesource.jansi.AnsiConsole.(AnsiConsole.java:38)

arm64v8

Caused by: java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no jansi in java.library.path, /tmp/libjansi-64-6661390371961894243.so: Error relocating /tmp/libjansi-64-6661390371961894243.so: unsupported relocation type 7 (Possible cause: can't load AMD 64-bit .so on a AARCH64-bit platform)]
at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182)
at org.fusesource.hawtjni.runtime.Library.load(Library.java:140)
at org.fusesource.jansi.internal.CLibrary.(CLibrary.java:42)
at org.fusesource.jansi.AnsiConsole.wrapOutputStream(AnsiConsole.java:48)
at org.fusesource.jansi.AnsiConsole.(AnsiConsole.java:38)

s390x

[0mOpenJDK 64-Bit Zero VM warning: You have loaded library /tmp/libjansi-64-7943786764210458085.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c ', or link it with '-z noexecstack'.
...
Caused by: java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no jansi in java.library.path, /tmp/libjansi-64-7943786764210458085.so: Error loading shared library /tmp/libjansi-64-7943786764210458085.so: Exec format error (Possible cause: endianness mismatch)]
at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182)
at org.fusesource.hawtjni.runtime.Library.load(Library.java:140)
at org.fusesource.jansi.internal.CLibrary.(CLibrary.java:42)
at org.fusesource.jansi.AnsiConsole.wrapOutputStream(AnsiConsole.java:48)
at org.fusesource.jansi.AnsiConsole.(AnsiConsole.java:38)

I tried installing Jansi native packages (libjansi-native-java on Debian, java-jansi-native on Alpine). The Debian package doesn't have separate versions for different architectures, but the Alpine packages do. But that didn't seem to help (at least for linux-ppc64le that I tested on Travis). I know Paul-Ionut Vaduva asked about aarch64 twice on the mailing list (here and here), and @VallariTrivedi asked about aarch64 in this issue.

Does jansi-native support these architectures? It looks like there isn't a jar published for these architectures (just linux32 and linux 64).

compile error in jansi-native-1.6 with platform linux64

hi there, because the dependency of presto, I need to compile jansi-native-1.6 with linux64. But I met the error below:
[ERROR] Failed to execute goal org.fusesource.hawtjni:maven-hawtjni-plugin:1.13:build (default) on project jansi-linux64: build failed: org.apache.maven.plugin.MojoExecutionException: Requested download does not exist.: org.fusesource.jansi:jansi-linux64:zip:native-src:1.6 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced

I notice there is no jansi-linux64-native-src.zip in https://repo.maven.apache.org/maven2. Is there any place else I can get the source zip? Appreciated for any responses.

Missing 1.8 tag

Hi,

The tag for the 1.8 release is missing, I think this should do the trick:

git tag jansi-native-1.8 5015ad02

JVM crash on RedHat Linux when loading jansi.AnsiConsole

Crash seems to be caused by Jansi trying to load a native library when picocli loads AnsiConsole with Class.forName("org.fusesource.jansi.AnsiConsole"). Is this expected?

(related: remkop/picocli#630)

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f57c2e80d7e, pid=27034, tid=0x00007f5726109700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_112-b15) (build 1.8.0_112-b15)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x6e2d7e]  jni_SetStaticIntField+0xee
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#

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

Current thread (0x00007f57bcc6f800):  JavaThread "Test worker" [_thread_in_vm, id=28287, stack(0x00007f5726009000,0x00007f572610a000)]

siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000

Registers:
RAX=0x00007f57c375aa3c, RBX=0x00007f57bcc6f800, RCX=0x0000000000000000, RDX=0x00007f575825c458
RSP=0x00007f57261047a0, RBP=0x00007f5726104820, RSI=0x00007f57bcc6f800, RDI=0x00007f57bcc6f800
R8 =0x00007f57c375ec60, R9 =0x00000000000000b8, R10=0x0000000000000000, R11=0x0000000000000000
R12=0x0000000000000000, R13=0x00007f57261047b0, R14=0x0000000000000000, R15=0x00007f57c37639e0
RIP=0x00007f57c2e80d7e, EFLAGS=0x0000000000010246, CSGSFS=0x0000000000000033, ERR=0x0000000000000004
  TRAPNO=0x000000000000000e

Top of Stack: (sp=0x00007f57261047a0)
0x00007f57261047a0:   00007f57bcc6f800 0000000000000000
0x00007f57261047b0:   00007f57bcc6f800 00007f575825c450
0x00007f57261047c0:   0000000400000b8b 00007f57c32d66f0
0x00007f57261047d0:   00007f57bcc6f800 00007f57bcc6f800
0x00007f57261047e0:   00007f57bcc6f800 00000049b6b1e460
0x00007f57261047f0:   00007f57bcc6f800 00007f57bcc6f9f8
0x00007f5726104800:   00007f57261048a0 00007f57c2e80c90
0x00007f5726104810:   00007f57261048a8 00007f57bcc6f800
0x00007f5726104820:   00007f5726104890 00007f56b68eff38
0x00007f5726104830:   00007f56b6b1e460 0000000000000000
0x00007f5726104840:   00007f56b6b1e458 00007f57a6af0a34
0x00007f5726104850:   00007f5726104850 00007f56b6b1e458
0x00007f5726104860:   00007f57261048a8 00007f56b6b1e678
0x00007f5726104870:   0000000000000000 00007f56b6b1e460
0x00007f5726104880:   0000000000000000 00007f57261048b0
0x00007f5726104890:   00007f57261048f0 00007f57a6ae12bd
0x00007f57261048a0:   00000006767e83c8 00007f57a6aea538
0x00007f57261048b0:   00007f57261048b0 00007f56b6b1e5dd
0x00007f57261048c0:   00007f57261048f8 00007f56b6b1e678
0x00007f57261048d0:   0000000000000000 00007f56b6b1e5e8
0x00007f57261048e0:   00007f57261048b0 00007f5726104900
0x00007f57261048f0:   00007f5726104960 00007f57a6ad97a7
0x00007f5726104900:   0000000000001fa0 0000000000000000
0x00007f5726104910:   00007f57bcc6f800 00007f57261049e0
0x00007f5726104920:   00007f56b6b1e5e8 00007f57261049a0
0x00007f5726104930:   00007f57261049a0 00007f5726104b78
0x00007f5726104940:   00007f560000000a 00007f56b6b1e5e8
0x00007f5726104950:   00007f57a6aebc80 00007f5726104ae8
0x00007f5726104960:   00007f5726104ad0 00007f57c2e2ec66
0x00007f5726104970:   00007f5600000000 00007f57bcc6f800
0x00007f5726104980:   00007f5726104ae0 00007f5726104b70
0x00007f5726104990:   00007f57a6aebc80 00007f560000000a

Instructions: (pc=0x00007f57c2e80d7e)
0x00007f57c2e80d5e:   00 4d 89 e0 31 d2 31 f6 48 89 df 44 89 75 b0 48
0x00007f57c2e80d6e:   89 44 24 08 c7 04 24 49 00 00 00 e8 d2 0e 0c 00
0x00007f57c2e80d7e:   49 8b 04 24 49 63 54 24 10 48 8b 40 68 44 89 34
0x00007f57c2e80d8e:   10 48 83 7d 98 00 74 08 4c 89 ef e8 d2 3a 29 00

Register to memory mapping:

RAX=0x00007f57c375aa3c: <offset 0xfbca3c> in /usr/java/jdk1.8.0_112/jre/lib/amd64/server/libjvm.so at 0x00007f57c279e000
RBX=0x00007f57bcc6f800 is a thread
RCX=0x0000000000000000 is an unknown value
RDX=0x00007f575825c458 is an unknown value
RSP=0x00007f57261047a0 is pointing into the stack for thread: 0x00007f57bcc6f800
RBP=0x00007f5726104820 is pointing into the stack for thread: 0x00007f57bcc6f800
RSI=0x00007f57bcc6f800 is a thread
RDI=0x00007f57bcc6f800 is a thread
R8 =0x00007f57c375ec60: <offset 0xfc0c60> in /usr/java/jdk1.8.0_112/jre/lib/amd64/server/libjvm.so at 0x00007f57c279e000
R9 =0x00000000000000b8 is an unknown value
R10=0x0000000000000000 is an unknown value
R11=0x0000000000000000 is an unknown value
R12=0x0000000000000000 is an unknown value
R13=0x00007f57261047b0 is pointing into the stack for thread: 0x00007f57bcc6f800
R14=0x0000000000000000 is an unknown value
R15=0x00007f57c37639e0: <offset 0xfc59e0> in /usr/java/jdk1.8.0_112/jre/lib/amd64/server/libjvm.so at 0x00007f57c279e000


Stack: [0x00007f5726009000,0x00007f572610a000],  sp=0x00007f57261047a0,  free space=1005k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x6e2d7e]  jni_SetStaticIntField+0xee
C  [libjansi-64-4975622311553717955.so+0xf38]  Java_org_fusesource_jansi_internal_CLibrary_init+0x108
j  org.fusesource.jansi.internal.CLibrary.<clinit>()V+21
v  ~StubRoutines::call_stub
V  [libjvm.so+0x690c66]  JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x1056
V  [libjvm.so+0x642a77]  InstanceKlass::call_class_initializer_impl(instanceKlassHandle, Thread*)+0xd7
V  [libjvm.so+0x64508c]  InstanceKlass::initialize_impl(instanceKlassHandle, Thread*)+0x1ac
V  [libjvm.so+0x645451]  InstanceKlass::initialize(Thread*)+0x41
V  [libjvm.so+0x7f3adf]  LinkResolver::resolve_field(fieldDescriptor&, KlassHandle, Symbol*, Symbol*, KlassHandle, Bytecodes::Code, bool, bool, Thread*)+0x4df
V  [libjvm.so+0x7f3d45]  LinkResolver::resolve_field_access(fieldDescriptor&, constantPoolHandle, int, Bytecodes::Code, Thread*)+0x245
V  [libjvm.so+0x688ba5]  InterpreterRuntime::resolve_get_put(JavaThread*, Bytecodes::Code)+0x125
j  org.fusesource.jansi.AnsiConsole.wrapOutputStream(Ljava/io/OutputStream;)Ljava/io/OutputStream;+61
j  org.fusesource.jansi.AnsiConsole.<clinit>()V+13
v  ~StubRoutines::call_stub
V  [libjvm.so+0x690c66]  JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x1056
V  [libjvm.so+0x642a77]  InstanceKlass::call_class_initializer_impl(instanceKlassHandle, Thread*)+0xd7
V  [libjvm.so+0x64508c]  InstanceKlass::initialize_impl(instanceKlassHandle, Thread*)+0x1ac
V  [libjvm.so+0x645451]  InstanceKlass::initialize(Thread*)+0x41
V  [libjvm.so+0x70f33b]  find_class_from_class_loader(JNIEnv_*, Symbol*, unsigned char, Handle, Handle, unsigned char, Thread*)+0x7b
V  [libjvm.so+0x715f01]  JVM_FindClassFromCaller+0x2e1
C  [libjava.so+0xe320]  Java_java_lang_Class_forName0+0x130
J 1025  java.lang.Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class; (0 bytes) @ 0x00007f57a7167df4 [0x00007f57a7167d00+0xf4]
J 2145 C1 java.lang.Class.forName(Ljava/lang/String;)Ljava/lang/Class; (15 bytes) @ 0x00007f57a75d840c [0x00007f57a75d8260+0x1ac]
j  picocli.CommandLine$Help$Ansi.isJansiConsoleInstalled()Z+2
j  picocli.CommandLine$Help$Ansi.ansiPossible()Z+16
j  picocli.CommandLine$Help$Ansi.enabled()Z+47
j  picocli.CommandLine$Help$Ansi$Text.toString()Ljava/lang/String;+4
j  picocli.CommandLine$Help$TextTable.toString(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;+54
j  picocli.CommandLine$Help.join(Lpicocli/CommandLine$Help$Ansi;I[Ljava/lang/String;Ljava/lang/StringBuilder;[Ljava/lang/Object;)Ljava/lang/StringBuilder;+128
j  picocli.CommandLine$Help.heading(Lpicocli/CommandLine$Help$Ansi;ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+18
j  picocli.CommandLine$Help.headerHeading([Ljava/lang/Object;)Ljava/lang/String;+19
j  picocli.CommandLine$Model$UsageMessageSpec$1.render(Lpicocli/CommandLine$Help;)Ljava/lang/String;+5
j  picocli.CommandLine.usage(Ljava/lang/StringBuilder;Lpicocli/CommandLine$Help;)Ljava/lang/StringBuilder;+55
j  picocli.CommandLine.usage(Ljava/io/PrintStream;Lpicocli/CommandLine$Help$ColorScheme;)V+23
j  picocli.CommandLine.usage(Ljava/io/PrintStream;Lpicocli/CommandLine$Help$Ansi;)V+6
j  picocli.CommandLine$DefaultExceptionHandler.internalHandleParseException(Lpicocli/CommandLine$ParameterException;Ljava/io/PrintStream;Lpicocli/CommandLine$Help$Ansi;[Ljava/lang/String;)V+22
j  picocli.CommandLine$DefaultExceptionHandler.handleParseException(Lpicocli/CommandLine$ParameterException;[Ljava/lang/String;)Ljava/lang/Object;+11
j  picocli.CommandLine.parseWithHandlers(Lpicocli/CommandLine$IParseResultHandler2;Lpicocli/CommandLine$IExceptionHandler2;[Ljava/lang/String;)Ljava/lang/Object;+25
j  picocli.CommandLine.run(Ljava/lang/Runnable;Ljava/io/PrintStream;Ljava/io/PrintStream;Lpicocli/CommandLine$Help$Ansi;[Ljava/lang/String;)V+56
j  picocli.CommandLine.run(Ljava/lang/Runnable;Ljava/io/PrintStream;[Ljava/lang/String;)V+9
j  com.company.project.tools.AnalyzeLog.main([Ljava/lang/String;)V+24
j  com.company.project.tools.AnalyzeLog$main.call(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+21
J 2110 C1 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (7 bytes) @ 0x00007f57a75c8224 [0x00007f57a75c80a0+0x184]
J 7520 C2 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; (37 bytes) @ 0x00007f57a6ff54c4 [0x00007f57a6ff53e0+0xe4]
j  com.company.project.tools.AnalyzeLogTest.test_parameter_is_nothing()V+84
v  ~StubRoutines::call_stub
V  [libjvm.so+0x690c66]  JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x1056
V  [libjvm.so+0x99c1f7]  Reflection::invoke(instanceKlassHandle, methodHandle, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*)+0x5d7
V  [libjvm.so+0x99f907]  Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0x147
V  [libjvm.so+0x72430b]  JVM_InvokeMethod+0x26b
J 2539  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f57a77b91ad [0x00007f57a77b90c0+0xed]
J 6383 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f57a82526f4 [0x00007f57a8252680+0x74]
J 3282 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f57a7a5efbc [0x00007f57a7a5ef00+0xbc]
j  org.junit.runners.model.FrameworkMethod$1.runReflectiveCall()Ljava/lang/Object;+15
J 14205 C1 org.junit.internal.runners.model.ReflectiveCallable.run()Ljava/lang/Object; (11 bytes) @ 0x00007f57a8dacce4 [0x00007f57a8dacbe0+0x104]
j  org.junit.runners.model.FrameworkMethod.invokeExplosively(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+10
j  org.junit.internal.runners.statements.InvokeMethod.evaluate()V+12
j  org.junit.runners.ParentRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V+17
j  org.junit.runners.BlockJUnit4ClassRunner.runChild(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V+30
j  org.junit.runners.BlockJUnit4ClassRunner.runChild(Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V+6
j  org.junit.runners.ParentRunner$3.run()V+12
j  org.junit.runners.ParentRunner$1.schedule(Ljava/lang/Runnable;)V+1
j  org.junit.runners.ParentRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+44
j  org.junit.runners.ParentRunner.access$000(Lorg/junit/runners/ParentRunner;Lorg/junit/runner/notification/RunNotifier;)V+2
j  org.junit.runners.ParentRunner$2.evaluate()V+8
j  org.junit.runners.ParentRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+20
j  org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(Ljava/lang/String;)V+282
j  org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(Ljava/lang/String;)V+14
j  org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+26
j  org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+5
v  ~StubRoutines::call_stub
V  [libjvm.so+0x690c66]  JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x1056
V  [libjvm.so+0x99c1f7]  Reflection::invoke(instanceKlassHandle, methodHandle, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*)+0x5d7
V  [libjvm.so+0x99f907]  Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0x147
V  [libjvm.so+0x72430b]  JVM_InvokeMethod+0x26b
J 2539  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f57a77b91ad [0x00007f57a77b90c0+0xed]
J 6383 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f57a82526f4 [0x00007f57a8252680+0x74]
J 3282 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f57a7a5efbc [0x00007f57a7a5ef00+0xbc]
j  org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V+19
j  org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Ljava/lang/Object;)V+5
j  org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(Ljava/lang/Object;)V+22
J 14738 C1 org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (185 bytes) @ 0x00007f57a70325a4 [0x00007f57a70311e0+0x13c4]
j  com.sun.proxy.$Proxy19.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+16
j  org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+13
v  ~StubRoutines::call_stub
V  [libjvm.so+0x690c66]  JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x1056
V  [libjvm.so+0x99c1f7]  Reflection::invoke(instanceKlassHandle, methodHandle, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*)+0x5d7
V  [libjvm.so+0x99f907]  Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0x147
V  [libjvm.so+0x72430b]  JVM_InvokeMethod+0x26b
J 2539  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f57a77b91ad [0x00007f57a77b90c0+0xed]
J 6383 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f57a82526f4 [0x00007f57a8252680+0x74]
J 3282 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f57a7a5efbc [0x00007f57a7a5ef00+0xbc]
j  org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V+19
j  org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Ljava/lang/Object;)V+5
j  org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V+5
j  org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(Ljava/lang/Object;)V+5
j  org.gradle.internal.remote.internal.hub.MessageHub$Handler.run()V+174
j  org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(Ljava/lang/Runnable;)V+1
j  org.gradle.internal.concurrent.ManagedExecutorImpl$1.run()V+25
j  java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+95
...<more frames>...

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.fusesource.jansi.internal.CLibrary.init()V+0
j  org.fusesource.jansi.internal.CLibrary.<clinit>()V+21
v  ~StubRoutines::call_stub
j  org.fusesource.jansi.AnsiConsole.wrapOutputStream(Ljava/io/OutputStream;)Ljava/io/OutputStream;+61
j  org.fusesource.jansi.AnsiConsole.<clinit>()V+13
v  ~StubRoutines::call_stub
J 1025  java.lang.Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class; (0 bytes) @ 0x00007f57a7167d7a [0x00007f57a7167d00+0x7a]
J 2145 C1 java.lang.Class.forName(Ljava/lang/String;)Ljava/lang/Class; (15 bytes) @ 0x00007f57a75d840c [0x00007f57a75d8260+0x1ac]
j  picocli.CommandLine$Help$Ansi.isJansiConsoleInstalled()Z+2
j  picocli.CommandLine$Help$Ansi.ansiPossible()Z+16
j  picocli.CommandLine$Help$Ansi.enabled()Z+47
j  picocli.CommandLine$Help$Ansi$Text.toString()Ljava/lang/String;+4
j  picocli.CommandLine$Help$TextTable.toString(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;+54
j  picocli.CommandLine$Help.join(Lpicocli/CommandLine$Help$Ansi;I[Ljava/lang/String;Ljava/lang/StringBuilder;[Ljava/lang/Object;)Ljava/lang/StringBuilder;+128
j  picocli.CommandLine$Help.heading(Lpicocli/CommandLine$Help$Ansi;ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+18
j  picocli.CommandLine$Help.headerHeading([Ljava/lang/Object;)Ljava/lang/String;+19
j  picocli.CommandLine$Model$UsageMessageSpec$1.render(Lpicocli/CommandLine$Help;)Ljava/lang/String;+5
j  picocli.CommandLine.usage(Ljava/lang/StringBuilder;Lpicocli/CommandLine$Help;)Ljava/lang/StringBuilder;+55
j  picocli.CommandLine.usage(Ljava/io/PrintStream;Lpicocli/CommandLine$Help$ColorScheme;)V+23
j  picocli.CommandLine.usage(Ljava/io/PrintStream;Lpicocli/CommandLine$Help$Ansi;)V+6
j  picocli.CommandLine$DefaultExceptionHandler.internalHandleParseException(Lpicocli/CommandLine$ParameterException;Ljava/io/PrintStream;Lpicocli/CommandLine$Help$Ansi;[Ljava/lang/String;)V+22
j  picocli.CommandLine$DefaultExceptionHandler.handleParseException(Lpicocli/CommandLine$ParameterException;[Ljava/lang/String;)Ljava/lang/Object;+11
j  picocli.CommandLine.parseWithHandlers(Lpicocli/CommandLine$IParseResultHandler2;Lpicocli/CommandLine$IExceptionHandler2;[Ljava/lang/String;)Ljava/lang/Object;+25
j  picocli.CommandLine.run(Ljava/lang/Runnable;Ljava/io/PrintStream;Ljava/io/PrintStream;Lpicocli/CommandLine$Help$Ansi;[Ljava/lang/String;)V+56
j  picocli.CommandLine.run(Ljava/lang/Runnable;Ljava/io/PrintStream;[Ljava/lang/String;)V+9
j  com.company.project.tools.AnalyzeLog.main([Ljava/lang/String;)V+24
j  com.company.project.tools.AnalyzeLog$main.call(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+21
J 2110 C1 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (7 bytes) @ 0x00007f57a75c8224 [0x00007f57a75c80a0+0x184]
J 7520 C2 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; (37 bytes) @ 0x00007f57a6ff54c4 [0x00007f57a6ff53e0+0xe4]
j  com.company.project.tools.AnalyzeLogTest.test_parameter_is_nothing()V+84
v  ~StubRoutines::call_stub
J 2539  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f57a77b9137 [0x00007f57a77b90c0+0x77]
J 6383 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f57a82526f4 [0x00007f57a8252680+0x74]
J 3282 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f57a7a5efbc [0x00007f57a7a5ef00+0xbc]
j  org.junit.runners.model.FrameworkMethod$1.runReflectiveCall()Ljava/lang/Object;+15
J 14205 C1 org.junit.internal.runners.model.ReflectiveCallable.run()Ljava/lang/Object; (11 bytes) @ 0x00007f57a8dacce4 [0x00007f57a8dacbe0+0x104]
j  org.junit.runners.model.FrameworkMethod.invokeExplosively(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+10
j  org.junit.internal.runners.statements.InvokeMethod.evaluate()V+12
j  org.junit.runners.ParentRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V+17
j  org.junit.runners.BlockJUnit4ClassRunner.runChild(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V+30
j  org.junit.runners.BlockJUnit4ClassRunner.runChild(Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V+6
j  org.junit.runners.ParentRunner$3.run()V+12
j  org.junit.runners.ParentRunner$1.schedule(Ljava/lang/Runnable;)V+1
j  org.junit.runners.ParentRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+44
j  org.junit.runners.ParentRunner.access$000(Lorg/junit/runners/ParentRunner;Lorg/junit/runner/notification/RunNotifier;)V+2
j  org.junit.runners.ParentRunner$2.evaluate()V+8
j  org.junit.runners.ParentRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+20
j  org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(Ljava/lang/String;)V+282
j  org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(Ljava/lang/String;)V+14
j  org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+26
j  org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+5
v  ~StubRoutines::call_stub
J 2539  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f57a77b9137 [0x00007f57a77b90c0+0x77]
J 6383 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f57a82526f4 [0x00007f57a8252680+0x74]
J 3282 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f57a7a5efbc [0x00007f57a7a5ef00+0xbc]
j  org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V+19
j  org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Ljava/lang/Object;)V+5
j  org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(Ljava/lang/Object;)V+22
J 14738 C1 org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (185 bytes) @ 0x00007f57a70325a4 [0x00007f57a70311e0+0x13c4]
j  com.sun.proxy.$Proxy19.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+16
j  org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+13
v  ~StubRoutines::call_stub
J 2539  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f57a77b9137 [0x00007f57a77b90c0+0x77]
J 6383 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f57a82526f4 [0x00007f57a8252680+0x74]
J 3282 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f57a7a5efbc [0x00007f57a7a5ef00+0xbc]
j  org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V+19
j  org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Ljava/lang/Object;)V+5
j  org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V+5
j  org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(Ljava/lang/Object;)V+5
j  org.gradle.internal.remote.internal.hub.MessageHub$Handler.run()V+174
j  org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(Ljava/lang/Runnable;)V+1
j  org.gradle.internal.concurrent.ManagedExecutorImpl$1.run()V+25
j  java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+95
j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5
j  org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run()V+7
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub

System properties:

-- listing properties --
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=/usr/java/jdk1.8.0_112/jre/lib/amd64
java.vm.version=25.112-b15
java.vm.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
path.separator=:
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io
user.country=US
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=unknown
java.vm.specification.name=Java Virtual Machine Specification
user.dir=/home/users/rpopma
java.runtime.version=1.8.0_112-b15
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
java.endorsed.dirs=/usr/java/jdk1.8.0_112/jre/lib/endorsed
os.arch=amd64
java.io.tmpdir=/tmp
line.separator=

java.vm.specification.vendor=Oracle Corporation
os.name=Linux
sun.jnu.encoding=UTF-8
java.library.path=/usr/java/packages/lib/amd64:/usr/lib...
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=3.10.0-327.44.2.el7.x86_64
user.home=/home/users/rpopma
user.timezone=
java.awt.printerjob=sun.print.PSPrinterJob
file.encoding=UTF-8
java.specification.version=1.8
user.name=rpopma
java.class.path=.
java.vm.specification.version=1.8
sun.arch.data.model=64
java.home=/usr/java/jdk1.8.0_112/jre
sun.java.command=SysProp
java.specification.vendor=Oracle Corporation
user.language=en
awt.toolkit=sun.awt.X11.XToolkit
java.vm.info=mixed mode
java.version=1.8.0_112
java.ext.dirs=/usr/java/jdk1.8.0_112/jre/lib/ext:/u...
sun.boot.class.path=/usr/java/jdk1.8.0_112/jre/lib/resour...
java.vendor=Oracle Corporation
file.separator=/
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.isalist=

java version

[rpopma@dpl0084 ~]$ java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

build Jansi-Native for aarch64

how to build Jansi-Native for aarch64

I ran following to build Jansi-Native for aarch64

mvn -Dplatform=${platform} package
mvn -Dplatform=aarch64 package

libjansi.so build inside aarch64 is static library for x86-64 platform, how to build it for aarch64

isatty() does not return correct value in cygwin and msys2.

Overview

In cygwin (3.0.7 or older) and msys2, isatty() does not return correct value.

Description

In cygwin 3.0.7 or older and msys2, return value of isatty() is not correct. The value returned is almost opposite. It returns 0 for pty and returns 1 when it is piped or redirected to /dev/null or /dev/zero. These results are exact opposite to expected values. The correct case is only when it is redirected to normal file. In this case, isatty() returns 0 as expected.

In cygwin 3.1.0 and later, it returns correct value 1 for pty, however, also returns 1 for pipe, /dev/null and /dev/zero.

The Cause

The rc setting at the bottom of jansi_isatty.c is completly reversed. Moreover, checking FILE_TYPE_CHAR is not enough because GetFileType() returns FILE_TYPE_CHAR for cygwin /dev/null and /dev/zero.

Patch for this issue

diff --git a/src/main/native-package/src/jansi_isatty.c b/src/main/native-package/src/jansi_isatty.c
index 26f576c..24745b4 100644
--- a/src/main/native-package/src/jansi_isatty.c
+++ b/src/main/native-package/src/jansi_isatty.c
@@ -50,12 +50,13 @@ JNIEXPORT jint JNICALL CLibrary_NATIVE(isatty)
 	BYTE buffer[1024];
 	PFILE_NAME_INFORMATION nameinfo = (PFILE_NAME_INFORMATION) buffer;
 	PWSTR name;
+	DWORD mode;
 
 	CLibrary_NATIVE_ENTER(env, that, CLibrary_isatty_FUNC);
 	/* check if fd is a pipe */
 	HANDLE h = (HANDLE) _get_osfhandle(arg0);
 	DWORD t = GetFileType(h);
-	if (t == FILE_TYPE_CHAR) {
+	if (t == FILE_TYPE_CHAR && GetConsoleMode(h, &mode)) {
 		rc = 1;
 	}
 	else if (t != FILE_TYPE_PIPE) {
@@ -90,9 +91,9 @@ JNIEXPORT jint JNICALL CLibrary_NATIVE(isatty)
 				 */
 				if ((!wcsstr(name, L"msys-") && !wcsstr(name, L"cygwin-"))
 						|| !wcsstr(name, L"-pty")) {
-					rc = 1;
-				} else {
 					rc = 0;
+				} else {
+					rc = 1;
 				}
 			}
 		}

Improve isatty() Windows implementation with Cygwin/Mingw pseudo terminals

as seen in Jansi issue fusesource/jansi#94, Cygwin and Mingw use pseudo terminals, not real terminals
Then isatty() does not detect the pseudo-terminal
Git has a workaround: git/git@8692483

        /* get pipe name */
 	if (!NT_SUCCESS(NtQueryObject(h, ObjectNameInformation,
 			buffer, sizeof(buffer) - 2, &result)))
 		return;
 	name = nameinfo->Name.Buffer;
 	name[nameinfo->Name.Length] = 0;
 
	/*
	 * Check if this could be a MSYS2 pty pipe ('msys-XXXX-ptyN-XX')
	 * or a cygwin pty pipe ('cygwin-XXXX-ptyN-XX')
	 */
	if ((!wcsstr(name, L"msys-") && !wcsstr(name, L"cygwin-")) ||
			!wcsstr(name, L"-pty"))
		return;

This code should be added to Jansi native isatty() implementation for Windows to properly detect (pseudo)terminal with Cygwin and Mingw

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.