Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamically load libssl in JITServer #8145

Merged
merged 1 commit into from
Dec 24, 2019

Conversation

a7ehuo
Copy link
Contributor

@a7ehuo a7ehuo commented Dec 18, 2019

Dynamically load libssl in JITServer using dlopen and load the OpenSSL libssl symbols required by JITServer. Replaced all the libssl APIs with function calls to the loaded symbols during the runtime.

Signed-off-by: Annabelle Huo Annabelle.Huo@ibm.com

@a7ehuo a7ehuo force-pushed the dynamicallyLoadOpenSSL branch 3 times, most recently from d962f2d to fa8a0ef Compare December 19, 2019 01:44
@mpirvu mpirvu added the comp:jitserver Artifacts related to JIT-as-a-Service project label Dec 19, 2019
@mpirvu mpirvu added this to In progress in JIT as a Service via automation Dec 19, 2019
Copy link
Contributor

@mpirvu mpirvu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall it looks ok to me. In rossa.cpp when calling loadLibsslAndFindSymbols you must inspect the return code and fail the JVM.
Also, is it possible to load the SSL libs only if the client/server want to use encryption?

@a7ehuo
Copy link
Contributor Author

a7ehuo commented Dec 21, 2019

7caee01 has replaced all the symbols. So far tested the following configuration with OpenSSL connection established between the server and the client.

  1. Compile with 1.0.2g (--with-openssl=fetched), run with 1.1.1b
  2. Compile with 1.1.0(--with-openssl=fetched), run with 1.1.1b
==== Server ==== 
#JITServer: Started JITServer listener thread: 0000000002374E00 
#JITServer: Successfully initialized SSL context (OpenSSL 1.1.1b  26 Feb 2019)
JITServer ready to accept incoming requests
#JITServer: SSL connection on socket 0x5, Version: TLSv1.3, Cipher: TLS_AES_256_GCM_SHA384
#JITServer: Server received request for stream 00007FD313D77E80
#JITServer: Server allocated data for a new clientUID 9596315194307397211
==== Client ====
#JITServer: Successfully initialized SSL context (OpenSSL 1.1.1b  26 Feb 2019) 
...
#JITServer: SSL connection on socket 0x9, Version: TLSv1.3, Cipher: TLS_AES_256_GCM_SHA384

#JITServer: Client sending compReq seqNo=0 to server for method sun/reflect/Reflection.getCallerClass()Ljava/lang/Class; @ cold.openjdk version "1.8.0_242-internal"
OpenJDK Runtime Environment (build 1.8.0_242-internal-root_2019_12_19_13_31-b00)
Eclipse OpenJ9 VM (build dynamicallyLoadOpenSSL-aae0fe3, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20191220_000000 (JIT enabled, AOT enabled)
OpenJ9   - aae0fe3
OMR      - 34eacb8
JCL      - b2a1abf based on jdk8u242-b04)
#JITServer: Client successfully loaded method sun/reflect/Reflection.getCallerClass()Ljava/lang/Class; @ cold following compilation request. [metaData=00007FFB00EAB038, startPC=00007FFB0240003C]

@a7ehuo a7ehuo changed the title WIP: Dynamically load libssl in JITServer Dynamically load libssl in JITServer Dec 22, 2019
@a7ehuo a7ehuo marked this pull request as ready for review December 22, 2019 23:12
@a7ehuo
Copy link
Contributor Author

a7ehuo commented Dec 22, 2019

@mpirvu All comments addressed. Ready for another review. Thanks!

Tested 
#JITServer: Built against (OpenSSL 1.0.2g  1 Mar 2016); Loaded with (OpenSSL 1.1.1b  26 Feb 2019)
#JITServer: Built against (OpenSSL 1.1.1  11 Sep 2018); Loaded with (OpenSSL 1.0.2g  1 Mar 2
#JITServer: Built against (OpenSSL 1.1.1  11 Sep 2018); Loaded with (OpenSSL 1.1.1b  26 Feb 2019)

Copy link
Contributor

@mpirvu mpirvu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Indentation needs to be fixed in one of the files.
Could you please make sure that SSL operations work as expected? For that you need something like an AcmeAir run, or maybe "java -version" exercises enough/all of the functionality

runtime/compiler/net/LoadSSLLibs.cpp Outdated Show resolved Hide resolved
@mpirvu mpirvu self-assigned this Dec 23, 2019
@mpirvu
Copy link
Contributor

mpirvu commented Dec 23, 2019

Jenkins test sanity xlinuxjit jdk8

Dynamically load the OpenSSL libssl symbols required by JITServer.
Replaced all the libssl APIs with function calls to
the loaded symbols during the runtime.

Related to eclipse-openj9#8138

Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
@a7ehuo
Copy link
Contributor Author

a7ehuo commented Dec 23, 2019

@mpirvu All comments addressed. Ready for another review. Thanks.

All the above three cases are tested with SSL connection established between the client and the server by running '-Xjit:count=0,verbose={JITServer}' -version at the client.

Here are more detailed logs from building with 1.0.2 and running with 1.1.1.

==== client ==== 
java -XX:+UseJITServer -XX:JITServerSSLRootCerts=cert.pem '-Xjit:count=0,verbose={JITServer}' -version

#JITServer: JITServer Client Mode. Server address: localhost port: 38400. Connection Timeout 2000ms
#JITServer: Built against (OpenSSL 1.0.2g  1 Mar 2016); Loaded with (OpenSSL 1.1.1b  26 Feb 2019)

#JITServer: Successfully initialized SSL context (OpenSSL 1.1.1b  26 Feb 2019) 

#INFO:  StartTime: Dec 22 14:45:26 2019
#INFO:  Free Physical Memory: 6349 MB 
#INFO:  CPU entitlement = 800.00
#JITServer: SSL connection on socket 0x9, Version: TLSv1.3, Cipher: TLS_AES_256_GCM_SHA384

#JITServer: Client sending compReq seqNo=0 to server for method java/lang/String$CaseInsensitiveComparator.<init>(Ljava/lang/String$1;)V @ warm.
#INFO:  AOT header validation failed: AsyncCompilation feature mismatch.

#JITServer: Client successfully loaded method java/lang/String$CaseInsensitiveComparator.<init>(Ljava/lang/String$1;)V @ warm following compilation request. [metaData=00007FAE2B49B038, startPC=00007FD223200060]
#JITServer: Client sending compReq seqNo=1 to server for method java/lang/Object.<init>()V @ cold.
#JITServer: Client successfully loaded method java/lang/Object.<init>()V @ cold following compilation request. [metaData=00007FAE2B49B1B8, startPC=00007FAE4A792060]
#JITServer: Client sending compReq seqNo=2 to server for method com/ibm/jit/JITHelpers.classIsInterfaceFlag()I @ cold.
#JITServer: Client successfully loaded method com/ibm/jit/JITHelpers.classIsInterfaceFlag()I @ cold following compilation request. [metaData=00007FAE2B49B3B8, startPC=00007FAE4A7920F8]
#JITServer: Client sending compReq seqNo=3 to server for method java/util/HashMap.<init>()V @ cold.
#JITServer: Client successfully loaded method java/util/HashMap.<init>()V @ cold following compilation request. [metaData=00007FAE2B49B5B8, startPC=00007FAE4A792160]
#JITServer: Client sending compReq seqNo=4 to server for method java/util/HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @ cold.
#JITServer: Client successfully loaded method java/util/HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @ cold following compilation request. [metaData=00007FAE2B49B7F8, startPC=00007FAE4A7922E8]
#JITServer: Client sending compReq seqNo=5 to server for method java/lang/Object.hashCode()I @ cold.
#JITServer: Client successfully loaded method java/lang/Object.hashCode()I @ cold following compilation request. [metaData=00007FAE2B49BA38, startPC=00007FAE4A7924A0]
#JITServer: Client sending compReq seqNo=6 to server for method java/util/HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ cold.
#JITServer: Client successfully loaded method java/util/HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; @ cold following compilation request. [metaData=00007FAE2B49BD78, startPC=00007FAE4A792C28]
#JITServer: Client sending compReq seqNo=7 to server for method java/util/HashMap.resize()[Ljava/util/HashMap$Node; @ cold.
#JITServer: Client successfully loaded method java/util/HashMap.resize()[Ljava/util/HashMap$Node; @ cold following compilation request. [metaData=00007FAE2B49C1F8, startPC=00007FAE4A7937C0]
#JITServer: Client sending compReq seqNo=8 to server for method java/util/HashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V @ cold.
#JITServer: Client successfully loaded method java/util/HashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V @ cold following compilation request. [metaData=00007FAE2B49C4F8, startPC=00007FAE4A794288]
#JITServer: Client sending compReq seqNo=9 to server for method sun/reflect/Reflection.registerMethodsToFilter(Ljava/lang/Class;[Ljava/lang/String;)V @ cold.
#JITServer: Client successfully loaded method sun/reflect/Reflection.registerMethodsToFilter(Ljava/lang/Class;[Ljava/lang/String;)V @ cold following compilation request. [metaData=00007FAE2B49C738, startPC=00007FAE4A7944A0]
#JITServer: Client sending compReq seqNo=10 to server for method sun/reflect/Reflection.registerFilter(Ljava/util/Map;Ljava/lang/Class;[Ljava/lang/String;)Ljava/util/Map; @ cold.
#JITServer: Client successfully loaded method sun/reflect/Reflection.registerFilter(Ljava/util/Map;Ljava/lang/Class;[Ljava/lang/String;)Ljava/util/Map; @ cold following compilation request. [metaData=00007FAE2B49C9B8, startPC=00007FAE4A7947C8]
#JITServer: Client sending compReq seqNo=11 to server for method java/util/HashMap.hash(Ljava/lang/Object;)I @ cold.
#JITServer: Client successfully loaded method java/util/HashMap.hash(Ljava/lang/Object;)I @ cold following compilation request. [metaData=00007FAE2B49CEB8, startPC=00007FAE4A795220]
#JITServer: Client sending compReq seqNo=12 to server for method java/util/HashMap.putMapEntries(Ljava/util/Map;Z)V @ cold.
#JITServer: Client successfully loaded method java/util/HashMap.putMapEntries(Ljava/util/Map;Z)V @ cold following compilation request. [metaData=00007FAE2B49D0B8, startPC=00007FAE4A795348]
#JITServer: Client sending compReq seqNo=13 to server for method sun/misc/Unsafe.getUnsafe()Lsun/misc/Unsafe; @ cold.
#JITServer: Client successfully loaded method sun/misc/Unsafe.getUnsafe()Lsun/misc/Unsafe; @ cold following compilation request. [metaData=00007FAE2B49D478, startPC=00007FAE4A7959F8]
#JITServer: Client sending compReq seqNo=14 to server for method java/lang/Class.getClassLoader()Ljava/lang/ClassLoader; @ cold.
#JITServer: Client successfully loaded method java/lang/Class.getClassLoader()Ljava/lang/ClassLoader; @ cold following compilation request. [metaData=00007FAE2B49D6F8, startPC=00007FAE4A795C80]
#JITServer: Client sending compReq seqNo=15 to server for method java/util/Properties.<init>()V @ cold.
#JITServer: Client successfully loaded method java/util/Properties.<init>()V @ cold following compilation request. [metaData=00007FAE2B49D978, startPC=00007FAE4A795FC0]
#JITServer: Client sending compReq seqNo=16 to server for method java/util/Hashtable.<init>(IF)V @ cold.
#JITServer: Client successfully loaded method java/util/Hashtable.<init>(IF)V @ cold following compilation request. [metaData=00007FAE2B49DBB8, startPC=00007FAE4A796188]
#JITServer: Client sending compReq seqNo=17 to server for method sun/reflect/Reflection.getCallerClass()Ljava/lang/Class; @ cold.
#JITServer: Client successfully loaded method sun/reflect/Reflection.getCallerClass()Ljava/lang/Class; @ cold following compilation request. [metaData=00007FAE2B49DFB8, startPC=00007FAE4A7968FC]
#JITServer: Client sending compReq seqNo=18 to server for method sun/misc/VM.isSystemDomainLoader(Ljava/lang/ClassLoader;)Z @ cold.
#JITServer: Client successfully loaded method sun/misc/VM.isSystemDomainLoader(Ljava/lang/ClassLoader;)Z @ cold following compilation request. [metaData=00007FAE2B49E0F8, startPC=00007FAE4A796A80]
#JITServer: Client sending compReq seqNo=19 to server for method java/lang/Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class; @ cold.
#JITServer: Client successfully loaded method java/lang/Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class; @ cold following compilation request. [metaData=00007FAE2B49E2F8, startPC=00007FAE4A796BA0]
#JITServer: Client sending compReq seqNo=20 to server for method java/lang/String.equals(Ljava/lang/Object;)Z @ cold.
#JITServer: Client successfully loaded method java/lang/String.equals(Ljava/lang/Object;)Z @ cold following compilation request. [metaData=00007FAE2B49E778, startPC=00007FAE4A797AE0]
#JITServer: Client sending compReq seqNo=21 to server for method java/lang/Float.isNaN(F)Z @ cold.
#JITServer: Client successfully loaded method java/lang/Float.isNaN(F)Z @ cold following compilation request. [metaData=00007FAE2B49EAB8, startPC=00007FAE4A7981C0]
#JITServer: Client sending compReq seqNo=22 to server for method java/lang/Class.desiredAssertionStatus()Z @ cold.
#JITServer: Client successfully loaded method java/lang/Class.desiredAssertionStatus()Z @ cold following compilation request. [metaData=00007FAE2B49ECB8, startPC=00007FAE4A7982E0]
#JITServer: Client sending compReq seqNo=23 to server for method java/lang/Math.powerOfTwoD(I)D @ cold.
#JITServer: Client successfully loaded method java/lang/Math.powerOfTwoD(I)D @ cold following compilation request. [metaData=00007FAE2B49EEF8, startPC=00007FAE4A7984B8]
#JITServer: Client sending compReq seqNo=24 to server for method java/lang/Math.min(FF)F @ cold.
#JITServer: Client successfully loaded method java/lang/Math.min(FF)F @ cold following compilation request. [metaData=00007FAE2B49F138, startPC=00007FAE4A7986A0]
#JITServer: Client sending compReq seqNo=25 to server for method com/ibm/jit/JITHelpers.getHelpers()Lcom/ibm/jit/JITHelpers; @ cold.
#JITServer: Client successfully loaded method com/ibm/jit/JITHelpers.getHelpers()Lcom/ibm/jit/JITHelpers; @ cold following compilation request. [metaData=00007FAE2B49F338, startPC=00007FAE4A798858]
#JITServer: Client sending compReq seqNo=26 to server for method com/ibm/jit/JITHelpers.putByteInArrayByIndex(Ljava/lang/Object;IB)V @ cold.
#JITServer: Client successfully loaded method com/ibm/jit/JITHelpers.putByteInArrayByIndex(Ljava/lang/Object;IB)V @ cold following compilation request. [metaData=00007FAE2B49F578, startPC=00007FAE4A798B68]
#JITServer: Client sending compReq seqNo=27 to server for method com/ibm/jit/JITHelpers.storeBits(JIJII)J @ cold.
#JITServer: Client successfully loaded method com/ibm/jit/JITHelpers.storeBits(JIJII)J @ cold following compilation request. [metaData=00007FAE2B49F838, startPC=00007FAE4A798F28]
#JITServer: Client sending compReq seqNo=28 to server for method com/ibm/jit/JITHelpers.putCharInArrayByIndex(Ljava/lang/Object;IC)V @ cold.
#JITServer: Client successfully loaded method com/ibm/jit/JITHelpers.putCharInArrayByIndex(Ljava/lang/Object;IC)V @ cold following compilation request. [metaData=00007FAE2B49FA38, startPC=00007FAE4A7990E8]
#JITServer: Client sending compReq seqNo=29 to server for method java/security/CodeSource.<init>(Ljava/net/URL;[Ljava/security/cert/Certificate;)V @ cold.
#JITServer: Client successfully loaded method java/security/CodeSource.<init>(Ljava/net/URL;[Ljava/security/cert/Certificate;)V @ cold following compilation request. [metaData=00007FAE2B49FCF8, startPC=00007FAE4A7994E8]
#JITServer: Client sending compReq seqNo=30 to server for method java/util/Arrays.asList([Ljava/lang/Object;)Ljava/util/List; @ cold.
#JITServer: Client successfully loaded method java/util/Arrays.asList([Ljava/lang/Object;)Ljava/util/List; @ cold following compilation request. [metaData=00007FAE2B49FFB8, startPC=00007FAE4A799880]
#JITServer: Client sending compReq seqNo=31 to server for method java/util/Arrays$ArrayList.<init>([Ljava/lang/Object;)V @ cold.
#JITServer: Client successfully loaded method java/util/Arrays$ArrayList.<init>([Ljava/lang/Object;)V @ cold following compilation request. [metaData=00007FAE2B4A01F8, startPC=00007FAE4A799A00]
#JITServer: Client sending compReq seqNo=32 to server for method java/util/Objects.requireNonNull(Ljava/lang/Object;)Ljava/lang/Object; @ cold.
#JITServer: Client successfully loaded method java/util/Objects.requireNonNull(Ljava/lang/Object;)Ljava/lang/Object; @ cold following compilation request. [metaData=00007FAE2B4A0478, startPC=00007FAE4A799C40]
#JITServer: Client sending compReq seqNo=33 to server for method java/util/HashSet.<init>(Ljava/util/Collection;)V @ cold.
#JITServer: Client successfully loaded method java/util/HashSet.<init>(Ljava/util/Collection;)V @ cold following compilation request. [metaData=00007FAE2B4A06B8, startPC=00007FAE4A799DC0]
#JITServer: Client sending compReq seqNo=34 to server for method java/util/Arrays$ArrayList.size()I @ cold.
#JITServer: Client successfully loaded method java/util/Arrays$ArrayList.size()I @ cold following compilation request. [metaData=00007FAE2B4A0978, startPC=00007FAE4A79A2A0]
#JITServer: Client sending compReq seqNo=35 to server for method java/util/HashMap.<init>(IF)V @ cold.
#JITServer: Client successfully loaded method java/util/HashMap.<init>(IF)V @ cold following compilation request. [metaData=00007FAE2B4A0B78, startPC=00007FAE4A79A328]
#JITServer: Client sending compReq seqNo=36 to server for method java/util/HashMap.tableSizeFor(I)I @ cold.
#JITServer: Client successfully loaded method java/util/HashMap.tableSizeFor(I)I @ cold following compilation request. [metaData=00007FAE2B4A0F38, startPC=00007FAE4A79A958]
#JITServer: Client sending compReq seqNo=37 to server for method java/util/AbstractCollection.addAll(Ljava/util/Collection;)Z @ cold.
#JITServer: Client successfully loaded method java/util/AbstractCollection.addAll(Ljava/util/Collection;)Z @ cold following compilation request. [metaData=00007FAE2B4A1138, startPC=00007FAE4A79AAA0]
#JITServer: Client sending compReq seqNo=38 to server for method java/util/AbstractList.iterator()Ljava/util/Iterator; @ cold.
#JITServer: Client successfully loaded method java/util/AbstractList.iterator()Ljava/util/Iterator; @ cold following compilation request. [metaData=00007FAE2B4A13B8, startPC=00007FAE4A79ADA0]
#JITServer: Client sending compReq seqNo=39 to server for method java/util/AbstractList$Itr.<init>(Ljava/util/AbstractList;Ljava/util/AbstractList$1;)V @ cold.
#JITServer: Client successfully loaded method java/util/AbstractList$Itr.<init>(Ljava/util/AbstractList;Ljava/util/AbstractList$1;)V @ cold following compilation request. [metaData=00007FAE2B4A15F8, startPC=00007FAE4A79AF28]
#JITServer: Client sending compReq seqNo=40 to server for method java/util/AbstractList$Itr.<init>(Ljava/util/AbstractList;)V @ cold.
#JITServer: Client successfully loaded method java/util/AbstractList$Itr.<init>(Ljava/util/AbstractList;)V @ cold following compilation request. [metaData=00007FAE2B4A17F8, startPC=00007FAE4A79B060]
#JITServer: Client sending compReq seqNo=41 to server for method java/util/AbstractList$Itr.hasNext()Z @ cold.
#JITServer: Client successfully loaded method java/util/AbstractList$Itr.hasNext()Z @ cold following compilation request. [metaData=00007FAE2B4A1A78, startPC=00007FAE4A79B2C0]
#JITServer: Client sending compReq seqNo=42 to server for method java/util/AbstractList$Itr.next()Ljava/lang/Object; @ cold.
#JITServer: Client successfully loaded method java/util/AbstractList$Itr.next()Ljava/lang/Object; @ cold following compilation request. [metaData=00007FAE2B4A1CB8, startPC=00007FAE4A79B440]
#JITServer: Client sending compReq seqNo=43 to server for method java/util/HashSet.add(Ljava/lang/Object;)Z @ cold.
#JITServer: Client successfully loaded method java/util/HashSet.add(Ljava/lang/Object;)Z @ cold following compilation request. [metaData=00007FAE2B4A1F78, startPC=00007FAE4A79B740]
#JITServer: Client sending compReq seqNo=44 to server for method java/util/Collections$EmptySet.<init>(Ljava/util/Collections$1;)V @ cold.
#JITServer: Client successfully loaded method java/util/Collections$EmptySet.<init>(Ljava/util/Collections$1;)V @ cold following compilation request. [metaData=00007FAE2B4A21F8, startPC=00007FAE4A79B980]
#JITServer: Client sending compReq seqNo=45 to server for method java/util/Collections$EmptyList.<init>(Ljava/util/Collections$1;)V @ cold.
#JITServer: Client successfully loaded method java/util/Collections$EmptyList.<init>(Ljava/util/Collections$1;)V @ cold following compilation request. [metaData=00007FAE2B4A2438, startPC=00007FAE4A79BAC0]
#JITServer: Client sending compReq seqNo=46 to server for method java/util/Collections$EmptyMap.<init>(Ljava/util/Collections$1;)V @ cold.
#JITServer: Client successfully loaded method java/util/Collections$EmptyMap.<init>(Ljava/util/Collections$1;)V @ cold following compilation request. [metaData=00007FAE2B4A2678, startPC=00007FAE4A79BC40]
#JITServer: Client sending compReq seqNo=47 to server for method java/util/Collections.unmodifiableSet(Ljava/util/Set;)Ljava/util/Set; @ cold.
#JITServer: Client successfully loaded method java/util/Collections.unmodifiableSet(Ljava/util/Set;)Ljava/util/Set; @ cold following compilation request. [metaData=00007FAE2B4A28B8, startPC=00007FAE4A79BD80]
#JITServer: Client sending compReq seqNo=48 to server for method java/util/Collections$UnmodifiableSet.<init>(Ljava/util/Set;)V @ cold.
#JITServer: Client successfully loaded method java/util/Collections$UnmodifiableSet.<init>(Ljava/util/Set;)V @ cold following compilation request. [metaData=00007FAE2B4A2AF8, startPC=00007FAE4A79BF00]
#JITServer: Client sending compReq seqNo=49 to server for method java/lang/Boolean.<init>(Z)V @ cold.
#JITServer: Client successfully loaded method java/lang/Boolean.<init>(Z)V @ cold following compilation request. [metaData=00007FAE2B4A2D78, startPC=00007FAE4A79C120]
#JITServer: Client sending compReq seqNo=50 to server for method java/util/WeakHashMap.<init>()V @ cold.
#JITServer: Client successfully loaded method java/util/WeakHashMap.<init>()V @ cold following compilation request. [metaData=00007FAE2B4A2FB8, startPC=00007FAE4A79C260]
#JITServer: Client sending compReq seqNo=51 to server for method java/util/WeakHashMap.<init>(IF)V @ cold.
#JITServer: Client successfully loaded method java/util/WeakHashMap.<init>(IF)V @ cold following compilation request. [metaData=00007FAE2B4A31B8, startPC=00007FAE4A79C388]
#JITServer: Client sending compReq seqNo=52 to server for method java/lang/Class.forName(Ljava/lang/String;)Ljava/lang/Class; @ cold.
#JITServer: Client successfully loaded method java/lang/Class.forName(Ljava/lang/String;)Ljava/lang/Class; @ cold following compilation request. [metaData=00007FAE2B4A35F8, startPC=00007FAE4A79CC80]
#JITServer: Client sending compReq seqNo=53 to server for method sun/misc/SharedSecrets.setJavaLangRefAccess(Lsun/misc/JavaLangRefAccess;)V @ cold.
#JITServer: Client successfully loaded method sun/misc/SharedSecrets.setJavaLangRefAccess(Lsun/misc/JavaLangRefAccess;)V @ cold following compilation request. [metaData=00007FAE2B4A3878, startPC=00007FAE4A79D100]
#JITServer: Client sending compReq seqNo=54 to server for method java/lang/ref/ReferenceQueue.<init>()V @ cold.
#JITServer: Client successfully loaded method java/lang/ref/ReferenceQueue.<init>()V @ cold following compilation request. [metaData=00007FAE2B4A3A78, startPC=00007FAE4A79D240]
#JITServer: Client sending compReq seqNo=55 to server for method java/util/Collections.synchronizedMap(Ljava/util/Map;)Ljava/util/Map; @ cold.
#JITServer: Client successfully loaded method java/util/Collections.synchronizedMap(Ljava/util/Map;)Ljava/util/Map; @ cold following compilation request. [metaData=00007FAE2B4A3CB8, startPC=00007FAE4A79D420]
#JITServer: Client sending compReq seqNo=56 to server for method java/util/Collections$SynchronizedMap.<init>(Ljava/util/Map;)V @ cold.
#JITServer: Client successfully loaded method java/util/Collections$SynchronizedMap.<init>(Ljava/util/Map;)V @ cold following compilation request. [metaData=00007FAE2B4A3EF8, startPC=00007FAE4A79D5A0]
#JITServer: Client sending compReq seqNo=57 to server for method java/lang/Integer.numberOfLeadingZeros(I)I @ cold.
#JITServer: Client successfully loaded method java/lang/Integer.numberOfLeadingZeros(I)I @ cold following compilation request. [metaData=00007FAE2B4A4178, startPC=00007FAE4A79D838]
#JITServer: Client sending compReq seqNo=58 to server for method java/lang/invoke/ComputedCalls.load()V @ cold.
#JITServer: Client successfully loaded method java/lang/invoke/ComputedCalls.load()V @ cold following compilation request. [metaData=00007FAE2B4A4378, startPC=00007FAE4A79D9B8]
#JITServer: Client sending compReq seqNo=59 to server for method java/lang/invoke/ThunkKey.load()V @ cold.
#JITServer: Client successfully loaded method java/lang/invoke/ThunkKey.load()V @ cold following compilation request. [metaData=00007FAE2B4A4578, startPC=00007FAE4A79DA18]
#JITServer: Client sending compReq seqNo=60 to server for method java/lang/invoke/ThunkTuple.load()V @ cold.
#JITServer: Client successfully loaded method java/lang/invoke/ThunkTuple.load()V @ cold following compilation request. [metaData=00007FAE2B4A4778, startPC=00007FAE4A79DA78]
#JITServer: Client sending compReq seqNo=61 to server for method java/lang/invoke/ILGenMacros.load()V @ cold.
#JITServer: Client successfully loaded method java/lang/invoke/ILGenMacros.load()V @ cold following compilation request. [metaData=00007FAE2B4A4978, startPC=00007FAE4A79DAD8]
#JITServer: Client sending compReq seqNo=62 to server for method java/lang/Runtime.getRuntime()Ljava/lang/Runtime; @ cold.
#JITServer: Client successfully loaded method java/lang/Runtime.getRuntime()Ljava/lang/Runtime; @ cold following compilation request. [metaData=00007FAE2B4A4B78, startPC=00007FAE4A79DB38]
#JITServer: Client sending compReq seqNo=63 to server for method java/lang/System.initEncodings()V @ cold.
#JITServer: Client successfully loaded method java/lang/System.initEncodings()V @ cold following compilation request. [metaData=00007FAE2B4A4D78, startPC=00007FAE4A79DBD8]
#JITServer: Client sending compReq seqNo=64 to server for method java/lang/System.getEncoding(I)Ljava/lang/String; @ cold.
#JITServer: Client successfully loaded method java/lang/System.getEncoding(I)Ljava/lang/String; @ cold following compilation request. [metaData=00007FAE2B4A5078, startPC=00007FAE4A79E1FC]
#JITServer: Client sending compReq seqNo=65 to server for method java/lang/invoke/MethodHandles$Lookup.<init>(Ljava/lang/Class;I)V @ cold.
#JITServer: Client successfully loaded method java/lang/invoke/MethodHandles$Lookup.<init>(Ljava/lang/Class;I)V @ cold following compilation request. [metaData=00007FAE2B4A51B8, startPC=00007FAE4A79E3A8]
#JITServer: Client sending compReq seqNo=66 to server for method java/lang/invoke/MethodHandles$Lookup.<init>(Ljava/lang/Class;IZ)V @ cold.
#JITServer: Client successfully loaded method java/lang/invoke/MethodHandles$Lookup.<init>(Ljava/lang/Class;IZ)V @ cold following compilation request. [metaData=00007FAE2B4A53B8, startPC=00007FAE4A79E4E8]
#JITServer: Client sending compReq seqNo=67 to server for method java/lang/Class.getName()Ljava/lang/String; @ cold.
#JITServer: Client successfully loaded method java/lang/Class.getName()Ljava/lang/String; @ cold following compilation request. [metaData=00007FAE2B4A56B8, startPC=00007FAE4A79E900]
#JITServer: Client sending compReq seqNo=68 to server for method java/lang/String.startsWith(Ljava/lang/String;I)Z @ cold.
#JITServer: Client successfully loaded method java/lang/String.startsWith(Ljava/lang/String;I)Z @ cold following compilation request. [metaData=00007FAE2B4A58F8, startPC=00007FAE4A79EBC8]
....
#JITServer: Client sending compReq seqNo=869 to server for method java/io/UnixFileSystem.delete(Ljava/io/File;)Z @ warm.
#JITServer: Client successfully loaded method java/io/UnixFileSystem.delete(Ljava/io/File;)Z @ warm following compilation request. [metaData=00007FAE2B5404F8, startPC=00007FAE4A8AC7C0]
#JITServer: Client sending compReq seqNo=870 to server for method java/io/ExpiringCache.clear()V @ warm.
#JITServer: Client successfully loaded method java/io/ExpiringCache.clear()V @ warm following compilation request. [metaData=00007FAE2B540778, startPC=00007FAE4A8AC900]
#JITServer: Client sending compReq seqNo=871 to server for method java/util/LinkedHashMap.clear()V @ warm.
#JITServer: Client successfully loaded method java/util/LinkedHashMap.clear()V @ warm following compilation request. [metaData=00007FAE2B5409B8, startPC=00007FAE4A8ACAC0]
#JITServer: Client sending compReq seqNo=872 to server for method java/util/HashMap.clear()V @ warm.
#JITServer: Client successfully loaded method java/util/HashMap.clear()V @ warm following compilation request. [metaData=00007FAE2B540BB8, startPC=00007FAE4A8ACB60]
#JITServer: SSL connection on socket 0x9, Version: TLSv1.3, Cipher: TLS_AES_256_GCM_SHA384
==== server ==== 
java -XX:StartAsJITServer -XX:JITServerSSLKey=key.pem -XX:JITServerSSLCert=cert.pem '-Xjit:verbose={JITServer}'

