-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
openssl/v2 module panic: openssl: OpenSSL version: 0.0.0 with formerly working libcrypto.so version #176
Comments
@gdams - Might be able to triage this on a SUSE host on Azure? |
To clarify for my fellow microsoft/go folks listening in, this refers to https://github.com/golang-fips/go/tree/go1.21.13-1-openssl-fips, which we aren't using. Observing Lines 33 to 43 in 97b3bd9
Another possibility I'd add to the pile is that for some reason, I would expect that if you modify the |
@jfkw I would recommend transferring this issue to https://github.com/golang-fips/go. As @dagood explained, it looks like an issue integrating |
@qmuntal. Thanks, will do. I can refile the issue there and close here. Alternatively, someone with write access to the repository could use the UI action to transfer the issue which would preserve the helpful comments. (edit: transfer of the issue would be preferable, I'll hold off on refiling) |
Closing as invalid. On my build one or more of the higher-numbered patches were not being applied. Ensuring that all patches are applied resolves the panic and incorrect OpenSSL version detection. Thanks everyone for the advice given here. |
On SUSE Linux Enterprise Server running in FIPS mode, Go binaries built with
go1.22
and theopenssl/v2
module panic withpanic: openssl: OpenSSL version: 0.0.0
. Go binaries built withgo1.21
or earlier and the originalopenssl
module work as expected anddlopen()
the appropriatelibcrypto.so
.It would help with troubleshooting
dlopen()
issues ifpanic(errUnsupportedVersion())
returned additional state information.Expected Behavior
All examples below are running in FIPS mode:
Using a toolchain built at tag
go1.21.13-1-openssl-fips
(or any earlier tag in thego1.21
series or previousgo1.x series
) withmodule github.com/golang-fips/openssl
, the produced Go application binary runs as expected:Tracing confirms that this binary
dlopens
/usr/lib64/libcrypto.so.3 -> libcrypto.so.3.1.4
. On an earlier distro version,dlopen
succeeds with/usr/lib64/libcrypto.so -> /lib64/libcrypto.so.1.0.0
.Demonstration of Problem Behavior
Using a toolchain built at tag
go1.22.5-3-openssl-fips
(or any earlier tag in thego1.22
series) with the newmodule github.com/golang-fips/openssl/v2
, the produced Go application binary panics withpanic: openssl: OpenSSL version: 0.0.0
.The code path raising the
panic()
during fall-through to the default case:It is not yet apparent what is causing the
openssl/v2
fall-through to the default case when loading these specificlibcrypto.so(s)
. The0.0.0
designation from the panic leaves open the question of whether anylibcrypto.so
is being found in this case. The other possibility is that alibcrypto.so
is found but its signatures are incompatible with certain checks.I will describe ongoing runtime debug troubleshooting efforts using the delve debugger in subsequent comments.
The text was updated successfully, but these errors were encountered: