Bitcoin Forum
August 07, 2024, 07:25:36 AM *
News: Latest Bitcoin Core release: 27.1 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Problem starting Armory  (Read 1644 times)
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 13, 2016, 11:42:33 PM
 #1

Trying to run Armory on CentOS 7

Built from source as RPM by me - 0.93.2

Here's the error :

Code:
[alice@localhost ~]$ armory
(ERROR) announcefetch.py:312 - Could not verify data in signed message block
Traceback (most recent call last):
  File "/usr/libexec/armory/announcefetch.py", line 304, in __runFetchSequence
    sig, msg = readSigBlock(digestData)
  File "/usr/libexec/armory/jasvet.py", line 589, in readSigBlock
    name = r.split(BEGIN_MARKER)[1].split(DASHX5)[0]
IndexError: list index out of range
(ERROR) Traceback (most recent call last):
  File "/usr/libexec/armory/ArmoryQt.py", line 7158, in <module>
    form = ArmoryMainWindow(splashScreen=SPLASH)
  File "/usr/libexec/armory/ArmoryQt.py", line 822, in __init__
    self.setDashboardDetails()
  File "/usr/libexec/armory/ArmoryQt.py", line 5666, in setDashboardDetails
    sdmState = TheSDM.getSDMState()
  File "/usr/libexec/armory/SDM.py", line 752, in getSDMState
    state = self.getSDMStateLogic()
  File "/usr/libexec/armory/SDM.py", line 788, in getSDMStateLogic
    latestInfo = self.getTopBlockInfo()
  File "/usr/libexec/armory/SDM.py", line 925, in getTopBlockInfo
    if self.isRunningBitcoind():
  File "/usr/libexec/armory/SDM.py", line 725, in isRunningBitcoind
    self.btcOut, self.btcErr = self.bitcoind.communicate()
  File "/usr/lib64/python2.7/subprocess.py", line 800, in communicate
    return self._communicate(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1396, in _communicate
    self.stdin.flush()
ValueError: I/O operation on closed file

Traceback (most recent call last):
  File "/usr/libexec/armory/ArmoryQt.py", line 7158, in <module>
    form = ArmoryMainWindow(splashScreen=SPLASH)
  File "/usr/libexec/armory/ArmoryQt.py", line 822, in __init__
    self.setDashboardDetails()
  File "/usr/libexec/armory/ArmoryQt.py", line 5666, in setDashboardDetails
    sdmState = TheSDM.getSDMState()
  File "/usr/libexec/armory/SDM.py", line 752, in getSDMState
    state = self.getSDMStateLogic()
  File "/usr/libexec/armory/SDM.py", line 788, in getSDMStateLogic
    latestInfo = self.getTopBlockInfo()
  File "/usr/libexec/armory/SDM.py", line 925, in getTopBlockInfo
    if self.isRunningBitcoind():
  File "/usr/libexec/armory/SDM.py", line 725, in isRunningBitcoind
    self.btcOut, self.btcErr = self.bitcoind.communicate()
  File "/usr/lib64/python2.7/subprocess.py", line 800, in communicate
    return self._communicate(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1396, in _communicate
    self.stdin.flush()
ValueError: I/O operation on closed file

Here's how it is built

Code:
%build
sed -ie s?"\$(PREFIX)/lib/armory"?"\$(PREFIX)/libexec/armory"? Makefile
sed -ie s?"/usr/lib/armory"?"/usr/libexec/armory"? ArmoryQt.py
sed -ie s?"/usr/lib/armory"?"/usr/libexec/armory"? dpkgfiles/armory
sed -ie s?"/usr/lib/armory"?"/usr/libexec/armory"? osxbuild/Armory-script.sh
sed -ie s?"/usr/lib/armory"?"/usr/libexec/armory"? osxbuild/armoryd-script.sh
sed -ie s?"/usr/lib/armory"?"/usr/libexec/armory"? osxbuild/objc_armory/ArmoryMac.pro
sed -ie s?"/usr/lib/armory"?"/usr/libexec/armory"? release_scripts/Step2_Offline_PackageSigning.py
sed -ie s?"/usr/lib/armory"?"/usr/libexec/armory"? release_scripts/signannounce.py
sed -ie s?"/usr/lib/armory"?"/usr/libexec/armory"? release_scripts/README.txt
sed -ie 's/\r//' BitTornado/launchmanycore.py

make %{?_smp_mflags}


%install
make install DESTDIR=%{buildroot}

It does start bitcoind before that error occurs.

Any suggestions?

SELinux is disabled so that's not the issue.

Thank you


I hereby reserve the right to sometimes be wrong
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 13, 2016, 11:50:10 PM
 #2

Whoa, wait, I'm running an old version? Why the frack doesn't the armory website list the new version if it was released all the way back in October?

That's um really odd.

I hereby reserve the right to sometimes be wrong
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 12:04:04 AM
 #3

Okay after checking out the 0.93.3 release and rebuilding the RPM, the same issue persists.

For what it's worth, bitcoin-qt works just fine.

I'm wondering if my python environment isn't as complete as it should be?

I hereby reserve the right to sometimes be wrong
achow101
Staff
Legendary
*
Offline Offline

Activity: 3472
Merit: 6797


Just writing some code


View Profile WWW
January 14, 2016, 04:30:57 AM
 #4

From that error message it looks like Armory is unable to verify the signed announcement messages.

Could you post your armory logs?

Also, it would be a good idea to submit a bug report to Armory by going to Help > Submit Bug Report in Armory.

AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 11:21:01 AM
 #5

Well that's interesting - I looked at the logs and saw this is the announcement it is trying to fetch -

2016-01-13 18:31 (INFO) -- announcefetch.py:271 - Fetching: https://bitcoinarmory.com/announce.txt?osvar=centos+linux&os=lin&ver=0.93.3&id=d4cdcaba

When I grabbed that with wget and looked, it appears to grab a wordpress press including crap like googleapi javascript. What the hell is it doing that for?

Here's the log -

http://awel.domblogger.net/7/libre/armorylog.txt

I hereby reserve the right to sometimes be wrong
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 11:32:36 AM
 #6

I also have to ask, does this mean that a DoS attack on the armory website means armory stops working because clients can't get the signed messages it seems unable to start without?

I hereby reserve the right to sometimes be wrong
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 11:50:57 AM
 #7

Here is attempting to start it skipping the announce check

Code:
[alice@localhost ~]$ armory --skip-announce-check
(ERROR) Traceback (most recent call last):
  File "/usr/libexec/armory/ArmoryQt.py", line 7147, in <module>
    form = ArmoryMainWindow(splashScreen=SPLASH)
  File "/usr/libexec/armory/ArmoryQt.py", line 822, in __init__
    self.setDashboardDetails()
  File "/usr/libexec/armory/ArmoryQt.py", line 5655, in setDashboardDetails
    sdmState = TheSDM.getSDMState()
  File "/usr/libexec/armory/SDM.py", line 752, in getSDMState
    state = self.getSDMStateLogic()
  File "/usr/libexec/armory/SDM.py", line 788, in getSDMStateLogic
    latestInfo = self.getTopBlockInfo()
  File "/usr/libexec/armory/SDM.py", line 925, in getTopBlockInfo
    if self.isRunningBitcoind():
  File "/usr/libexec/armory/SDM.py", line 725, in isRunningBitcoind
    self.btcOut, self.btcErr = self.bitcoind.communicate()
  File "/usr/lib64/python2.7/subprocess.py", line 800, in communicate
    return self._communicate(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1396, in _communicate
    self.stdin.flush()
ValueError: I/O operation on closed file

Traceback (most recent call last):
  File "/usr/libexec/armory/ArmoryQt.py", line 7147, in <module>
    form = ArmoryMainWindow(splashScreen=SPLASH)
  File "/usr/libexec/armory/ArmoryQt.py", line 822, in __init__
    self.setDashboardDetails()
  File "/usr/libexec/armory/ArmoryQt.py", line 5655, in setDashboardDetails
    sdmState = TheSDM.getSDMState()
  File "/usr/libexec/armory/SDM.py", line 752, in getSDMState
    state = self.getSDMStateLogic()
  File "/usr/libexec/armory/SDM.py", line 788, in getSDMStateLogic
    latestInfo = self.getTopBlockInfo()
  File "/usr/libexec/armory/SDM.py", line 925, in getTopBlockInfo
    if self.isRunningBitcoind():
  File "/usr/libexec/armory/SDM.py", line 725, in isRunningBitcoind
    self.btcOut, self.btcErr = self.bitcoind.communicate()
  File "/usr/lib64/python2.7/subprocess.py", line 800, in communicate
    return self._communicate(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1396, in _communicate
    self.stdin.flush()
ValueError: I/O operation on closed file

So it seems there is more than one problem.

These are from the log file just before that -

Code:
2016-01-14 03:48 (INFO) -- ArmoryUtils.py:600 - Executing popen: gconftool-2 --get /desktop/gnome/url-handlers/bitcoin/command
2016-01-14 03:48 (INFO) -- ArmoryUtils.py:600 - Executing popen: xdg-mime query default x-scheme-handler/bitcoin
2016-01-14 03:48 (INFO) -- ArmoryUtils.py:600 - Executing popen: find /home/alice -type f -name "mimeTypes.rdf"
2016-01-14 03:48 (INFO) -- ArmoryQt.py:664 - Usermode: Advanced
2016-01-14 03:48 (INFO) -- ArmoryQt.py:1810 - Changing usermode:
2016-01-14 03:48 (INFO) -- ArmoryQt.py:1811 -    From: Advanced
2016-01-14 03:48 (INFO) -- ArmoryQt.py:1819 -      To: Advanced

I hereby reserve the right to sometimes be wrong
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 12:16:15 PM
 #8

With the debug switch -

Code:
(DEBUG) ArmoryQt.py:2474 - Bitcoind started without error
(DEBUG) ArmoryQt.py:1411 - setupSystemTray
(DEBUG) SDM.py:844 - Creating proxy
(INFO) SDM.py:848 - Creating proxy in SDM: host=127.0.0.1, port=8332
(DEBUG) SDM.py:891 - generic socket error
(DEBUG) SDM.py:723 - Bitcoind is no more
(INFO) ArmoryQt.py:1514 - setupUriRegistration
(INFO) ArmoryUtils.py:600 - Executing popen: gconftool-2 --get /desktop/gnome/url-handlers/bitcoin/command
(INFO) ArmoryUtils.py:600 - Executing popen: xdg-mime query default x-scheme-handler/bitcoin
(INFO) ArmoryUtils.py:600 - Executing popen: find /home/alice -type f -name "mimeTypes.rdf"
(DEBUG) ArmoryQt.py:4350 - setupDashboard
(INFO) ArmoryQt.py:664 - Usermode: Advanced
(INFO) ArmoryQt.py:1810 - Changing usermode:
(INFO) ArmoryQt.py:1811 -    From: Advanced
(INFO) ArmoryQt.py:1819 -      To: Advanced
(DEBUG) SDM.py:723 - Bitcoind is no more

I turned off firewalld just to make sure that wasn't the issue, same thing.
It seems to be starting bitcoind without error but debug seems to be indication a "generic socket error" followed by "Bitcoind is no more" (yet it is still running according to ps aux)

I hereby reserve the right to sometimes be wrong
josephbisch
Member
**
Offline Offline

Activity: 75
Merit: 10


View Profile
January 14, 2016, 01:55:50 PM
 #9

Well that's interesting - I looked at the logs and saw this is the announcement it is trying to fetch -

2016-01-13 18:31 (INFO) -- announcefetch.py:271 - Fetching: https://bitcoinarmory.com/announce.txt?osvar=centos+linux&os=lin&ver=0.93.3&id=d4cdcaba

When I grabbed that with wget and looked, it appears to grab a wordpress press including crap like googleapi javascript. What the hell is it doing that for?

Here's the log -

http://awel.domblogger.net/7/libre/armorylog.txt
When you navigate to that URL, you are redirected to the bitcoinarmory.com homepage. If you get rid of the parameters (the ? and everything after it) you get announce.txt as Armory is expecting. The reason Armory isn't running for you is that the program is expecting to receive a Bitcoin Signed Message, but is receiving the Armory homepage.
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 02:02:03 PM
 #10

Well that's interesting - I looked at the logs and saw this is the announcement it is trying to fetch -

2016-01-13 18:31 (INFO) -- announcefetch.py:271 - Fetching: https://bitcoinarmory.com/announce.txt?osvar=centos+linux&os=lin&ver=0.93.3&id=d4cdcaba

When I grabbed that with wget and looked, it appears to grab a wordpress press including crap like googleapi javascript. What the hell is it doing that for?

Here's the log -

http://awel.domblogger.net/7/libre/armorylog.txt
When you navigate to that URL, you are redirected to the bitcoinarmory.com homepage. If you get rid of the parameters (the ? and everything after it) you get announce.txt as Armory is expecting. The reason Armory isn't running for you is that the program is expecting to receive a Bitcoin Signed Message, but is receiving the Armory homepage.

Okay I am trying with the --skip-announce-check option to avoid that single point of failure (really dumb IMHO to make startup depend upon a specific URL responding in a specific way - what problem are they trying to solve Huh) and that is no longer an issue, but now it seems to have issues with creating a socket to the bitcoind service.

I hereby reserve the right to sometimes be wrong
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 02:09:56 PM
 #11

Code:
def __backgroundRequestTopBlock(self):

That's the function in SDM.py where the socket.error is triggering.

It's possible this is actually a problem with bitcoind but I don't know how to determine that.

When building bitcoin-core I ran:

Code:
%check
# Run all the tests
make check
# Run all the other tests
pushd src
srcdir=. test/bitcoin-util-test.py
popd
qa/pull-tester/rpc-tests.sh -extended

which takes a really long time but all tests passed.

I hereby reserve the right to sometimes be wrong
Carlton Banks
Legendary
*
Offline Offline

Activity: 3430
Merit: 3078



View Profile
January 14, 2016, 02:11:57 PM
 #12

Try turning off the bitcoind auto-management option from the settings (or in the config file the settings store).

Also, be sure to use 93.3, as 93.2 suffers a bug that could cause your transactions to fail.

Vires in numeris
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 02:16:27 PM
 #13

Try turning off the bitcoind auto-management option from the settings (or in the config file the settings store).

Also, be sure to use 93.3, as 93.2 suffers a bug that could cause your transactions to fail.

I can't even get to the damn settings, it doesn't get that far.

I am using 93.3 now - initially I was using 93.2 because for some reason I can't comprehend, they don't have 93.3 listed on their website *and* they don't have an archive of release tarballs.

It is feeling like this is a project where the developer has become bored and doesn't want to do it anymore.

I hereby reserve the right to sometimes be wrong
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 02:55:54 PM
 #14

I was not happy to see btw that by default an application that claims security as a motive reports both the operating system and version of the operating system to the projects homepage. That's not cool.

Even worse, it does it in a get variable. It has the full facilities of python at its disposal, at least do it via post if you must do it at all.

I think I am just going to stick with bitcoin-core.

It works and will continue to work and I don't risk issues where an upgrade to the product breaks the ability to even use my wallet, bitcoin-core is well tested before release and old versions are easy to get if needed via source tarballs with a checksum.

The deterministic wallet and cold-address management is a nice thing to have, but it looks like armory is suffering from feature bloat instead of embracing KISS.

And from the reading the forum, it appears the developer now is focusing on a closed source project.

Ah well.

I used armory for awhile in Fedora a little over a year ago and really liked it.

I hereby reserve the right to sometimes be wrong
Carlton Banks
Legendary
*
Offline Offline

Activity: 3430
Merit: 3078



View Profile
January 14, 2016, 03:09:51 PM
Last edit: January 14, 2016, 04:28:06 PM by Carlton Banks
 #15

I think there are archived versions of releases with any major format changes, but the URL's are not well advertised as new releases have always been more or less unanimous improvements over their predecessors (only those searching hard ever need to find those links I guess).

As for the state of the project... well, 93.3 was put out under different circumstances to previous releases, but there's no word yet from etotheipi on what the reason for that was. The 93.3 fix had to be pushed out quickly anyway (to correctly ameliorate the network problem for Armory users that the 0.11.1 tx malleability fix provided), which is a possible reason for the way that release was handled.

The only other publicly available information is that Mac/OSX support was shelved at that time, but then quickly reinstated with the help of a Mac user who submitted a fix on this sub. From that, a reasonable conclusion would be that they've lost a developer who provided all OSX efforts. But that's all based on a supposition.

Vires in numeris
AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 03:40:28 PM
 #16

I think it needs to get back to the fundamentals.

Hierarchal Deterministic Wallet

Cold Address Management

Watch Only Wallets

Focus on doing those things and doing those things correctly, and without having the product calling home. That's ridiculous. I don't think it use to do that, that seems to be a new "feature".

Then allow other features people want (e.g. multisig) to be option plugin add-ons.

-=-

It's like OpenSSL - bugs like heartbleed happened because of feature creep. No one even needs the heartbeat extension, seriously. Who the hell does TLS over UDP?

Yet they put it in enabled by default and people who had no user for it had their certificates compromised as a result.

Keep things simple, Armory needs to get back to that in my opinion. Maybe it needs a fork.

I hereby reserve the right to sometimes be wrong
achow101
Staff
Legendary
*
Offline Offline

Activity: 3472
Merit: 6797


Just writing some code


View Profile WWW
January 14, 2016, 05:29:52 PM
 #17

I think it needs to get back to the fundamentals.

Hierarchal Deterministic Wallet

Cold Address Management

Watch Only Wallets

Focus on doing those things and doing those things correctly, and without having the product calling home. That's ridiculous. I don't think it use to do that, that seems to be a new "feature".

Then allow other features people want (e.g. multisig) to be option plugin add-ons.
AFAIK calling home has been a function in armory for a while so that you can get announcements and updates. It shouldn't break anything or cause problems since offline mode can't get the announcements. I think there is some other problem here, but I haven't had the time to look at your logs.

Can you also post the armorycpplog file?

AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 05:42:15 PM
 #18

Well it means anyone who gets access to the server logs now has a list of IP addresses corresponding with operating system and OS version of people who use bitcoin.

That should never have happened.

I hereby reserve the right to sometimes be wrong
goatpig
Moderator
Legendary
*
Offline Offline

Activity: 3710
Merit: 1360

Armory Developer


View Profile
January 14, 2016, 06:44:17 PM
 #19

Well it means anyone who gets access to the server logs now has a list of IP addresses corresponding with operating system and OS version of people who use bitcoin.

That should never have happened.

We make a point of not logging the IPs, but that boils down to a trust relationship. If you choose not to trust that, turn off the feature. There are also options to run specifically through Tor if you want to hide your IP. You should evaluate settings in Armory against Bitcoin's own network model. Anyone controlling and/or monitoring a lot of nodes has a good chance to figure out your IP.

The counterpart to this "phoning home" feature is that we get an channel to push critical announcements to our users (something both Core and Armory need and have used in the past). We piggy back on Core for our networking purposes. We won't abide by a network policy Core doesn't respect, that would make no sense.

Again if you dislike this feature, you can turn it off. If you want to change your settings before letting Armory connect to anything, you should first start it in offline mode.

------------------------

Going back to your problem, Armory is trying to start bitcoind and failing. That's a default "easy mode" feature that you should probably turn off since we do not officially support CentOS. To do this, start Armory in offline mode and go to File -> Settings. Uncheck the first check box. Then start BitcoinQt manually and restart Armory.

AliceWonderMiscreations (OP)
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
January 14, 2016, 07:51:05 PM
 #20

Instead of putting the OS variant etc. into a GET variable, why not just have the server respond with a generic XML file that has the current version for each OS?

Then the client can look through the XML file (or whatever) to see what the current version is. If it is newer than what is running, the user gets an alert that they may want to upgrade.

No information about the running environment is leaked that way.

I hereby reserve the right to sometimes be wrong
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!