I'm not aware of any runtime modification of the compiled sources, and I've
never encountered anything that looked like it when attaching with a
debugger, but please post your question to the dev list to be sure.

BTW, I've experienced a similar "impossible" exception under Oracle Hotspot
8u21 that was caused by a JIT bug, so those things do occasionally happen.
Have you tried swapping out your JRE to see if that eliminates the problem?
I'd switch to a non-IBM JRE just to have the best odds of not hitting the
same bug in the new JRE.

Tim

On Aug 1, 2017 4:44 AM, "vdmitriev" <allat...@gmail.com> wrote:

> Hello!
>
> We are running AMQ 5.11.1 on AIX 7.1 with IBM J9 7.0 [1] and have
> intermittent problem with messages delivery. Everything works fine,
> consumers are connected to AMQ, but suddenly server stops delivering
> messages and starts to log this stacktrace.
>
> 2017-08-01 01:53:12,913 | ERROR |
> org.apache.activemq.broker.region.cursors.QueueStorePrefetch@442b1805:
> xxx,batchResetNeeded=false,size=3,cacheEnabled=false,
> maxBatchSize:3,hasSpace:true,pendingCachedIds.size:0,
> lastSyncCachedId:null,lastSyncCachedId-seq:null,lastAsyncCachedId:null,
> lastAsyncCachedId-seq:null,store=permits:10000,sd=nextSeq:84,lastRet:
> MessageOrderCursor:[def:81,
> low:0, high:0],pending:0 - Failed to fill batch |
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor | ActiveMQ
> Broker[xxx] Scheduler
> java.lang.NullPointerException
>         at
> org.apache.activemq.store.kahadb.data.KahaAddMessageCommandBase.
> getMessage(KahaAddMessageCommand.java:397)[activemq-kahadb-store-5.
> 11.1.jar:5.11.1]
>         at
> org.apache.activemq.store.kahadb.data.KahaAddMessageCommand.getMessage(
> KahaAddMessageCommand.java:7)[activemq-kahadb-store-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.store.kahadb.KahaDBStore.loadMessage(KahaDBStore.java:
> 1131)[activemq-kahadb-store-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore$5.execute(
> KahaDBStore.java:595)[activemq-kahadb-store-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.store.kahadb.disk.page.Transaction.
> execute(Transaction.java:779)[activemq-kahadb-store-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore.
> recoverNextMessages(KahaDBStore.java:584)[activemq-kahadb-store-5.11.1.
> jar:5.11.1]
>         at
> org.apache.activemq.store.ProxyMessageStore.recoverNextMessages(
> ProxyMessageStore.java:106)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(
> QueueStorePrefetch.java:109)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(
> AbstractStoreCursor.java:381)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(
> AbstractStoreCursor.java:142)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(
> StoreQueueCursor.java:159)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.Queue.doPageInForDispatch(Queue.
> java:1897)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.Queue.pageInMessages(
> Queue.java:2119)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.Queue.doBrowse(Queue.
> java:1116)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.Queue.expireMessages(
> Queue.java:909)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.Queue.access$100(Queue.
> java:100)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.broker.region.Queue$2.run(Queue.java:
> 144)[activemq-broker-5.11.1.jar:5.11.1]
>         at
> org.apache.activemq.thread.SchedulerTimerTask.run(
> SchedulerTimerTask.java:33)[activemq-client-5.11.1.jar:5.11.1]
>         at java.util.TimerThread.mainLoop(Timer.java:566)[:1.7.0]
>         at java.util.TimerThread.run(Timer.java:516)[:1.7.0]
>
> I checked the sources (and decompiled binaries from the server just to be
> sure) and see no valid reason for JVM to throw NPE at
> KahaAddMessageCommand.java:397: "this" mustn't be null and unboxing is not
> happening there. I suspect that JIT optimizations are messing the code, but
> before following this bumpy trail, I wanted to check with AMQ community.
> Maybe I'm missing something and JVM is behaving correctly? Maybe AMQ is
> modifying itself somehow at runtime and KahaAddMessageCommand.java:397
> starts to point to different sections of code?
>
> [1]
> java version "1.7.0"
> Java(TM) SE Runtime Environment (build pap6470sr6fp1-20140108_01(SR6 FP1))
> IBM J9 VM (build 2.6, JRE 1.7.0 AIX ppc64-64 Compressed References
> 20140106_181350 (JIT enabled, AOT enabled)
> J9VM - R26_Java726_SR6_20140106_1601_B181350
> JIT  - r11.b05_20131003_47443.02
> GC   - R26_Java726_SR6_20140106_1601_B181350_CMPRSS
> J9CL - 20140106_181350)
> JCL - 20140103_01 based on Oracle 7u51-b11
>
>
> ~Regards
> Vadim
>
>
>
> --
> View this message in context: http://activemq.2283324.n4.
> nabble.com/AMQ-5-11-1-NPE-in-KahaAddMessageCommand-
> getMessage-JIT-suspected-tp4729109.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>

Reply via email to