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

ava.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess #8916

Closed
jz499 opened this issue Mar 5, 2019 · 14 comments
Milestone

Comments

@jz499
Copy link

jz499 commented Mar 5, 2019

I am trying to start a Spark Session but during the initialization process I'm consistently getting errors for netty, version 4.0.56 also exhibited the same behavior.

Expected behavior

No Errors

Actual behavior

java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess at io.netty.util.internal.shaded.org.jctools.queues.LinkedArrayQueueUtil.modifiedCalcElementOffset(LinkedArrayQueueUtil.java:24) at io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueue.poll(BaseMpscLinkedArrayQueue.java:326)
at io.netty.util.concurrent.SingleThreadEventExecutor.pollTaskFrom(SingleThreadEventExecutor.java:208)
at io.netty.util.concurrent.SingleThreadEventExecutor.pollTask(SingleThreadEventExecutor.java:203)
at io.netty.channel.nio.NioEventLoop.pollTask(NioEventLoop.java:523)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:393)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:859)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
at java.lang.Thread.run(Thread.java:955)
19/03/04 21:38:37 WARN channel.AbstractChannel: Force-closing a channel whose registration task was not accepted by an event loop: [id: 0x4d268a31]
java.lang.ExceptionInInitializerError
at io.netty.util.internal.shaded.org.jctools.queues.LinkedArrayQueueUtil.modifiedCalcElementOffset(LinkedArrayQueueUtil.java:24)
at io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueue.offer(BaseMpscLinkedArrayQueue.java:308)
at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:329)
at io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:320)
at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:746)
at io.netty.channel.AbstractChannel$AbstractUnsafe.register(AbstractChannel.java:479)
at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:81)
at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:74)
at io.netty.channel.MultithreadEventLoopGroup.register(MultithreadEventLoopGroup.java:86)
at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:331)
at io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java:282)
at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:278)
at org.apache.spark.network.server.TransportServer.init(TransportServer.java:131)
at org.apache.spark.network.server.TransportServer.(TransportServer.java:73)
at org.apache.spark.network.TransportContext.createServer(TransportContext.java:114)
at org.apache.spark.rpc.netty.NettyRpcEnv.startServer(NettyRpcEnv.scala:115)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:466)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:464)
at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:2275)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:161)
at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:2310)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:469)
at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:57)
at org.apache.spark.SparkEnv$.create(SparkEnv.scala:249)
at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:175)
at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:256)
at org.apache.spark.SparkContext.(SparkContext.scala:423)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2493)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:934)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:925)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:925)
at cli.javo_net.myclass.mymethod(Program.cs:52)
at cli.javo_net.Program.Main(Program.cs:37)
Caused by: java.lang.IllegalStateException: Unknown pointer size
at io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess.(UnsafeRefArrayAccess.java:51)
... 29 more
19/03/04 21:38:37 ERROR DefaultPromise.rejectedExecution: Failed to submit a listener notification task. Event loop shut down?
java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess
at io.netty.util.internal.shaded.org.jctools.queues.LinkedArrayQueueUtil.modifiedCalcElementOffset(LinkedArrayQueueUtil.java:24)
at io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueue.offer(BaseMpscLinkedArrayQueue.java:308)
at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:329)
at io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:320)
at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:746)
at io.netty.util.concurrent.DefaultPromise.safeExecute(DefaultPromise.java:760)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:434)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:82)
at io.netty.channel.AbstractChannel$CloseFuture.setClosed(AbstractChannel.java:1148)
at io.netty.channel.AbstractChannel$AbstractUnsafe.register(AbstractChannel.java:491)
at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:81)
at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:74)
at io.netty.channel.MultithreadEventLoopGroup.register(MultithreadEventLoopGroup.java:86)
at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:331)
at io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java:282)
at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:278)
at org.apache.spark.network.server.TransportServer.init(TransportServer.java:131)
at org.apache.spark.network.server.TransportServer.(TransportServer.java:73)
at org.apache.spark.network.TransportContext.createServer(TransportContext.java:114)
at org.apache.spark.rpc.netty.NettyRpcEnv.startServer(NettyRpcEnv.scala:115)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:466)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:464)
at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:2275)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:161)
at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:2310)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:469)
at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:57)
at org.apache.spark.SparkEnv$.create(SparkEnv.scala:249)
at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:175)
at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:256)
at org.apache.spark.SparkContext.(SparkContext.scala:423)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2493)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:934)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:925)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:925)
at cli.javo_net.myclass.mymethod(Program.cs:52)
at cli.javo_net.Program.Main(Program.cs:37)
19/03/04 21:38:37 ERROR DefaultPromise.rejectedExecution: Failed to submit a listener notification task. Event loop shut down?
java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess
at io.netty.util.internal.shaded.org.jctools.queues.LinkedArrayQueueUtil.modifiedCalcElementOffset(LinkedArrayQueueUtil.java:24)
at io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueue.offer(BaseMpscLinkedArrayQueue.java:308)
at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:329)
at io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:320)
at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:746)
at io.netty.util.concurrent.DefaultPromise.safeExecute(DefaultPromise.java:760)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:434)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:123)
at io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetFailure(AbstractChannel.java:987)
at io.netty.channel.AbstractChannel$AbstractUnsafe.register(AbstractChannel.java:494)
at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:81)
at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:74)
at io.netty.channel.MultithreadEventLoopGroup.register(MultithreadEventLoopGroup.java:86)
at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:331)
at io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java:282)
at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:278)
at org.apache.spark.network.server.TransportServer.init(TransportServer.java:131)
at org.apache.spark.network.server.TransportServer.(TransportServer.java:73)
at org.apache.spark.network.TransportContext.createServer(TransportContext.java:114)
at org.apache.spark.rpc.netty.NettyRpcEnv.startServer(NettyRpcEnv.scala:115)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:466)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:464)
at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:2275)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:161)
at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:2310)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:469)
at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:57)
at org.apache.spark.SparkEnv$.create(SparkEnv.scala:249)
at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:175)
at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:256)
at org.apache.spark.SparkContext.(SparkContext.scala:423)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2493)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:934)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:925)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:925)
at cli.javo_net.myclass.mymethod(Program.cs:52)
at cli.javo_net.Program.Main(Program.cs:37)

