Comments (7)
Notes:
So....this is troubling
while looking for the root cause of this issue, I found that it was occuring in the test_hashtable_multithread test. Its really odd, because it appears we're getting random memory corruption during the test
Whats more odd is that hppa is built without thread support, so its all single threaded, which eliminates race conditions as a possible source of the problem.
Whats more odd is that, in this single threaded environment
Whats more odd is that if I reduce the optimization level to -O1, the problem abates
further reading shows that pa-risc has no hardware support for atomics, all atomic operations are by default implemented with the sync library, or optionally by libatomic. When using the latter several build errors are produced, so for now we appear stuck with the former
I'm starting to wonder if perhaps we're seeing a issue with atomic operations on an old arch that isn't as well maintained anymore
from openssl.
@nhorman Unfortunately the hppa cross-compile job is still not fixed:
https://github.com/openssl/openssl/actions/runs/8893580037/job/24420072833
from openssl.
will look at it, need to get a local reproducer setup
from openssl.
Hmm... I am wondering if we should just have much more simple fallback for atomics on no-thread builds? Of course another option is to just declare this platform unsupported and remove it from CI.
from openssl.
Possibly. I'd like to better understand the issue before we make a decision, but yeah, I think both of those options are on the table. It's also feasible that this is a compiler issue. One of the options for hppas compiler is -mnoindex-loads, which eliminates the use of indexed addressing mode in loads/stores to which this problem seems related to. Will let you know
from openssl.
I'm becoming increasingly convinced that this is a compiler bug.
My observations so far:
- Crashes happen in multiple places randomly (sometimes in do_mt_hash_work, sometimes in CRYPTO_atomic_add, sometimes in various other locations), but always as a subordonate of do_mt_hash_work
- The crashes happen normally because a register that holds the value needed for an indirect load is garbage
- Inspecting with gdb shows those registers always hold the result of an indexed load
- setting optimization for the function do_mt_hash_work to O1 makes the problem abate
Its also notable that this isn't a race condition as hppa build disables threading
from openssl.
Then add -O1 or something else that fixes the issue here as workaround:
from openssl.
Related Issues (20)
- 32-bit openssl command hangs forever on AIX 7.1 HOT 2
- "Error finalizing cipher loop" when running openssl speed -evp -decrypt for sm4-gcm and sm4-ccm
- Minerva attack on s390x architecture HOT 3
- Minerva attack on power PC architecture HOT 16
- Minerva attack on ARM architecture HOT 7
- RFC 5280 X509 compliance issues in OpenSSL v3.1.1 or later HOT 9
- openssl ciphers -v doesn't list AES-CTR and AES-ECB cipher suits
- Minerva attack on OpenSSL built without enable-ec_nistp_64_gcc_128 HOT 2
- Since OpenSSL 3.0
- openssl --version does not return on version 3.0.13 and 3.3.0 sparc v8 HOT 7
- OpenSSL Read/Write into a BIO_s_mem works only on first call per connection HOT 1
- Openssl speed reports error for RSA KEM keys using external providers in openssl3.2
- pkg-config files are no longer relocatable with 3.3 HOT 1
- `ERR_reason_error_string()` returns `NULL` for `no_application_protocol` alert HOT 4
- SM2 failed to generate public key from private key HOT 5
- Unable to verify LDAP CRL
- CMS Decryption fails randomly with BouncyCastle encrypted HOT 8
- pkcs12 - Bag attributes not written if ``-nokeys`` is used HOT 2
- Custom extensions and backwards compatibility HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openssl.