Gatling is failing to work in oraclelinux-7 amd64 container due to possible netty issues

Hi community,
I am trying to run gatling in a oracleLinux-7 amd64 docker container. However, my startup script that used to work before is now crashing unexpectedly without any error after upgrading to netty 4.1.100.Final
22:09:15.984 [INFO ] i.g.c.c.GatlingConfiguration$ - Gatling will try to load 'gatling.conf' config file as ClassLoader resource. 22:09:17.063 [DEBUG] i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework 22:09:17.161 [DEBUG] i.n.u.i.PlatformDependent0 - -Dio.netty.noUnsafe: false 22:09:17.163 [DEBUG] i.n.u.i.PlatformDependent0 - Java version: 17 22:09:17.177 [DEBUG] i.n.u.i.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available 22:09:17.182 [DEBUG] i.n.u.i.PlatformDependent0 - sun.misc.Unsafe.copyMemory: available 22:09:17.185 [DEBUG] i.n.u.i.PlatformDependent0 - sun.misc.Unsafe.storeFence: available 22:09:17.187 [DEBUG] i.n.u.i.PlatformDependent0 - java.nio.Buffer.address: available 22:09:17.191 [DEBUG] i.n.u.i.PlatformDependent0 - direct buffer constructor: unavailable: Reflective setAccessible(true) disabled 22:09:17.194 [DEBUG] i.n.u.i.PlatformDependent0 - java.nio.Bits.unaligned: available, true 22:09:17.199 [DEBUG] i.n.u.i.PlatformDependent0 - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable: class io.netty.util.internal.PlatformDependent0$7 cannot access class jdk.internal.misc.Unsafe (in module java.base) because module java.base does not export jdk.internal.misc to unnamed module @6e1ec318 22:09:17.204 [DEBUG] i.n.u.i.PlatformDependent0 - java.nio.DirectByteBuffer.<init>(long, {int,long}): unavailable 22:09:17.205 [DEBUG] i.n.u.i.PlatformDependent - sun.misc.Unsafe: available 22:09:17.207 [DEBUG] i.n.u.i.PlatformDependent - -Dio.netty.tmpdir: /tmp (java.io.tmpdir) 22:09:17.208 [DEBUG] i.n.u.i.PlatformDependent - -Dio.netty.bitMode: 64 (sun.arch.data.model) 22:09:17.212 [DEBUG] i.n.u.i.PlatformDependent - -Dio.netty.maxDirectMemory: -1 bytes 22:09:17.213 [DEBUG] i.n.u.i.PlatformDependent - -Dio.netty.uninitializedArrayAllocationThreshold: -1 22:09:17.218 [DEBUG] i.n.u.i.CleanerJava9 - java.nio.ByteBuffer.cleaner(): available 22:09:17.219 [DEBUG] i.n.u.i.PlatformDependent - -Dio.netty.noPreferDirect: false 22:09:17.246 [DEBUG] i.n.u.i.NativeLibraryLoader - -Dio.netty.native.workdir: /tmp (io.netty.tmpdir) 22:09:17.249 [DEBUG] i.n.u.i.NativeLibraryLoader - -Dio.netty.native.deleteLibAfterLoading: true 22:09:17.249 [DEBUG] i.n.u.i.NativeLibraryLoader - -Dio.netty.native.tryPatchShadedId: true 22:09:17.250 [DEBUG] i.n.u.i.NativeLibraryLoader - -Dio.netty.native.detectNativeLibraryDuplicates: true 22:09:17.524 [DEBUG] i.n.u.i.NativeLibraryLoader - Successfully loaded the library /tmp/libnetty_tcnative_linux_x86_6410971370819977540382.so 22:09:17.526 [DEBUG] i.n.u.i.NativeLibraryLoader - Loaded library with name 'netty_tcnative_linux_x86_64' 22:09:17.526 [DEBUG] i.n.h.s.OpenSsl - Initialize netty-tcnative using engine: 'default' 22:09:17.530 [DEBUG] i.n.h.s.OpenSsl - netty-tcnative using native library: BoringSSL 22:09:18.535 [DEBUG] i.n.u.ResourceLeakDetector - -Dio.netty.leakDetection.level: simple 22:09:18.537 [DEBUG] i.n.u.ResourceLeakDetector - -Dio.netty.leakDetection.targetRecords: 4 22:09:18.573 [DEBUG] i.n.b.AbstractByteBuf - -Dio.netty.buffer.checkAccessible: true 22:09:18.573 [DEBUG] i.n.b.AbstractByteBuf - -Dio.netty.buffer.checkBounds: true 22:09:18.577 [DEBUG] i.n.u.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@15c25153 22:09:18.759 [DEBUG] i.n.u.i.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 22:09:18.759 [DEBUG] i.n.u.i.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 22:09:18.770 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.numHeapArenas: 4 22:09:18.771 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.numDirectArenas: 4 22:09:18.771 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.pageSize: 8192 22:09:18.771 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.maxOrder: 9 22:09:18.771 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.chunkSize: 4194304 22:09:18.771 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.smallCacheSize: 256 22:09:18.771 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.normalCacheSize: 64 22:09:18.771 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 22:09:18.771 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimInterval: 8192 22:09:18.772 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 22:09:18.772 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.useCacheForAllThreads: false 22:09:18.772 [DEBUG] i.n.b.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 22:09:18.806 [DEBUG] i.n.b.ByteBufUtil - -Dio.netty.allocator.type: pooled 22:09:18.807 [DEBUG] i.n.b.ByteBufUtil - -Dio.netty.threadLocalDirectBufferSize: 0 22:09:18.808 [DEBUG] i.n.b.ByteBufUtil - -Dio.netty.maxThreadLocalCharBufferSize: 16384 22:09:18.832 [DEBUG] i.n.u.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@7e985ce9 22:09:18.879 [DEBUG] i.n.u.Recycler - -Dio.netty.recycler.maxCapacityPerThread: 4096 22:09:18.880 [DEBUG] i.n.u.Recycler - -Dio.netty.recycler.ratio: 8 22:09:18.880 [DEBUG] i.n.u.Recycler - -Dio.netty.recycler.chunkSize: 32 22:09:18.880 [DEBUG] i.n.u.Recycler - -Dio.netty.recycler.blocking: false 22:09:18.881 [DEBUG] i.n.u.Recycler - -Dio.netty.recycler.batchFastThreadLocalOnly: true 22:09:18.909 [DEBUG] i.n.u.i.PlatformDependent - org.jctools-core.MpscChunkedArrayQueue: available . . . 22:09:19.006 [DEBUG] i.n.h.s.OpenSsl - Supported protocols (OpenSSL): [SSLv2Hello, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3] 22:09:19.007 [DEBUG] i.n.h.s.OpenSsl - Default cipher suites (OpenSSL): [TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256] 22:09:33.581 [INFO ] a.e.s.Slf4jLogger - Slf4jLogger started 22:09:44.528 [DEBUG] i.n.u.i.NativeLibraryLoader - Successfully loaded the library /tmp/libnetty_transport_native_epoll_x86_647376690098484293726.so 22:09:46.177 [DEBUG] i.n.u.NetUtil - -Djava.net.preferIPv4Stack: false 22:09:46.180 [DEBUG] i.n.u.NetUtil - -Djava.net.preferIPv6Addresses: false 22:09:46.476 [DEBUG] i.n.u.NetUtilInitializations - Loopback interface: lo (lo, 127.0.0.1) 22:09:46.500 [DEBUG] i.n.u.NetUtil - /proc/sys/net/core/somaxconn: 4096 22:09:47.435 [DEBUG] i.n.c.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 4 22:09:47.477 [DEBUG] i.n.u.c.GlobalEventExecutor - -Dio.netty.globalEventExecutor.quietPeriodSeconds: 1