Steps to reproduce

Minimal yet complete reproducer code (or URL to code)

Netty version

netty-all-4.1.17.Final.jar

JVM version (e.g. java -version)

java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

OS version (e.g. uname -a)

Windows10

@normanmaurer
Copy link
Member

Please upgrade to the latest 4.1.x version and report back if this still happens.

@jz499
Copy link
Author

jz499 commented Mar 5, 2019

I have upgraded to the latest build "netty-all-4.1.34.Final-20190305.083539-41", and I still get the same errors.

@normanmaurer
Copy link
Member

this is strange... Seems like it is caused by jctools.

@nitsanw any idea:

Caused by: java.lang.IllegalStateException: Unknown pointer size
at io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess.(UnsafeRefArrayAccess.java:51)

@nitsanw
Copy link
Contributor

nitsanw commented Mar 6, 2019

@jz499 This is very strange... Java refs are either 4b (compressed oops) or 8b, there's no other option AFAIK. Can you check if jctools can build cleanly on that machine?

@jz499
Copy link
Author

jz499 commented Mar 6, 2019

I have tried several version of JCTools and netty but the problem still persists, I did find another reference online for this issue. https://sourceforge.net/p/ikvm/mailman/message/35520859/
Please review the link it seems to be a valid root cause analysis.

@nitsanw
Copy link
Contributor

nitsanw commented Mar 6, 2019

The link is suggesting missing intrinsics, but these are established on 8u192 AFAIK. Can you build JCTools on the machine in question?

@jz499
Copy link
Author

jz499 commented Mar 6, 2019

Yes, I'm able to buid JCTools with 1 minor error.

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for JCTools Parent 2.2-SNAPSHOT:
[INFO]
[INFO] JCTools Parent ..................................... SUCCESS [ 11.163 s]
[INFO] JCTools Build Tools ................................ SUCCESS [ 8.035 s]
[INFO] Java Concurrency Tools Core Library ................ SUCCESS [04:45 min]
[INFO] Channel implementations ............................ FAILURE [ 3.298 s]
[INFO] Experimental implementations ....................... SKIPPED
[INFO] Benchmarks ......................................... SKIPPED
[INFO] concurrency-test ................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:20 min
[INFO] Finished at: 2019-03-06T14:22:12-05:00

@normanmaurer
Copy link
Member

@nitsanw ^^ any idea ?

@nitsanw
Copy link
Contributor

nitsanw commented Mar 15, 2019

Sorry, I'm baffled as to why @jz499 would be able to run the build on the same machine and not hit this issue. The master JCTools now reports the ref size:
https://github.com/JCTools/JCTools/blob/81f135fa32ea53f1511114bb6dfdc87d1730b8a1/jctools-core/src/main/java/org/jctools/util/UnsafeRefArrayAccess.java#L51

Perhaps try with that version.

@jz499
Copy link
Author

jz499 commented Mar 15, 2019

Is there a netty build with this new/modified jctool?

@jz499
Copy link
Author

jz499 commented Mar 16, 2019

It seems to be a problem with IKVM rather than netty (see link below)

https://stackoverflow.com/questions/50518771/netty-exceptionininitializererror

@normanmaurer
Copy link
Member

@jz499 btw as workaround you may want to use -Dio.netty.noUnsafe=true and see if this works for you

@normanmaurer
Copy link
Member

Should be fixed by #9042 for now

@normanmaurer normanmaurer added this to the 4.1.35.Final milestone Apr 12, 2019
normanmaurer added a commit that referenced this issue Apr 12, 2019
Motivation:

IKVM.NET seems to ship a bug sun.misc.Unsafe class, for this reason we should better disable our sun.misc.Unsafe usage when we detect IKVM.NET is used.

Modifications:

Check if IKVM.NET is used and if so do not use sun.misc.Unsafe by default.

Result:

Fixes #9035 and #8916.
normanmaurer added a commit that referenced this issue Apr 12, 2019
Motivation:

IKVM.NET seems to ship a bug sun.misc.Unsafe class, for this reason we should better disable our sun.misc.Unsafe usage when we detect IKVM.NET is used.

Modifications:

Check if IKVM.NET is used and if so do not use sun.misc.Unsafe by default.

Result:

Fixes #9035 and #8916.
normanmaurer added a commit that referenced this issue Apr 15, 2019
Motivation:

IKVM.NET seems to ship a bug sun.misc.Unsafe class, for this reason we should better disable our sun.misc.Unsafe usage when we detect IKVM.NET is used.

Modifications:

Check if IKVM.NET is used and if so do not use sun.misc.Unsafe by default.

Result:

Fixes #9035 and #8916.
@jz499
Copy link
Author

jz499 commented Apr 29, 2019

Versions 4.1.35.Final and 4.1.36.Final resolved the netty errors I had back in March. I'm now able to build my project successfully. Thank You.

alfred-yeung added a commit to riptano/netty that referenced this issue May 28, 2022
Motivation:
IKVM.NET seems to ship a bug sun.misc.Unsafe class, for this reason we should
better disable our sun.misc.Unsafe usage when we detect IKVM.NET is used.

Modifications:
Check if IKVM.NET is used and if so do not use sun.misc.Unsafe by default.

Result:
Fixes (netty#9035) and (netty#8916).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants