Satoshi Forum Archive
Thread #0172

Version 0.3.8.1 update for Linux 64-bit

satoshi2010-08-09T19:46:58Z

When we switched to Crypto++ 5.6.0 SHA-256 in version 0.3.6, generation got broken on the Linux 64-bit build. Version 0.3.8.1 is on SourceForge with the 64-bit binary updated.
Download:
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download
Future versions after 0.3.8 will probably require SSE2. Anyone have Pentium 3 or older where this would be a problem?

Original message

NewLibertyStandard2010-08-09T20:26:15Z

The difficulty has gotten high enough that I wouldn't worry about dropping block generation support for old computers if it's hard to maintain compatibility. But the client should definitely provide some feedback explaining why the feature isn't available. Perhaps you could make a message pop up that explains why generating bitcoins is not supported on old hardware.

Original message

jgarzik2010-08-09T20:46:14Z

IMO, SSE should be required for generation, not simply to run the client.

Original message

satoshi2010-08-09T20:55:06Z

That's a good point, I believe you could run with generation off if you don't have SSE2.
How about add to the top of cryptopp/config.h:
#if !defined(_M_X64) && !defined(__x86_64__)
#define CRYPTOPP_DISABLE_SSE2 1
#endif
that would disable SSE2 for 32-bit builds. (at least with GCC or MSVC)

Original message

dkaparis2010-08-09T20:57:02Z

From what I understand, removing the offending define is required only for 64-bit builds and 64-bit architectures are already guaranteed to support SSE2 instructions. 32-bit builds can retain the flag and thus continue to disable SSE2 instructions and remain compatible with older computers.

Original message

dkaparis2010-08-09T21:02:49Z

Quote from: satoshi on August 09, 2010, 08:55:06 PM (https://bitcointalk.org/index.php?topic=765.msg8422#msg8422)

That's a good point, I believe you could run with generation off if you don't have SSE2.
How about add to the top of cryptopp/config.h:
#if !defined(_M_X64) && !defined(__x86_64__)
#define CRYPTOPP_DISABLE_SSE2 1
#endif
that would disable SSE2 for 32-bit builds. (at least with GCC or MSVC)

Yes, but better have that specified in the makefile. That way anyone who doesn't care for old CPU's can compile with SSE2 support by removing the flag, without fiddling with the source.
I can also add a CMake property for that in the CMake build.

Original message

knightmb2010-08-10T00:02:25Z

Quote from: dkaparis on August 09, 2010, 08:57:02 PM (https://bitcointalk.org/index.php?topic=765.msg8423#msg8423)

From what I understand, removing the offending define is required only for 64-bit builds and 64-bit architectures are already guaranteed to support SSE2 instructions. 32-bit builds can retain the flag and thus continue to disable SSE2 instructions and remain compatible with older computers.

Older CPU that don't support SSE2 shouldn't be excluded from coin generation in my opinion. They can still serve a vital role in block generation; I have many machines that don't support the SSE2 enhancements, but still generate blocks all the time, even if they are only churning 300-400 khash/s

Original message

tcatm2010-08-10T00:04:45Z

I'm still running an old node without SSE2 @600khash/s. The algorithm works so I don't see why we should make SSE2 a requirement.

Original message

NewLibertyStandard2010-08-10T02:45:47Z

My impression of the difficulty was based on my broken client, haha! I've already generated a block tonight for the first time in such a long time. Having older computers generate coins doesn't seem as futile as it did earlier today. If you can keep the compatibility intact, I think it would be well worth it.

Original message

Ground Loop2010-08-10T03:38:23Z

Hah! This sure helps explain a long-standing mystery.. why my 10,000 khash/sec Linux 64-bit machine is the only one that has never, in two weeks, generated a block. ![Smiley](https://bitcointalk.org/static/img/emoticons/smiley.gif)

Original message

Ground Loop2010-08-10T03:47:28Z

Just to confirm -- this fix is in SVN 125?

Original message

mizerydearia2010-08-10T06:18:28Z

Quote from: Ground Loop on August 10, 2010, 03:38:23 AM (https://bitcointalk.org/index.php?topic=765.msg8464#msg8464)

Hah! This sure helps explain a long-standing mystery.. why my 10,000 khash/sec Linux 64-bit machine is the only one that has never, in two weeks, generated a block. ![Smiley](https://bitcointalk.org/static/img/emoticons/smiley.gif)

You're not the only one. I haven't generated in over a month.

Original message

ArtForz2010-08-10T09:37:49Z

Fix is in svn r124, r125 added -maxconnections.

Original message

satoshi2010-08-10T23:46:00Z

SVN rev 128: disable SSE2 on 32-bit. This may only disable it for MSVC and GCC. Other compilers might have different 64-bit defines.

Original message