#JITServer: JITServer Server Mode. Port: 38400. Connection Timeout 2000ms
#JITServer: Built against (OpenSSL 1.0.2g  1 Mar 2016); Loaded with (OpenSSL 1.1.1b  26 Feb 2019)

#JITServer: Started JITServer listener thread: 00000000025FC400 
#JITServer: Successfully initialized SSL context (OpenSSL 1.1.1b  26 Feb 2019)

JITServer ready to accept incoming requests

#JITServer: SSL connection on socket 0xa, Version: TLSv1.3, Cipher: TLS_AES_256_GCM_SHA384

#JITServer: Server received request for stream 00007FD235875E80
#JITServer: Server allocated data for a new clientUID 10026114242247988624
#JITServer: compThreadID=0 created clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=0
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/lang/String$CaseInsensitiveComparator.<init>(Ljava/lang/String$1;)V
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=1
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/lang/Object.<init>()V
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=2
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled com/ibm/jit/JITHelpers.classIsInterfaceFlag()I
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=3
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/util/HashMap.<init>()V
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=4
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/util/HashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=5
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/lang/Object.hashCode()I
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=6
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/util/HashMap.putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=7
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/util/HashMap.resize()[Ljava/util/HashMap$Node;
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=8
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/util/HashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=9
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled sun/reflect/Reflection.registerMethodsToFilter(Ljava/lang/Class;[Ljava/lang/String;)V
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=10
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled sun/reflect/Reflection.registerFilter(Ljava/util/Map;Ljava/lang/Class;[Ljava/lang/String;)Ljava/util/Map;
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=11
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/util/HashMap.hash(Ljava/lang/Object;)I
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=12
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled java/util/HashMap.putMapEntries(Ljava/util/Map;Z)V
#JITServer: compThreadID=0 found clientSessionData=00007FD235876060 for clientUID=10026114242247988624 seqNo=13
#JITServer: Server will process a list of 0 unloaded classes for clientUID 10026114242247988624
#JITServer: compThreadID=0 has successfully compiled sun/misc/Unsafe.getUnsafe()Lsun/misc/Unsafe;
...
#JITServer: compThreadID=0 has successfully compiled java/util/HashMap.clear()V
#JITServer: Stream connection terminated by JITClient on stream 00007FD235875E80 while compThreadID=0 was reading the compilation request: Connection terminated at JITClient's request
#JITServer: compThreadID=0 did an early abort
#JITServer: SSL connection on socket 0xb, Version: TLSv1.3, Cipher: TLS_AES_256_GCM_SHA384

@mpirvu
Copy link
Contributor

mpirvu commented Dec 23, 2019

Jenkins test sanity xlinuxjit jdk8

@mpirvu
Copy link
Contributor

mpirvu commented Dec 23, 2019

Jenkins test sanity xlinuxjit jdk11

@mpirvu
Copy link
Contributor

mpirvu commented Dec 23, 2019

Jenkins test sanity plinuxjit jdk8,jdk11

@a7ehuo
Copy link
Contributor Author

a7ehuo commented Dec 24, 2019

PPC linux build and test failed. Looks like related to protobuf. Doesn’t seem related to this change since the failure exists before OpenSSL is fully enabled in JITServer: https://ci.eclipse.org/openj9/job/Build_JDK8_ppc64le_linux_jit_Personal/2/console

20:06:46  JVMJ9VM011W Unable to load j9jit29: /home/jenkins/workspace/Build_JDK8_ppc64le_linux_jit_Personal/build/linux-ppc64le-normal-server-release/images/j2re-image/lib/ppc64le/compressedrefs/libj9jit29.so: undefined symbol: _ZNK6google8protobuf7Message13SpaceUsedLongEv
20:06:47  openjdk version "1.8.0_242-internal"
20:06:47  OpenJDK Runtime Environment (build 1.8.0_242-internal-jenkins_2019_12_23_19_35-b00)

Java 8 test failed for both xlinux and ppc linux. Similar to #8153 (comment)

20:21:55  jasm_generator:
20:21:55      [mkdir] Created dir: /home/jenkins/workspace/Test_openjdk8_j9_sanity.functional_ppc64le_linux_jit_Personal/openjdk-tests/functional/Java8andUp/bin/j9vm/test/invoker
20:21:55       [exec] JVMJ9VM011W Unable to load j9jit29: /home/jenkins/workspace/Test_openjdk8_j9_sanity.functional_ppc64le_linux_jit_Personal/openjdkbinary/j2sdk-image/jre/lib/ppc64le/compressedrefs/libj9jit29.so: undefined symbol: _ZNK6google8protobuf7Message13SpaceUsedLongEv
20:21:55       [exec] Error: A JNI error has occurred, please check your installation and try again
20:21:55       [exec] Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=org/openjdk/asmtools/Main, offset=6
20:21:55       [exec] 	at java.lang.ClassLoader.defineClassImpl(Native Method)
20:21:55       [exec] 	at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:398)
20:21:55       [exec] 	at java.lang.ClassLoader.defineClass(ClassLoader.java:359)
20:21:55       [exec] 	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
20:21:55       [exec] 	at java.net.URLClassLoader.defineClass(URLClassLoader.java:682)
20:21:55       [exec] 	at java.net.URLClassLoader.access$400(URLClassLoader.java:89)
20:21:55       [exec] 	at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1086)
20:21:55       [exec] 	at java.security.AccessController.doPrivileged(AccessController.java:770)
20:21:55       [exec] 	at java.net.URLClassLoader.findClass(URLClassLoader.java:589)
20:21:55       [exec] 	at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:953)
20:21:55       [exec] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:898)
20:21:55       [exec] 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
20:21:55       [exec] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
20:21:55       [exec] 	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
20:21:55       [exec] Result: 1
20:21:55       [exec] JVMJ9VM011W Unable to load j9jit29: /home/jenkins/workspace/Test_openjdk8_j9_sanity.functional_ppc64le_linux_jit_Personal/openjdkbinary/j2sdk-image/jre/lib/ppc64le/compressedrefs/libj9jit29.so: undefined symbol: _ZNK6google8protobuf7Message13SpaceUsedLongEv
20:21:55       [exec] Error: A JNI error has occurred, please check your installation and try again
20:21:55       [exec] Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=org/openjdk/asmtools/Main, offset=6

