[racket] Racket spamming with "undefined symbol"

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Tue Oct 2 11:41:42 EDT 2012

It looks like this is a result of the way that "libssl" is linked on
OpenBSD. In particular, it seems to not refer to "libcrypto" directly,
and instead depends on "libcrypto" supplying it exports in the global
namespace. Although the Racket `openssl' library does load "libcrypto"
in advance, it does so without making exported symbols global within
the process, and so "libssl" doesn't see them when it's loaded.

The `openssl' library could open "libcrypto" in a way that makes its
exports global, but I'm pretty sure that's the wrong thing for all
other platforms that I've tried. Also, the fact that you can start
DrRacket suggests that libraries such as Gtk (which I do not have
installed in my OpenBSD image) are linked in the usual way.

Is special-casing "libcrypto" on OpenBSD really the right thing?

At Tue, 2 Oct 2012 08:34:55 -0400, Lars Engblom wrote:
> Environment: OpenBSD 5.1 amd64
> 
> Problem: Many racket programs spams with "undefined symbol" for openssl. 
> This makes it almost impossible to to read outputs in the console.
> 
> **$ drracket
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_EXTENSION_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'X509_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'OCSP_RESPID_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_DigestInit'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BIO_find_type'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_enc_null'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_CIPHER_CTX_init'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BUF_strndup'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_dup'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'COMP_compress_block'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_rc2_cbc'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'sk_new_null'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'lh_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'd2i_X509_EXTENSIONS'
> /usr/local/bin/gracket:/usr/lib/l/usr/local/bin/gracket:/usr/lib/libssl.so.17.1:
>  
> undefined symbol 'EVP_PKEY_bits'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'EVP_md5'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ASN1_object_size'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_get_cipherbyname'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'PEM_ASN1_read_bio'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BIO_dump_indent'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EC_KEY_get0_public_key'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'EVP_rc4'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_add_cipher'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ASN1_get_object'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_rc2_40_cbc'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_MD_CTX_destroy'
> /usr/local/bin/gra/usr/local/bin/gracket:/usr/lib/libssl.so.17.1: 
> undefined symbol 'COMP_zlib'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ERR_load_crypto_strings'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_DigestSignFinal'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BUF_MEM_grow'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'lh_insert'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_STORE_load_locations'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'd2i_ASN1_OCTET_STRING'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_encrypt_init'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BIO_test_flags'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'lh_delete'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'CRYPTO_malloc'
> /usr/lo/usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_EXTENSION_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'X509_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'OCSP_RESPID_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_DigestInit'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BIO_find_type'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_enc_null'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_CIPHER_CTX_init'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BUF_strndup'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_dup'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'COMP_compress_block'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_rc2_cbc'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'sk_new_null'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'lh_free'
> /usr/local/bin/gracket:/usr/lib/libs/usr/local/bin/gracket:/usr/lib/libssl.so.17
> .1: 
> undefined symbol 'BIO_s_socket'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_decrypt'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_VERIFY_PARAM_set_purpose'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'asn1_add_error'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ENGINE_get_ssl_client_cert_function'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BUF_MEM_grow_clean'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'pqueue_next'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_DigestSignInit'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'd2i_RSAPrivateKey'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_derive_set_peer'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'sk_num'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_CipherInit_ex'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_size'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_add_digest'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EC_KEY_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_EncryptUpdate'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ASN1_const_check_infinite_end'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_CTX_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_MD_CTX_create'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'i2d_OCSP_RESPID'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'BIO_push'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'CRYPTO_mem_ctrl'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'BIO_s_mem'
> /usr/local/bin/usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined 
> symbol 'X509_EXTENSION_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'X509_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'OCSP_RESPID_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_DigestInit'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BIO_find_type'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_enc_null'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_CIPHER_CTX_init'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BUF_strndup'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_dup'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'COMP_compress_block'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_rc2_cbc'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'sk_new_null'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'lh_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'd2i_X509_EXTENSIONS'
> /usr/local/bin/gracket:/usr/lib/l/usr/local/bin/gracket:/usr/lib/libssl.so.17.1:
>  
> undefined symbol 'X509_STORE_new'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'HMAC_Final'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'HMAC_Init_ex'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_bits'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'EVP_md5'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ASN1_object_size'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_get_cipherbyname'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'PEM_ASN1_read_bio'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BIO_dump_indent'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EC_KEY_get0_public_key'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'EVP_rc4'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_add_cipher'
> /usr/local/bin/gracket:/usr/l/usr/local/bin/gracket:/usr/lib/libssl.so.17.1: 
> undefined symbol 'EC_KEY_get0_private_key'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_decrypt_init'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_CTX_ctrl'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_new_mac_key'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EC_GROUP_new_by_curve_name'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'OPENSSL_DIR_end'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_sign_init'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_des_ede3_cbc'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_STORE_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'COMP_zlib'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ERR_load_crypto_strings'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined 
> symb/usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_EXTENSION_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'X509_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'OCSP_RESPID_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_DigestInit'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BIO_find_type'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_enc_null'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_CIPHER_CTX_init'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BUF_strndup'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_NAME_dup'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'COMP_compress_block'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_rc2_cbc'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'sk_new_null'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'lh_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'd2i_X509_EXTENSIONS'
> /usr/local/bin/gracket:/usr/lib/l/usr/local/bin/gracket:/usr/lib/libssl.so.17.1:
>  
> undefined symbol 'X509_STORE_new'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'HMAC_Final'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'HMAC_Init_ex'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_bits'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'EVP_md5'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ASN1_object_size'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_get_cipherbyname'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'PEM_ASN1_read_bio'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BIO_dump_indent'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EC_KEY_get0_public_key'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'EVP_rc4'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_add_cipher'
> /usr/local/bin/gracket:/usr/l/usr/local/bin/gracket:/usr/lib/libssl.so.17.1: 
> undefined symbol 'EVP_PKEY_new_mac_key'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EC_GROUP_new_by_curve_name'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'OPENSSL_DIR_end'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_PKEY_sign_init'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_des_ede3_cbc'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_STORE_free'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'COMP_zlib'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'ERR_load_crypto_strings'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'EVP_DigestSignFinal'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'BUF_MEM_grow'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 'lh_insert'
> /usr/local/bin/gracket:/usr/lib/libssl.so.17.1: undefined symbol 
> 'X509_STORE_load_l
> 
> Regards,
>   Lasse
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users

Posted on the users mailing list.