Author

Topic: Multibit classic, error in protobuf (Read 1167 times)

legendary
Activity: 1379
Merit: 1003
nec sine labore
December 29, 2015, 04:15:23 PM
#5
Hi Jim,

you know it already for sure, anyway I think my problem comes from here:

https://github.com/miracle2k/protobuf/blob/master/java/src/main/java/com/google/protobuf/CodedInputStream.java

see comment to method setSizeLimit(), it is just a hardcoded limit.

Regards.

spiccioli
 

Hmm, if you were only using 0.5.18 then it probably wouldn't be a format thing.

It is a pretty big wallet you have there and the error message seems to be related to the wallet size:
com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large.  May be malicious.  Use CodedInputStream.setSizeLimit() to increase the size limit.
   
Classic isn't being actively developed now though I will raise this as a bug.
We don't produce releases of Classic very often now so it's not going to get fixed quickly.

I would recommend moving your wallet to blockchain.info using:
https://multibit.org/en/help/v0.5/help_movingAWallet.html

If you use an older backup of your wallet you should be able to open it and export your private keys.

edit: https://github.com/bitcoin-solutions/multibit/issues/744
legendary
Activity: 1708
Merit: 1066
December 26, 2015, 06:40:11 AM
#4
Hmm, if you were only using 0.5.18 then it probably wouldn't be a format thing.

It is a pretty big wallet you have there and the error message seems to be related to the wallet size:
com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large.  May be malicious.  Use CodedInputStream.setSizeLimit() to increase the size limit.
   
Classic isn't being actively developed now though I will raise this as a bug.
We don't produce releases of Classic very often now so it's not going to get fixed quickly.

I would recommend moving your wallet to blockchain.info using:
https://multibit.org/en/help/v0.5/help_movingAWallet.html

If you use an older backup of your wallet you should be able to open it and export your private keys.

edit: https://github.com/bitcoin-solutions/multibit/issues/744
legendary
Activity: 1379
Merit: 1003
nec sine labore
December 26, 2015, 05:11:28 AM
#3
Hi Jim,

Thanks for your answer, I'm on 0.5.19 and I've been using it since it came out.

Before it I was using 0.5.18 and that wallet has been in use since a couple of years ago with daily movements.

So why is it still using the old format?

Isn't it enough to open it with 0.5.19 to have it converted to the new format?

Does its size, 68 megabytes, pose any problem in handling it?

Thanks


spiccioli






The very early versions of MultiBit (up to 2012 I think) used a different format for the wallet (Java serialisation rather than protobuf).
Only the protobuf version is supported now.
For a while the old versions were read in and converted to protobuf when written out so that users that updated via each version would not have noticed.


The old versions are still available on the multibit.org website if you have deleted the older version you can reinstall it.

Probably the best thing to do is:
+ using the old version of MultiBit Classic, empty the wallet to somewhere else.
+ install the latest version of Classic (or try out MultiBit HD) and create a new wallet.

Very old versions of MultiBit Classic don't even connect to the Bitcoin network any more (as things have changed over the years). In this case then:
+ Export your private keys.
+ Use the most recent versio of Classic and import them. Or import them to blockchain.info using the help article on how to do this.


legendary
Activity: 1708
Merit: 1066
December 25, 2015, 06:20:40 AM
#2
The very early versions of MultiBit (up to 2012 I think) used a different format for the wallet (Java serialisation rather than protobuf).
Only the protobuf version is supported now.
For a while the old versions were read in and converted to protobuf when written out so that users that updated via each version would not have noticed.


The old versions are still available on the multibit.org website if you have deleted the older version you can reinstall it.

Probably the best thing to do is:
+ using the old version of MultiBit Classic, empty the wallet to somewhere else.
+ install the latest version of Classic (or try out MultiBit HD) and create a new wallet.