@mpirvu
Copy link
Contributor

mpirvu commented Dec 24, 2019

Many Java11 tests fail with:

JVMJ9VM011W Unable to load j9jit29: /home/jenkins/workspace/Test_openjdk11_j9_sanity.functional_ppc64le_linux_jit_Personal/openjdkbinary/j2sdk-image/lib/compressedrefs/libj9jit29.so: undefined symbol: _ZNK6google8protobuf7Message13SpaceUsedLongEv

which demangled is

google::protobuf::Message::SpaceUsedLong() const

An internet search that sometimes people encounter undefined symbol when there are two conflicting protobuf libraries installed on the system.
@dchopra001 do you have any insight in this?

@mpirvu
Copy link
Contributor

mpirvu commented Dec 24, 2019

To recap:
On plinux there are some weird protobuf errors that are not caused by this PR.
On xlinux Java8 we have an infra issue that pops up in other PRs as well
Tests for xlinux Java11 have passed.

Based on the above I think this PR is good to be merged. It will solve a major problem in testing with JITServer.

@mpirvu mpirvu merged commit 1f642fe into eclipse-openj9:master Dec 24, 2019
JIT as a Service automation moved this from In progress to Done Dec 24, 2019
a7ehuo added a commit to a7ehuo/openj9-openjdk-jdk8 that referenced this pull request Dec 31, 2019
With the change in eclipse-openj9/openj9#8145, OpenSSL symbols are
dynamically loaded at the runtime. During the build time,
there is no longer a dependency on the installed OpenSSL
version on the build machines. Removed the code that
checks `SSL_CTX_set_ecdh_auto` during config.