And then the program ends. When I run the arm image however the code does not fail here. It loads the library and starts load generation…

17:07:35.818 [DEBUG] i.n.u.NetUtil - /proc/sys/net/core/somaxconn: 4096 17:07:35.820 [DEBUG] i.n.c.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 4 17:07:35.826 [DEBUG] i.n.u.i.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 17:07:35.826 [DEBUG] i.n.u.i.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 17:07:35.830 [DEBUG] i.n.u.i.PlatformDependent - org.jctools-core.MpscChunkedArrayQueue: available 17:07:37.609 [INFO ] g.s.u.OperationHelper - Generating load for component: nodePool 17:07:37.675 [DEBUG] i.n.u.i.NativeLibraryLoader - Successfully loaded the library /tmp/libnetty_tcnative_linux_aarch_646945693412518492105.so 17:07:37.676 [DEBUG] i.n.u.i.NativeLibraryLoader - Loaded library with name 'netty_tcnative_linux_aarch_64' 17:07:37.676 [DEBUG] i.n.h.s.OpenSsl - Initialize netty-tcnative using engine: 'default' 17:07:37.676 [DEBUG] i.n.h.s.OpenSsl - netty-tcnative using native library: BoringSSL

I am trying to run this container on my local M1 macbook. I’ve been stuck on this problem for a few days now and would appreciate any pointers… thanks for the help!

Hi,

There’s nothing we can do without some logs of the actual crash.

If you’re experiencing a failure in a native library, you definitely have a JVM crash log.
In this case, the faulty library can happen in:

  • netty’s tcnative
  • netty’s native epoll
  • brotli4j

Once you get some logs, it might be worth reporting directly to the faulty project.
If your issue is specific to docker + some specific Linux build from Oracle + AMD, I’m afraid we won’t be able to investigate ourselves unless you’re a customer.

Regards

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.