mirror of https://github.com/openssl/openssl.git
Add lock contention checking to our pthreads implementation
GitHub CI / check_update (push) Has been cancelled
Details
GitHub CI / check_docs (push) Has been cancelled
Details
GitHub CI / check-c99 (push) Has been cancelled
Details
GitHub CI / basic_gcc (push) Has been cancelled
Details
GitHub CI / basic_clang (push) Has been cancelled
Details
GitHub CI / linux-arm64 (push) Has been cancelled
Details
GitHub CI / freebsd-x86_64 (push) Has been cancelled
Details
GitHub CI / minimal (push) Has been cancelled
Details
GitHub CI / no-deprecated (push) Has been cancelled
Details
GitHub CI / no-shared-ubuntu (push) Has been cancelled
Details
GitHub CI / no-shared-macos (macos-13) (push) Has been cancelled
Details
GitHub CI / no-shared-macos (macos-14) (push) Has been cancelled
Details
GitHub CI / non-caching (push) Has been cancelled
Details
GitHub CI / address_ub_sanitizer (push) Has been cancelled
Details
GitHub CI / fuzz_tests (push) Has been cancelled
Details
GitHub CI / memory_sanitizer (push) Has been cancelled
Details
GitHub CI / threads_sanitizer (push) Has been cancelled
Details
GitHub CI / enable_non-default_options (push) Has been cancelled
Details
GitHub CI / full_featured (push) Has been cancelled
Details
GitHub CI / no-legacy (push) Has been cancelled
Details
GitHub CI / legacy (push) Has been cancelled
Details
GitHub CI / out-of-readonly-source-and-install-ubuntu (push) Has been cancelled
Details
GitHub CI / out-of-readonly-source-and-install-macos (macos-13) (push) Has been cancelled
Details
GitHub CI / out-of-readonly-source-and-install-macos (macos-14) (push) Has been cancelled
Details
GitHub CI / external-tests-misc (push) Has been cancelled
Details
GitHub CI / external-tests-oqs-provider (push) Has been cancelled
Details
GitHub CI / external-tests-pkcs11-provider (push) Has been cancelled
Details
GitHub CI / external-tests-pyca (3.9) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-11 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-12 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-13 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-14 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-15 distro:ubuntu-22.04 llvm-ppa-name:jammy]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-16 distro:ubuntu-22.04 llvm-ppa-name:jammy]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-17 distro:ubuntu-22.04 llvm-ppa-name:jammy]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-10 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-11 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-12 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-13 distro:ubuntu-22.04 gcc-ppa-name:ubuntu-toolchain-r/test]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-9 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:aarch64-linux-gnu fips:no libs:libc6-dev-arm64-cross target:linux-aarch64]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:alpha-linux-gnu fips:no libs:libc6.1-dev-alpha-cross target:linux-alpha-gcc]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:arm-linux-gnueabi fips:no libs:libc6-dev-armel-cross target:linux-armv4 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:arm-linux-gnueabihf fips:no libs:libc6-dev-armhf-cross target:linux-armv4 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:hppa-linux-gnu fips:no libs:libc6-dev-hppa-cross target:-static -O1 linux-generic32 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:hppa-linux-gnu libs:libc6-dev-hppa-cross target:linux-generic32 tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:i386-pc-msdosdjgpp libs:libc-djgpp-dev libwatt-djgpp-dev djgpp-utils ppa:jwt27/djgpp-toolchain target:no-threads 386 DJGPP tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:m68k-linux-gnu fips:no libs:libc6-dev-m68k-cross target:-static -m68040 linux-latomic -Wno-stringop-overflow tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:m68k-linux-gnu libs:libc6-dev-m68k-cross target:-mcfv4e -mxgot linux-latomic -Wno-stringop-overflow no-quic tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mips-linux-gnu fips:no libs:libc6-dev-mips-cross target:-static linux-mips32 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mips-linux-gnu libs:libc6-dev-mips-cross target:linux-mips32 tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mips64-linux-gnuabi64 fips:no libs:libc6-dev-mips64-cross target:-static linux64-mips64]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mips64-linux-gnuabi64 libs:libc6-dev-mips64-cross target:linux64-mips64 tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mipsel-linux-gnu fips:no libs:libc6-dev-mipsel-cross target:linux-mips32 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:powerpc64le-linux-gnu fips:no libs:libc6-dev-ppc64el-cross target:linux-ppc64le]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:riscv64-linux-gnu fips:no libs:libc6-dev-riscv64-cross target:linux64-riscv64]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:s390x-linux-gnu fips:no libs:libc6-dev-s390x-cross target:linux64-s390x]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:sh4-linux-gnu fips:no libs:libc6-dev-sh4-cross target:no-async linux-latomic tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:sparc64-linux-gnu libs:libc6-dev-sparc64-cross target:linux64-sparcv9 tests:none]) (push) Has been cancelled
Details
Fuzz-checker CI / fuzz-checker (map[cc:afl-clang-fast config:enable-fuzz-afl no-module install:afl++ name:AFL]) (push) Has been cancelled
Details
Fuzz-checker CI / fuzz-checker (map[cc:clang-18 config:enable-fuzz-libfuzzer enable-asan enable-ubsan -fno-sanitize=function -fsanitize-coverage=trace-cmp -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION extra:enable-fips enable-lms enable-ec_nistp_64_gcc_128 -fno-sanitize=al… (push) Has been cancelled
Details
Fuzz-checker CI / fuzz-checker (map[cc:clang-18 config:enable-fuzz-libfuzzer enable-asan enable-ubsan -fno-sanitize=function install:libfuzzer-18-dev libs:--with-fuzzer-lib=/usr/lib/llvm-18/lib/libFuzzer.a --with-fuzzer-include=/usr/include/clang/18/include/fuzzer linke… (push) Has been cancelled
Details
CIFuzz / Fuzzing (push) Has been cancelled
Details
Run-checker CI / run-checker (enable-trace enable-fips) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-cmp) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-cms) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-default-thread-pool) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-dgram) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-dh) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-dtls) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ec) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ecx) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-http) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-legacy) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ml-dsa) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ml-kem) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-quic) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-sock) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ssl-trace) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-stdio) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-thread-pool) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-threads) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-tls) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-tls1_2) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-tls1_3) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ui) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-asan enable-ubsan no-shared no-asm -DOPENSSL_SMALL_FOOTPRINT -fno-sanitize=function) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-pie) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-ubsan no-asm -DOPENSSL_SMALL_FOOTPRINT -fno-sanitize=function) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-weak-ssl-ciphers) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-zlib) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-dso) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-dynamic-engine) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-ec2m enable-fips) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-engine no-shared) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-err) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-filenames) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-integrity-only-ciphers) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-module) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-ocsp) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-pinshared) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-srp) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-srtp) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-ts) (push) Has been cancelled
Details
Run-checker merge / jitter (push) Has been cancelled
Details
Run-checker merge / threads_sanitizer_atomic_fallback (push) Has been cancelled
Details
Windows GitHub CI / shared (map[arch:win32 config:--strict-warnings enable-lms no-fips os:windows-2025]) (push) Has been cancelled
Details
Windows GitHub CI / shared (map[arch:win64 config:enable-lms enable-fips no-thread-pool no-quic os:windows-2025]) (push) Has been cancelled
Details
Windows GitHub CI / shared (map[arch:win64 config:enable-lms enable-fips os:windows-2022]) (push) Has been cancelled
Details
Windows GitHub CI / plain (windows-2022) (push) Has been cancelled
Details
Windows GitHub CI / minimal (windows-2022) (push) Has been cancelled
Details
Windows GitHub CI / cygwin (windows-2022, map[arch:win64 config:-DCMAKE_C_COMPILER=gcc --strict-warnings enable-demos no-fips]) (push) Has been cancelled
Details
Windows Compression GitHub CI / zstd (push) Has been cancelled
Details
Windows Compression GitHub CI / brotli (push) Has been cancelled
Details
GitHub CI / check_update (push) Has been cancelled
Details
GitHub CI / check_docs (push) Has been cancelled
Details
GitHub CI / check-c99 (push) Has been cancelled
Details
GitHub CI / basic_gcc (push) Has been cancelled
Details
GitHub CI / basic_clang (push) Has been cancelled
Details
GitHub CI / linux-arm64 (push) Has been cancelled
Details
GitHub CI / freebsd-x86_64 (push) Has been cancelled
Details
GitHub CI / minimal (push) Has been cancelled
Details
GitHub CI / no-deprecated (push) Has been cancelled
Details
GitHub CI / no-shared-ubuntu (push) Has been cancelled
Details
GitHub CI / no-shared-macos (macos-13) (push) Has been cancelled
Details
GitHub CI / no-shared-macos (macos-14) (push) Has been cancelled
Details
GitHub CI / non-caching (push) Has been cancelled
Details
GitHub CI / address_ub_sanitizer (push) Has been cancelled
Details
GitHub CI / fuzz_tests (push) Has been cancelled
Details
GitHub CI / memory_sanitizer (push) Has been cancelled
Details
GitHub CI / threads_sanitizer (push) Has been cancelled
Details
GitHub CI / enable_non-default_options (push) Has been cancelled
Details
GitHub CI / full_featured (push) Has been cancelled
Details
GitHub CI / no-legacy (push) Has been cancelled
Details
GitHub CI / legacy (push) Has been cancelled
Details
GitHub CI / out-of-readonly-source-and-install-ubuntu (push) Has been cancelled
Details
GitHub CI / out-of-readonly-source-and-install-macos (macos-13) (push) Has been cancelled
Details
GitHub CI / out-of-readonly-source-and-install-macos (macos-14) (push) Has been cancelled
Details
GitHub CI / external-tests-misc (push) Has been cancelled
Details
GitHub CI / external-tests-oqs-provider (push) Has been cancelled
Details
GitHub CI / external-tests-pkcs11-provider (push) Has been cancelled
Details
GitHub CI / external-tests-pyca (3.9) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-11 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-12 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-13 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-14 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-15 distro:ubuntu-22.04 llvm-ppa-name:jammy]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-16 distro:ubuntu-22.04 llvm-ppa-name:jammy]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:clang-17 distro:ubuntu-22.04 llvm-ppa-name:jammy]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-10 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-11 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-12 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-13 distro:ubuntu-22.04 gcc-ppa-name:ubuntu-toolchain-r/test]) (push) Has been cancelled
Details
Compiler Zoo CI / compiler (map[cc:gcc-9 distro:ubuntu-22.04]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:aarch64-linux-gnu fips:no libs:libc6-dev-arm64-cross target:linux-aarch64]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:alpha-linux-gnu fips:no libs:libc6.1-dev-alpha-cross target:linux-alpha-gcc]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:arm-linux-gnueabi fips:no libs:libc6-dev-armel-cross target:linux-armv4 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:arm-linux-gnueabihf fips:no libs:libc6-dev-armhf-cross target:linux-armv4 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:hppa-linux-gnu fips:no libs:libc6-dev-hppa-cross target:-static -O1 linux-generic32 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:hppa-linux-gnu libs:libc6-dev-hppa-cross target:linux-generic32 tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:i386-pc-msdosdjgpp libs:libc-djgpp-dev libwatt-djgpp-dev djgpp-utils ppa:jwt27/djgpp-toolchain target:no-threads 386 DJGPP tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:m68k-linux-gnu fips:no libs:libc6-dev-m68k-cross target:-static -m68040 linux-latomic -Wno-stringop-overflow tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:m68k-linux-gnu libs:libc6-dev-m68k-cross target:-mcfv4e -mxgot linux-latomic -Wno-stringop-overflow no-quic tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mips-linux-gnu fips:no libs:libc6-dev-mips-cross target:-static linux-mips32 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mips-linux-gnu libs:libc6-dev-mips-cross target:linux-mips32 tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mips64-linux-gnuabi64 fips:no libs:libc6-dev-mips64-cross target:-static linux64-mips64]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mips64-linux-gnuabi64 libs:libc6-dev-mips64-cross target:linux64-mips64 tests:none]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:mipsel-linux-gnu fips:no libs:libc6-dev-mipsel-cross target:linux-mips32 tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:powerpc64le-linux-gnu fips:no libs:libc6-dev-ppc64el-cross target:linux-ppc64le]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:riscv64-linux-gnu fips:no libs:libc6-dev-riscv64-cross target:linux64-riscv64]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:s390x-linux-gnu fips:no libs:libc6-dev-s390x-cross target:linux64-s390x]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:sh4-linux-gnu fips:no libs:libc6-dev-sh4-cross target:no-async linux-latomic tests:-test_includes -test_store -test_x509_store]) (push) Has been cancelled
Details
Cross Compile / cross-compilation (map[arch:sparc64-linux-gnu libs:libc6-dev-sparc64-cross target:linux64-sparcv9 tests:none]) (push) Has been cancelled
Details
Fuzz-checker CI / fuzz-checker (map[cc:afl-clang-fast config:enable-fuzz-afl no-module install:afl++ name:AFL]) (push) Has been cancelled
Details
Fuzz-checker CI / fuzz-checker (map[cc:clang-18 config:enable-fuzz-libfuzzer enable-asan enable-ubsan -fno-sanitize=function -fsanitize-coverage=trace-cmp -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION extra:enable-fips enable-lms enable-ec_nistp_64_gcc_128 -fno-sanitize=al… (push) Has been cancelled
Details
Fuzz-checker CI / fuzz-checker (map[cc:clang-18 config:enable-fuzz-libfuzzer enable-asan enable-ubsan -fno-sanitize=function install:libfuzzer-18-dev libs:--with-fuzzer-lib=/usr/lib/llvm-18/lib/libFuzzer.a --with-fuzzer-include=/usr/include/clang/18/include/fuzzer linke… (push) Has been cancelled
Details
CIFuzz / Fuzzing (push) Has been cancelled
Details
Run-checker CI / run-checker (enable-trace enable-fips) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-cmp) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-cms) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-default-thread-pool) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-dgram) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-dh) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-dtls) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ec) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ecx) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-http) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-legacy) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ml-dsa) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ml-kem) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-quic) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-sock) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ssl-trace) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-stdio) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-thread-pool) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-threads) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-tls) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-tls1_2) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-tls1_3) (push) Has been cancelled
Details
Run-checker CI / run-checker (no-ui) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-asan enable-ubsan no-shared no-asm -DOPENSSL_SMALL_FOOTPRINT -fno-sanitize=function) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-pie) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-ubsan no-asm -DOPENSSL_SMALL_FOOTPRINT -fno-sanitize=function) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-weak-ssl-ciphers) (push) Has been cancelled
Details
Run-checker merge / run-checker (enable-zlib) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-dso) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-dynamic-engine) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-ec2m enable-fips) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-engine no-shared) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-err) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-filenames) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-integrity-only-ciphers) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-module) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-ocsp) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-pinshared) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-srp) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-srtp) (push) Has been cancelled
Details
Run-checker merge / run-checker (no-ts) (push) Has been cancelled
Details
Run-checker merge / jitter (push) Has been cancelled
Details
Run-checker merge / threads_sanitizer_atomic_fallback (push) Has been cancelled
Details
Windows GitHub CI / shared (map[arch:win32 config:--strict-warnings enable-lms no-fips os:windows-2025]) (push) Has been cancelled
Details
Windows GitHub CI / shared (map[arch:win64 config:enable-lms enable-fips no-thread-pool no-quic os:windows-2025]) (push) Has been cancelled
Details
Windows GitHub CI / shared (map[arch:win64 config:enable-lms enable-fips os:windows-2022]) (push) Has been cancelled
Details
Windows GitHub CI / plain (windows-2022) (push) Has been cancelled
Details
Windows GitHub CI / minimal (windows-2022) (push) Has been cancelled
Details
Windows GitHub CI / cygwin (windows-2022, map[arch:win64 config:-DCMAKE_C_COMPILER=gcc --strict-warnings enable-demos no-fips]) (push) Has been cancelled
Details
Windows Compression GitHub CI / zstd (push) Has been cancelled
Details
Windows Compression GitHub CI / brotli (push) Has been cancelled
Details
Something we're missing in our ability to do performance monitoring and diagnosis in openssl is the ability to check for lock contention. While some tools exist for this (valgrinds drd tool for example), they really only measure the time spent in critical sections, not the instances in which they are contended. For that we need something more specific. This patch introduces the REPORT_RWLOCK_CONTENTION macro. When openssl is built with: ./Configure -rdynamic -fno-omit-frame-pointer -DREPORT_RWLOCK_CONTENTION We can now get output sent to a log file that looks like the following: =============== lock blocked on WRITE for 1001 usec /lib64/libasan.so.8(+0x525e7) [0x7fc5ef4525e7] ../../test/quic_radix_test(CRYPTO_THREAD_write_lock+0x151) [0x79d976] ../../test/quic_radix_test() [0x61e6fb] ../../test/quic_radix_test(test_vprintf_stderr+0x15) [0x61e78d] ../../test/quic_radix_test(test_printf_stderr+0x10f) [0x623ba4] ../../test/quic_radix_test(test_fail_message_prefix+0xf7) [0x62436b] ../../test/quic_radix_test() [0x6243b9] ../../test/quic_radix_test(test_info+0x133) [0x624842] ../../test/quic_radix_test() [0x415aad] ../../test/quic_radix_test() [0x417bad] ../../test/quic_radix_test() [0x41b1a9] ../../test/quic_radix_test() [0x41b2eb] ../../test/quic_radix_test() [0x8071fc] /lib64/libasan.so.8(+0x28ee6) [0x7fc5ef428ee6] /lib64/libc.so.6(+0x711d4) [0x7fc5ef27f1d4] /lib64/libc.so.6(+0xf3cec) [0x7fc5ef301cec] ============== Which tells us when a thread blocked because someone else was already holding the lock, how long it was blocked for, and where the blocking call originated from via its backtrace. I think this should enable us to better determine where our contended locking paths are for a given application, and give us some insight on how to fix them. Currently its linux only (as the backtrace functionality only exists there, and there are few warts (like the need to use a file pointer rather than a bio to record the log, see comments), but I think its enough to give us a useful diagnostic tool to help drive some performance improvements. Fixes openssl/project#1237 Reviewed-by: Saša Nedvědický <sashan@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/27884)
This commit is contained in:
parent
8253b58d60
commit
ab021b624f
|
@ -10,12 +10,36 @@
|
|||
/* We need to use the OPENSSL_fork_*() deprecated APIs */
|
||||
#define OPENSSL_SUPPRESS_DEPRECATED
|
||||
|
||||
#if !defined(__GNUC__) || !defined(__ATOMIC_ACQ_REL) || \
|
||||
defined(BROKEN_CLANG_ATOMICS) || defined(OPENSSL_NO_STDIO)
|
||||
/*
|
||||
* we only enable REPORT_RWLOCK_CONTENTION on clang/gcc when we have
|
||||
* atomics available. We do this because we need to use an atomic to track
|
||||
* when we can close the log file. We could use the CRYPTO_atomic_ api
|
||||
* but that requires lock creation which gets us into a bad recursive loop
|
||||
* when we try to initialize the file pointer
|
||||
*/
|
||||
# ifdef REPORT_RWLOCK_CONTENTION
|
||||
# warning "RWLOCK CONTENTION REPORTING NOT SUPPORTED, Disabling"
|
||||
# undef REPORT_RWLOCK_CONTENTION
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef REPORT_RWLOCK_CONTENTION
|
||||
# define _GNU_SOURCE
|
||||
# include <execinfo.h>
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
#include <crypto/cryptlib.h>
|
||||
#include <crypto/sparse_array.h>
|
||||
#include "internal/cryptlib.h"
|
||||
#include "internal/threads_common.h"
|
||||
#include "internal/rcu.h"
|
||||
#ifdef REPORT_RWLOCK_CONTENTION
|
||||
# include "internal/time.h"
|
||||
#endif
|
||||
#include "rcu_internal.h"
|
||||
|
||||
#if defined(__clang__) && defined(__has_feature)
|
||||
|
@ -575,11 +599,81 @@ void ossl_rcu_lock_free(CRYPTO_RCU_LOCK *lock)
|
|||
OPENSSL_free(rlock);
|
||||
}
|
||||
|
||||
# ifdef REPORT_RWLOCK_CONTENTION
|
||||
/*
|
||||
* Normally we would use a BIO here to do this, but we create locks during
|
||||
* library initialization, and creating a bio too early, creates a recursive set
|
||||
* of stack calls that leads us to call CRYPTO_thread_run_once while currently
|
||||
* executing the init routine for various run_once functions, which leads to
|
||||
* deadlock. Avoid that by just using a FILE pointer. Also note that we
|
||||
* directly use a pthread_mutex_t to protect access from multiple threads
|
||||
* to the contention log file. We do this because we want to avoid use
|
||||
* of the CRYPTO_THREAD api so as to prevent recursive blocking reports.
|
||||
*/
|
||||
static FILE *contention_fp = NULL;
|
||||
static CRYPTO_ONCE init_contention_fp = CRYPTO_ONCE_STATIC_INIT;
|
||||
static int rwlock_count = 0;
|
||||
pthread_mutex_t log_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
CRYPTO_THREAD_LOCAL thread_contention_data;
|
||||
|
||||
static void destroy_contention_data(void *data)
|
||||
{
|
||||
OPENSSL_free(data);
|
||||
}
|
||||
|
||||
struct stack_info {
|
||||
unsigned int nptrs;
|
||||
int write;
|
||||
OSSL_TIME start;
|
||||
OSSL_TIME duration;
|
||||
char **strings;
|
||||
};
|
||||
|
||||
# define STACKS_COUNT 32
|
||||
struct stack_traces {
|
||||
int lock_depth;
|
||||
size_t idx;
|
||||
struct stack_info stacks[STACKS_COUNT];
|
||||
};
|
||||
|
||||
static void init_contention_fp_once(void)
|
||||
{
|
||||
# ifdef FIPS_MODULE
|
||||
contention_fp = fopen("lock-contention-log-fips.txt", "w");
|
||||
# else
|
||||
contention_fp = fopen("lock-contention-log.txt", "w");
|
||||
# endif
|
||||
if (contention_fp == NULL)
|
||||
fprintf(stderr, "Contention log file could not be opened, log will not be recorded\n");
|
||||
|
||||
/*
|
||||
* Create a thread local key here to store our list of stack traces
|
||||
* to be printed when we unlock the lock we are holding
|
||||
*/
|
||||
CRYPTO_THREAD_init_local(&thread_contention_data, destroy_contention_data);
|
||||
return;
|
||||
}
|
||||
# endif
|
||||
|
||||
CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void)
|
||||
{
|
||||
# ifdef USE_RWLOCK
|
||||
CRYPTO_RWLOCK *lock;
|
||||
|
||||
# ifdef REPORT_RWLOCK_CONTENTION
|
||||
CRYPTO_THREAD_run_once(&init_contention_fp, init_contention_fp_once);
|
||||
__atomic_add_fetch(&rwlock_count, 1, __ATOMIC_ACQ_REL);
|
||||
{
|
||||
struct stack_info *thread_stack_info;
|
||||
|
||||
thread_stack_info = CRYPTO_THREAD_get_local(&thread_contention_data);
|
||||
if (thread_stack_info == NULL) {
|
||||
thread_stack_info = OPENSSL_zalloc(sizeof(struct stack_traces));
|
||||
CRYPTO_THREAD_set_local(&thread_contention_data, thread_stack_info);
|
||||
}
|
||||
}
|
||||
# endif
|
||||
|
||||
if ((lock = OPENSSL_zalloc(sizeof(pthread_rwlock_t))) == NULL)
|
||||
/* Don't set error, to avoid recursion blowup. */
|
||||
return NULL;
|
||||
|
@ -620,11 +714,75 @@ CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void)
|
|||
return lock;
|
||||
}
|
||||
|
||||
# ifdef REPORT_RWLOCK_CONTENTION
|
||||
static void print_stack_traces(struct stack_traces *traces, FILE *fptr)
|
||||
{
|
||||
unsigned int j;
|
||||
|
||||
pthread_mutex_lock(&log_lock);
|
||||
while (traces != NULL && traces->idx >= 1) {
|
||||
traces->idx--;
|
||||
fprintf(fptr, "lock blocked on %s for %zu usec at time %zu tid %d\n",
|
||||
traces->stacks[traces->idx].write == 1 ? "WRITE" : "READ",
|
||||
ossl_time2us(traces->stacks[traces->idx].duration),
|
||||
ossl_time2us(traces->stacks[traces->idx].start),
|
||||
gettid());
|
||||
if (traces->stacks[traces->idx].strings != NULL) {
|
||||
for (j = 0; j < traces->stacks[traces->idx].nptrs; j++)
|
||||
fprintf(fptr, "%s\n", traces->stacks[traces->idx].strings[j]);
|
||||
free(traces->stacks[traces->idx].strings);
|
||||
} else {
|
||||
fprintf(fptr, "No stack trace available\n");
|
||||
}
|
||||
fprintf(contention_fp, "\n");
|
||||
}
|
||||
pthread_mutex_unlock(&log_lock);
|
||||
}
|
||||
# endif
|
||||
|
||||
# define BT_BUF_SIZE 1024
|
||||
|
||||
__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock)
|
||||
{
|
||||
# ifdef USE_RWLOCK
|
||||
# ifdef REPORT_RWLOCK_CONTENTION
|
||||
struct stack_traces *traces = CRYPTO_THREAD_get_local(&thread_contention_data);
|
||||
|
||||
if (ossl_unlikely(traces == NULL)) {
|
||||
traces = OPENSSL_zalloc(sizeof(struct stack_traces));
|
||||
CRYPTO_THREAD_set_local(&thread_contention_data, traces);
|
||||
if (ossl_unlikely(traces == NULL))
|
||||
return 0;
|
||||
}
|
||||
|
||||
traces->lock_depth++;
|
||||
if (pthread_rwlock_tryrdlock(lock)) {
|
||||
void *buffer[BT_BUF_SIZE];
|
||||
OSSL_TIME start, end;
|
||||
|
||||
start = ossl_time_now();
|
||||
if (!ossl_assert(pthread_rwlock_rdlock(lock) == 0)) {
|
||||
traces->lock_depth--;
|
||||
return 0;
|
||||
}
|
||||
end = ossl_time_now();
|
||||
traces->stacks[traces->idx].duration = ossl_time_subtract(end, start);
|
||||
traces->stacks[traces->idx].nptrs = backtrace(buffer, BT_BUF_SIZE);
|
||||
traces->stacks[traces->idx].strings = backtrace_symbols(buffer,
|
||||
traces->stacks[traces->idx].nptrs);
|
||||
traces->stacks[traces->idx].duration = ossl_time_subtract(end, start);
|
||||
traces->stacks[traces->idx].start = start;
|
||||
traces->stacks[traces->idx].write = 0;
|
||||
traces->idx++;
|
||||
if (traces->idx >= STACKS_COUNT) {
|
||||
fprintf(stderr, "STACK RECORD OVERFLOW!\n");
|
||||
print_stack_traces(traces, contention_fp);
|
||||
}
|
||||
}
|
||||
# else
|
||||
if (!ossl_assert(pthread_rwlock_rdlock(lock) == 0))
|
||||
return 0;
|
||||
# endif
|
||||
# else
|
||||
if (pthread_mutex_lock(lock) != 0) {
|
||||
assert(errno != EDEADLK && errno != EBUSY);
|
||||
|
@ -638,8 +796,43 @@ __owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock)
|
|||
__owur int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock)
|
||||
{
|
||||
# ifdef USE_RWLOCK
|
||||
# ifdef REPORT_RWLOCK_CONTENTION
|
||||
struct stack_traces *traces = CRYPTO_THREAD_get_local(&thread_contention_data);
|
||||
|
||||
if (ossl_unlikely(traces == NULL)) {
|
||||
traces = OPENSSL_zalloc(sizeof(struct stack_traces));
|
||||
CRYPTO_THREAD_set_local(&thread_contention_data, traces);
|
||||
if (ossl_unlikely(traces == NULL))
|
||||
return 0;
|
||||
}
|
||||
|
||||
traces->lock_depth++;
|
||||
if (pthread_rwlock_trywrlock(lock)) {
|
||||
void *buffer[BT_BUF_SIZE];
|
||||
OSSL_TIME start, end;
|
||||
|
||||
start = ossl_time_now();
|
||||
if (!ossl_assert(pthread_rwlock_wrlock(lock) == 0)) {
|
||||
traces->lock_depth--;
|
||||
return 0;
|
||||
}
|
||||
end = ossl_time_now();
|
||||
traces->stacks[traces->idx].nptrs = backtrace(buffer, BT_BUF_SIZE);
|
||||
traces->stacks[traces->idx].strings = backtrace_symbols(buffer,
|
||||
traces->stacks[traces->idx].nptrs);
|
||||
traces->stacks[traces->idx].duration = ossl_time_subtract(end, start);
|
||||
traces->stacks[traces->idx].start = start;
|
||||
traces->stacks[traces->idx].write = 1;
|
||||
traces->idx++;
|
||||
if (traces->idx >= STACKS_COUNT) {
|
||||
fprintf(stderr, "STACK RECORD OVERFLOW!\n");
|
||||
print_stack_traces(traces, contention_fp);
|
||||
}
|
||||
}
|
||||
# else
|
||||
if (!ossl_assert(pthread_rwlock_wrlock(lock) == 0))
|
||||
return 0;
|
||||
# endif
|
||||
# else
|
||||
if (pthread_mutex_lock(lock) != 0) {
|
||||
assert(errno != EDEADLK && errno != EBUSY);
|
||||
|
@ -655,6 +848,18 @@ int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock)
|
|||
# ifdef USE_RWLOCK
|
||||
if (pthread_rwlock_unlock(lock) != 0)
|
||||
return 0;
|
||||
# ifdef REPORT_RWLOCK_CONTENTION
|
||||
{
|
||||
struct stack_traces *traces = CRYPTO_THREAD_get_local(&thread_contention_data);
|
||||
|
||||
if (contention_fp != NULL && traces != NULL) {
|
||||
traces->lock_depth--;
|
||||
assert(traces->lock_depth >= 0);
|
||||
if (traces->lock_depth == 0)
|
||||
print_stack_traces(traces, contention_fp);
|
||||
}
|
||||
}
|
||||
# endif
|
||||
# else
|
||||
if (pthread_mutex_unlock(lock) != 0) {
|
||||
assert(errno != EPERM);
|
||||
|
@ -669,6 +874,20 @@ void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock)
|
|||
{
|
||||
if (lock == NULL)
|
||||
return;
|
||||
# ifdef REPORT_RWLOCK_CONTENTION
|
||||
|
||||
/*
|
||||
* Note: It's possible here that OpenSSL may allocate a lock and immediately
|
||||
* free it, in which case we would erroneously close the contention log
|
||||
* prior to the library going on to do more real work. In practice
|
||||
* that never happens though, and since this is a debug facility
|
||||
* we don't worry about that here.
|
||||
*/
|
||||
if (__atomic_add_fetch(&rwlock_count, -1, __ATOMIC_ACQ_REL) == 0) {
|
||||
fclose(contention_fp);
|
||||
contention_fp = NULL;
|
||||
}
|
||||
# endif
|
||||
|
||||
# ifdef USE_RWLOCK
|
||||
pthread_rwlock_destroy(lock);
|
||||
|
|
Loading…
Reference in New Issue