Signed-off-by: a7ehuo <Annabelle.Huo@ibm.com>
a7ehuo added a commit to a7ehuo/openj9-openjdk-jdk13 that referenced this pull request Jan 6, 2020
With the change in eclipse-openj9/openj9#8145, `OpenSSL` symbols are
dynamically loaded at the runtime. During the build time,
there is no longer a dependency on the installed `OpenSSL`
version on the build machines. Removed the code that
checks `SSL_CTX_set_ecdh_auto` during config.

Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
a7ehuo added a commit to a7ehuo/openj9-openjdk-jdk13 that referenced this pull request Jan 6, 2020
With the change in eclipse-openj9/openj9#8145, `OpenSSL` symbols are
dynamically loaded at the runtime. During the build time,
there is no longer a dependency on the installed `OpenSSL`
version on the build machines. Removed the code that
checks `SSL_CTX_set_ecdh_auto` during config.

Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
a7ehuo added a commit to a7ehuo/openj9-openjdk-jdk that referenced this pull request Jan 6, 2020
With the change in eclipse-openj9/openj9#8145, `OpenSSL` symbols are
dynamically loaded at the runtime. During the build time,
there is no longer a dependency on the installed `OpenSSL`
version on the build machines. Removed the code that
checks `SSL_CTX_set_ecdh_auto` during config.

Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
a7ehuo added a commit to a7ehuo/openj9-openjdk-jdk11 that referenced this pull request Jan 6, 2020
With the change in eclipse-openj9/openj9#8145, `OpenSSL` symbols are
dynamically loaded at the runtime. During the build time,
there is no longer a dependency on the installed `OpenSSL`
version on the build machines. Removed the code that
checks `SSL_CTX_set_ecdh_auto` during config.

Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
a7ehuo added a commit to a7ehuo/openj9-openjdk-jdk14 that referenced this pull request Jan 6, 2020
With the change in eclipse-openj9/openj9#8145, `OpenSSL` symbols are
dynamically loaded at the runtime. During the build time,
there is no longer a dependency on the installed `OpenSSL`
version on the build machines. Removed the code that
checks `SSL_CTX_set_ecdh_auto` during config.

Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
@dchopra001
Copy link
Contributor