Very old versions of MultiBit Classic don't even connect to the Bitcoin network any more (as things have changed over the years). In this case then:
+ Export your private keys.
+ Use the most recent versio of Classic and import them. Or import them to blockchain.info using the help article on how to do this.

legendary
Activity: 1379
Merit: 1003
nec sine labore
December 25, 2015, 05:09:59 AM
#1
Season's Greetings to all,

today I had to send some coins with multibit classic, latest version, sadly when starting it throws out this error message:

Code:
com.google.bitcoin.store.UnreadableWalletException: Could not parse input stream to protobuf
at org.multibit.store.MultiBitWalletProtobufSerializer.readWallet(MultiBitWalletProtobufSerializer.java:395)
at com.google.bitcoin.core.Wallet.loadFromFileStream(Wallet.java:572)
at org.multibit.file.FileHandler.loadFromFile(FileHandler.java:115)
at org.multibit.network.MultiBitService.addWalletFromFilename(MultiBitService.java:410)
at org.multibit.controller.bitcoin.BitcoinController.addWalletFromFilename(BitcoinController.java:137)
at org.multibit.MultiBit.main(MultiBit.java:433)
at org.multibit.MultiBitInExecutableJar.main(MultiBitInExecutableJar.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.install4j.runtime.launcher.MacLauncher.main(Unknown Source)
Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large.  May be malicious.  Use CodedInputStream.setSizeLimit() to increase the size limit.
at com.google.protobuf.InvalidProtocolBufferException.sizeLimitExceeded(InvalidProtocolBufferException.java:110)
at com.google.protobuf.CodedInputStream.refillBuffer(CodedInputStream.java:755)
at com.google.protobuf.CodedInputStream.isAtEnd(CodedInputStream.java:701)
at com.google.protobuf.CodedInputStream.readTag(CodedInputStream.java:99)
at org.bitcoinj.wallet.Protos$TransactionOutput.(Protos.java:3992)
at org.bitcoinj.wallet.Protos$TransactionOutput.(Protos.java:3956)
at org.bitcoinj.wallet.Protos$TransactionOutput$1.parsePartialFrom(Protos.java:4054)
at org.bitcoinj.wallet.Protos$TransactionOutput$1.parsePartialFrom(Protos.java:4049)
at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:309)
at org.bitcoinj.wallet.Protos$Transaction.(Protos.java:6622)
at org.bitcoinj.wallet.Protos$Transaction.(Protos.java:6530)
at org.bitcoinj.wallet.Protos$Transaction$1.parsePartialFrom(Protos.java:6720)
at org.bitcoinj.wallet.Protos$Transaction$1.parsePartialFrom(Protos.java:6715)
at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:309)
at org.bitcoinj.wallet.Protos$Wallet.(Protos.java:10884)
at org.bitcoinj.wallet.Protos$Wallet.(Protos.java:10813)
at org.bitcoinj.wallet.Protos$Wallet$1.parsePartialFrom(Protos.java:10994)
at org.bitcoinj.wallet.Protos$Wallet$1.parsePartialFrom(Protos.java:10989)
at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:200)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:217)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:223)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49)
at org.bitcoinj.wallet.Protos$Wallet.parseFrom(Protos.java:11717)
at org.multibit.store.MultiBitWalletProtobufSerializer.parseToProto(MultiBitWalletProtobufSerializer.java:568)
at org.multibit.store.MultiBitWalletProtobufSerializer.readWallet(MultiBitWalletProtobufSerializer.java:362)
... 12 more
10:40:19.275 [main] ERROR org.multibit.file.FileHandler - com.google.bitcoin.store.UnreadableWalletException Could not parse input stream to protobuf

It had no problems a few days ago to update the same wallet and send some, wallet size is 68711158 before starting MB.

What can I do now?

Even the rolling backup gives the same error and it selects an old backup from beginning of this year which, apart from requiring a few days to completely sync, makes me really nervous, what if I can't load this wallet anymore?

