Bitcoinj fails with NegativeArraySizeException when iteration over the blocks

Bitcoinj fails with NegativeArraySizeException when iteration over the blocks

I'm iterating over the blocks of some block files generated by bitcoin-core. The following code works without any problem for the first 900 block files.

Context.getOrCreate(MainNetParams.get());
BlockFileLoader blockFileLoader = new BlockFileLoader(
    MainNetParams.get(), 
    Arrays.asList(blockFile.toFile())
);

while(blockFileLoader.hasNext()){
    System.out.println(blockFileLoader.next().getHash());
}

But then it fails at a specific block file with this Exception:

Exception in thread "main" java.lang.NegativeArraySizeException
    at org.bitcoinj.core.Message.readBytes(Message.java:334)
    at org.bitcoinj.core.TransactionOutput.parse(TransactionOutput.java:163)
    at org.bitcoinj.core.Message.<init>(Message.java:96)
    at org.bitcoinj.core.Message.<init>(Message.java:128)
    at org.bitcoinj.core.ChildMessage.<init>(ChildMessage.java:57)
    at org.bitcoinj.core.TransactionOutput.<init>(TransactionOutput.java:79)
    at org.bitcoinj.core.Transaction.parse(Transaction.java:575)
    at org.bitcoinj.core.Message.<init>(Message.java:96)
    at org.bitcoinj.core.Message.<init>(Message.java:128)
    at org.bitcoinj.core.ChildMessage.<init>(ChildMessage.java:57)
    at org.bitcoinj.core.Transaction.<init>(Transaction.java:232)
    at org.bitcoinj.core.Block.parseTransactions(Block.java:242)
    at org.bitcoinj.core.Block.parse(Block.java:266)
    at org.bitcoinj.core.Message.<init>(Message.java:96)
    at org.bitcoinj.core.Message.<init>(Message.java:128)
    at org.bitcoinj.core.Block.<init>(Block.java:162)
    at org.bitcoinj.core.BitcoinSerializer.makeBlock(BitcoinSerializer.java:270)
    at org.bitcoinj.core.MessageSerializer.makeBlock(MessageSerializer.java:72)
    at org.bitcoinj.utils.BlockFileLoader.loadNextBlock(BlockFileLoader.java:154)
    at org.bitcoinj.utils.BlockFileLoader.hasNext(BlockFileLoader.java:87)
    at java.util.Iterator.forEachRemaining(Iterator.java:115)
    at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.xxxxx.xxxxx.xxxxx.Importer.runImport(Importer.java:45)
    at com.xxxxx.xxxxx.Main.main(Main.java:12)

Why is this happening? Could it be, that bitcoinj is not 100% comaptible with the block files, generated by bitcoin-core?

http://ift.tt/2kjSG69

Comments

Popular posts from this blog

Antminer D3 Blissz Modified Firmware For Improved Performance

ETH To The Moon / Bank of England Cryptocurrency? / BTC Dominance / More (The Crypt0 Minute)