dchopra001 commented Jan 6, 2020

Many Java11 tests fail with:

JVMJ9VM011W Unable to load j9jit29: /home/jenkins/workspace/Test_openjdk11_j9_sanity.functional_ppc64le_linux_jit_Personal/openjdkbinary/j2sdk-image/lib/compressedrefs/libj9jit29.so: undefined symbol: _ZNK6google8protobuf7Message13SpaceUsedLongEv
which demangled is

google::protobuf::Message::SpaceUsedLong() const
An internet search that sometimes people encounter undefined symbol when there are two conflicting protobuf libraries installed on the system.
@dchopra001 do you have any insight in this?

This is the same failure I was seeing when doing the installations on our internal machines.

Here are the steps I used for the internal P machines:

source /usr/local/set_gcc7_env; 
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-cpp-3.7.1.tar.gz 
tar -xvzf protobuf-cpp-3.7.1.tar.gz; cd protobuf-3.7.1/; ./configure --disable-shared --with-pic && make uninstall && make clean && make -j4 && make -j4 check && make install && ldconfig;```

However, this issue looks identical to a problem I saw on s390 machines. Here are the s390 instructions for installing protobuf on the machines that saw this problem:

apt-get remove libprotobuf-dev

# Set gcc-7 as the default compiler
ln -sf /usr/bin/g++ /usr/bin/c++ 
ln -sf /usr/bin/g++-7 /usr/bin/g++ 
ln -sf /usr/bin/gcc /usr/bin/cc 
ln -sf /usr/bin/gcc-7 /usr/bin/gcc

# Uninstall protobufs using the same configuration that it was installed with, then do a make clean and rebuild protobufs using gcc-7
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-cpp-3.7.1.tar.gz 
tar -xvzf protobuf-cpp-3.7.1.tar.gz 
cd protobuf-3.7.1 \
./configure --disable-shared --with-pic && make uninstall && make clean && make && make check && make install && ldconfig 
rm -rf /protobuf-3.7.1 && rm -rf /protobuf-cpp-3.7.1.tar.gz

I think something similar can be done for Power as well.

@jdekonin Do you recall if this second process was used (particularly the apt-get remove libprotobuf-dev part) when doing the installations on the external machines?

@jdekonin
Copy link
Contributor

jdekonin commented Jan 6, 2020

@dchopra001 I don't recall but the history on the machines tells the story. I can see the remove step was not performed on all of the plinux machines, but only the 6 from UNB actually had that dev package installed.

I redid the protobuf install on all the plinux machines. Please retry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp:jitserver Artifacts related to JIT-as-a-Service project
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

4 participants