es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Openssl se atasca en SSL_library_init() al compilar en FreeBSD (clang9 y clang11) cuando se utiliza -fsanitize=address.

Estoy teniendo problemas con mi software al iniciar Openssl en FreeBSD 13 (OpenSSL 1.1.1k-freebsd 25 Mar 2021) cuando uso -fsanitize=address en clang11, el mismo problema ocurre con clang9.

El problema ocurre indiscriminadamente con:
– OpenSSL_add_all_algorithms();
– SSL_library_init()
– SSL_load_error_strings();

Para reproducir el problema:


#include <openssl ssl.h=""> int main(int argc, char *argv[]) { SSL_library_init(); return EXIT_SUCCESS; }

Luego, compila y ejecuta:

clang -lssl -lcrypto -fsanitize=address -o test test.c && ./test

La compilación se realiza correctamente, pero el programa se bloquea en SSL_library_init() usando el 100% de la CPU. Una vez que se elimina -fsanitize=address, todo funciona como se esperaba.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para que el software se quede bloqueado al iniciar OpenSSL en FreeBSD 13

    Si tu software se queda bloqueado al iniciar OpenSSL en FreeBSD 13 (OpenSSL 1.1.1k-freebsd 25 Mar 2021) mientras usas -fsanitize=address en clang11 o clang9, puedes seguir estos pasos para solucionar el problema:

    1. El problema ocurre indistintamente con OpenSSL_add_all_algorithms(), SSL_library_init(), y SSL_load_error_strings(). Por lo tanto, debes abordar todos ellos.
    2. Intenta incluir estos encabezados al comienzo de tu código:

     #include  <sys types.h=""> 
     #include  <sys socket.h=""> 
     #include  <netinet in.h=""> 
     #include  <arpa inet.h=""> 
     #include  <netdb.h> 
     #include  <openssl bio.h=""> 
    
    1. Asegúrate de que se estén incluyendo todas las bibliotecas necesarias. Puedes intentar compilar tu código con estas banderas:
    clang -lssl -lcrypto -fsanitize=address -o test test.c
    
    1. Elimina la bandera -fsanitize=address del comando de compilación. Esta bandera podría estar causando el problema. Puedes compilar tu código sin esta bandera:
    clang -lssl -lcrypto -o test test.c
    
    1. Una vez que hayas seguido los pasos anteriores, tu software debería iniciar sin quedarse bloqueado.

    Esperamos que estos pasos te ayuden a solucionar el problema relacionado con que el software se quede bloqueado al iniciar OpenSSL en FreeBSD 13.</netdb.h>

Comments are closed.