Regards.

spiccioli

ps. running on

Code:
10:40:16.515 [main] INFO  org.multibit.MultiBit - Starting MultiBit at 25 Dec 2015 09:40:16 GMT 
10:40:16.517 [main] DEBUG org.multibit.MultiBit - java.runtime.name = Java(TM) SE Runtime Environment
10:40:16.517 [main] DEBUG org.multibit.MultiBit - exe4j.moduleName = /Applications/MultiBit Classic.app
10:40:16.517 [main] DEBUG org.multibit.MultiBit - sun.boot.library.path = /Applications/MultiBit Classic.app/Contents/PlugIns/jre.bundle/Contents/Home/jre/lib
10:40:16.517 [main] DEBUG org.multibit.MultiBit - java.vm.version = 24.80-b11
10:40:16.517 [main] DEBUG org.multibit.MultiBit - i4j.jreBundle = /Applications/MultiBit Classic.app/Contents/PlugIns/jre.bundle
10:40:16.517 [main] DEBUG org.multibit.MultiBit - gopherProxySet = false
10:40:16.517 [main] DEBUG org.multibit.MultiBit - java.vm.vendor = Oracle Corporation
10:40:16.517 [main] DEBUG org.multibit.MultiBit - java.vendor.url = http://java.oracle.com/
10:40:16.517 [main] DEBUG org.multibit.MultiBit - path.separator = :
10:40:16.518 [main] DEBUG org.multibit.MultiBit - java.vm.name = Java HotSpot(TM) 64-Bit Server VM
10:40:16.518 [main] DEBUG org.multibit.MultiBit - file.encoding.pkg = sun.io
10:40:16.518 [main] DEBUG org.multibit.MultiBit - user.country = IT
10:40:16.518 [main] DEBUG org.multibit.MultiBit - sun.java.launcher = SUN_STANDARD
10:40:16.518 [main] DEBUG org.multibit.MultiBit - sun.os.patch.level = unknown
10:40:16.518 [main] DEBUG org.multibit.MultiBit - install4j.exeDir = /Applications/
10:40:16.518 [main] DEBUG org.multibit.MultiBit - java.vm.specification.name = Java Virtual Machine Specification
10:40:16.518 [main] DEBUG org.multibit.MultiBit - user.dir = /Applications/MultiBit Classic.app/Contents/java/app
10:40:16.518 [main] DEBUG org.multibit.MultiBit - java.runtime.version = 1.7.0_80-b15
10:40:16.518 [main] DEBUG org.multibit.MultiBit - i4j.ownBundlePath = /Applications/MultiBit Classic.app
10:40:16.519 [main] DEBUG org.multibit.MultiBit - java.awt.graphicsenv = sun.awt.CGraphicsEnvironment
10:40:16.519 [main] DEBUG org.multibit.MultiBit - java.endorsed.dirs = /Applications/MultiBit Classic.app/Contents/PlugIns/jre.bundle/Contents/Home/jre/lib/endorsed
10:40:16.519 [main] DEBUG org.multibit.MultiBit - os.arch = x86_64
10:40:16.519 [main] DEBUG org.multibit.MultiBit - java.io.tmpdir = /var/folders/40/xh586sdj5j182s7j8xclm_w80000gp/T/
10:40:16.519 [main] DEBUG org.multibit.MultiBit - line.separator =
 
10:40:16.519 [main] DEBUG org.multibit.MultiBit - java.vm.specification.vendor = Oracle Corporation
10:40:16.519 [main] DEBUG org.multibit.MultiBit - os.name = Mac OS X
10:40:16.519 [main] DEBUG org.multibit.MultiBit - apple.laf.useScreenMenuBar = true
10:40:16.519 [main] DEBUG org.multibit.MultiBit - proxySet = false
10:40:16.519 [main] DEBUG org.multibit.MultiBit - sun.jnu.encoding = UTF-8

Jump to: