Code Monkey home page Code Monkey logo

fast_tls's Introduction

Fast TLS

CI Coverage Status Hex version

Fast TLS is a native TLS / SSL driver for Erlang / Elixir. It is based on OpenSSL, a proven and efficient TLS implementation.

It is designed for efficiency, speed and compliance.

Installation

Dependencies

Fast TLS depends on OpenSSL v1.0+. You need OpenSSL development headers to build it. You can check your current OpenSSL version with openssl version.

Generic build

You can trigger build with:

./configure && make

OSX build example

On macOS the system copy of OpenSSL is usually too old, so you need to install a newer OpenSSL version.

You can install OpenSSL with Homebrew:

brew install openssl

You can then export environment variables to use OpenSSL as installed by Homebrew, before issuing compilation commands:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CFLAGS="-I/usr/local/opt/openssl/include/"
export CPPFLAGS="-I/usr/local/opt/openssl/include/"

./configure && make

Development

Test

Unit test

You can run eunit test with the command:

make test

fast_tls's People

Contributors

alexeyshch avatar arcusfelis avatar badlop avatar costpermille avatar cybertailor avatar edwardbetts avatar lemenkov avatar mremond avatar msantos avatar nelsonvides avatar nosnilmot avatar prefiks avatar santosh653 avatar strugee avatar triaxx avatar vitalyster avatar wcy123 avatar weiss avatar zinid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fast_tls's Issues

referring to built-in type queue as a remote type

When compiling the package 1.6 on ubuntu i have the error :

==> p1_utils (compile)
src/p1_queue.erl:22: referring to built-in type queue as a remote type; please take out the module name
make: *** [src] Error 1

I don't see what i can do to resolve it.

Eliptic Curve support causes compile failure

On a Redhat 7.2 system, while trying to compile MongooseIM which depends upon:

{fast_tls, ".*", {git, "git://github.com/processone/fast_tls.git", {tag, "1.0.7"}}},

I get the following error:

   ==> fast_tls (compile)                                                                                       
Compiling /common/MongooseIM/deps/fast_tls/c_src/fast_tls_drv.c                                              
In file included from /usr/include/openssl/ecdsa.h:68:0,                                                     
                 from /usr/include/openssl/x509.h:87,                                                        
                 from /usr/include/openssl/ssl.h:156,                                                        
                 from /common/MongooseIM/deps/fast_tls/c_src/fast_tls_drv.c:22:                              
/usr/include/openssl/ec.h:82:2: error: #error EC is disabled.                                                
 #error EC is disabled.                                                                                      
  ^                                                                                                          
ERROR: compile failed while processing /common/MongooseIM/deps/fast_tls: rebar_abort                         
make: *** [rel] Error 1

Eliptic curve support has always been an issue for Erlang, I've been through this a ton of times on OSX (compiling Erlang from source), but not had to deal with it in a dependency before. I've got the following dependencies installed:

openssl-1.0.1e-60.el7.x86_64            
openssl-libs-1.0.1e-51.el7_2.7.x86_64   
openssl-devel-1.0.1e-60.el7.x86_64      
openssl-libs-1.0.1e-60.el7.x86_64       

Any suggestions?

cafile?

is there a way to pass a ca to the socket initialization?

configure: error: OpenSSL 'ssl' library was not found

Using:
Mac Os 10.14

I am getting the below error while trying to build fast_tls:

$ sudo ./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether make sets $(MAKE)... yes
checking for an ANSI C-conforming const... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for ANSI C header files... (cached) yes
checking for erl... /usr/local/bin/erl
checking for erlc... /usr/local/bin/erlc
checking for SSL_free in -lssl... no
checking for SHA1_Init in -lcrypto... no
checking openssl/ssl.h usability... yes
checking openssl/ssl.h presence... yes
checking for openssl/ssl.h... yes
checking openssl/err.h usability... yes
checking openssl/err.h presence... yes
checking for openssl/err.h... yes
checking openssl/sha.h usability... yes
checking openssl/sha.h presence... yes
checking for openssl/sha.h... yes
checking openssl/opensslv.h usability... yes
checking openssl/opensslv.h presence... yes
checking for openssl/opensslv.h... yes
configure: error: OpenSSL 'ssl' library was not found

Segmentation fault

macOS 10.13.1

erlang 19.3 from brew

run make test

Process:               beam.smp [9506]
Path:                  /usr/local/Cellar/erlang@19/19.3/lib/erlang/erts-8.3/bin/beam.smp
Identifier:            beam.smp
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        ??? [9498]
Responsible:           beam.smp [9506]
User ID:               501

Date/Time:             2017-11-20 20:16:50.107 +0300
OS Version:            Mac OS X 10.13.1 (17B48)
Report Version:        12
Anonymous UUID:        C2C39529-4A29-695C-B753-5F7C2A893A09

Sleep/Wake UUID:       E066ACA1-E473-4541-9389-D020BBD8059E

Time Awake Since Boot: 170000 seconds
Time Since Wake:       29000 seconds

System Integrity Protection: enabled

Crashed Thread:        13  1_scheduler

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       EXC_I386_GPFLT
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [0]

Thread 0:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff744eb142 __select + 10
1   beam.smp                      	0x000000001b77401f erts_sys_main_thread + 185
2   beam.smp                      	0x000000001b6352b7 erl_start + 6740

Thread 1:: sys_sig_dispatc
0   libsystem_kernel.dylib        	0x00007fff744ec592 read + 10
1   beam.smp                      	0x000000001b7745cb signal_dispatcher_thread_func + 69
2   beam.smp                      	0x000000001b7d92db thr_wrapper + 143
3   libsystem_pthread.dylib       	0x00007fff746256c1 _pthread_body + 340
4   libsystem_pthread.dylib       	0x00007fff7462556d _pthread_start + 377
5   libsystem_pthread.dylib       	0x00007fff74624c5d thread_start + 13

Thread 2:: sys_msg_dispatc
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d7454 ethr_cond_wait + 9
3   beam.smp                      	0x000000001b6531bd erts_smp_cnd_wait + 73

Thread 3:: async_1
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd42e30 0 + 466890288

Thread 4:: async_2
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd42d30 0 + 466890032

Thread 5:: async_3
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd42ed0 0 + 466890448

Thread 6:: async_4
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd42db0 0 + 466890160

Thread 7:: async_5
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd42e50 0 + 466890320

Thread 8:: async_6
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd43060 0 + 466890848

Thread 9:: async_7
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd42fe0 0 + 466890720

Thread 10:: async_8
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd42e60 0 + 466890336

Thread 11:: async_9
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd43080 0 + 466890880

Thread 12:: async_10
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b6e0dc2 async_main + 548
4   ???                           	0x000000001bd42f70 0 + 466890608

Thread 13 Crashed:: 1_scheduler
0   libboringssl.dylib            	0x00007fff7237e3a4 ssl_create_cipher_list + 105
1   libboringssl.dylib            	0x00007fff7237f480 SSL_CTX_new + 252
2   fast_tls.so                   	0x000000001b9a47f7 open_nif + 1863 (fast_tls.c:565)
3   beam.smp                      	0x000000001b603b37 process_main + 27442
4   ???                           	0x000000001c501ec0 0 + 475012800

Thread 14:: 2_scheduler
0   libsystem_kernel.dylib        	0x00007fff744eb142 __select + 10
1   beam.smp                      	0x000000001b7d9a90 wait__ + 876
2   beam.smp                      	0x000000001b68c78c erts_schedule + 19779

Thread 15:: 3_scheduler
0   libsystem_kernel.dylib        	0x00007fff744eb142 __select + 10
1   beam.smp                      	0x000000001b7d9a90 wait__ + 876
2   beam.smp                      	0x000000001b68c78c erts_schedule + 19779

Thread 16:: 4_scheduler
0   libsystem_kernel.dylib        	0x00007fff744eb142 __select + 10
1   beam.smp                      	0x000000001b7d9a90 wait__ + 876
2   beam.smp                      	0x000000001b68c78c erts_schedule + 19779

Thread 17:: aux
0   libsystem_kernel.dylib        	0x00007fff744eae7e __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff74626662 _pthread_cond_wait + 732
2   beam.smp                      	0x000000001b7d97c0 wait__ + 156
3   beam.smp                      	0x000000001b685290 aux_thread + 704

Thread 13 crashed with X86 Thread State (64-bit):
  rax: 0x00007fcf6a800000  rbx: 0xffffffffffffffed  rcx: 0x0000000000000001  rdx: 0x00007fcf6a800000
  rdi: 0x00007fffad2dcf80  rsi: 0x00000000007f7e00  rbp: 0x00000000b048d150  rsp: 0x00000000b048d100
   r8: 0x00007fcf6aff7e00   r9: 0x0000000000000003  r10: 0x9e3779b97f4a7c55  r11: 0x0000000000000007
  r12: 0x00007fffad2dcf80  r13: 0x000000001e3aad53  r14: 0x0000000000000000  r15: 0x0000000000000000
  rip: 0x00007fff7237e3a4  rfl: 0x0000000000010246  cr2: 0x000000001e3aadbb
  
Logical CPU:     2
Error Code:      0x00000000
Trap Number:     13


Binary Images:
        0x1b5fa000 -         0x1b85fff7 +beam.smp (0) <6EB31345-0D00-326B-8B10-586BAC73C31C> /usr/local/Cellar/erlang@19/19.3/lib/erlang/erts-8.3/bin/beam.smp
        0x1b96f000 -         0x1b976fff +crypto.so (0) <CC2F6AD1-409E-3BE1-B461-3DA18F16DE43> /usr/local/Cellar/erlang@19/19.3/lib/erlang/lib/crypto-3.7.3/priv/lib/crypto.so
        0x1b9a0000 -         0x1b9a0fff +crypto_callback.so (0) <84AE13AD-F078-3A1B-A651-8325E8FBC287> /usr/local/Cellar/erlang@19/19.3/lib/erlang/lib/crypto-3.7.3/priv/lib/crypto_callback.so
        0x1b9a3000 -         0x1b9a6fff +fast_tls.so (0) <CAC22D31-ED79-3856-BB2D-92211A424CBD> /Users/USER/*/fast_tls.so
        0x1dc80000 -         0x1ddf0c87 +libcrypto.1.0.0.dylib (0) <BF243F4F-1DA4-3F3D-AC5D-3403C0750E95> /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
        0x1e394000 -         0x1e3d5fff +libssl.1.0.0.dylib (0) <DD45B63B-36ED-31CF-B181-A30FF366A6B1> /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
        0x1e710000 -         0x1e75a98f  dyld (519.2.1) <CD85EFBA-B9D6-3FD5-B777-A23B2DDEF192> /usr/lib/dyld
    0x7fff4935e000 -     0x7fff4935efff  com.apple.Accelerate (1.11 - Accelerate 1.11) <5AA750F5-D633-32BA-B7F3-4F651FB1761E> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff49376000 -     0x7fff49874fc3  com.apple.vImage (8.1 - ???) <310976EE-E12D-39D7-8F58-6EE924E08576> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff49875000 -     0x7fff499cffcb  libBLAS.dylib (1211.20.1) <B70FC2EE-0859-39DB-927E-0020AE96907F> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    0x7fff499d0000 -     0x7fff499fdfef  libBNNS.dylib (32) <9CA15DC6-004A-32FD-BFCA-F5D488012C43> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
    0x7fff499fe000 -     0x7fff49dbeff7  libLAPACK.dylib (1211.20.1) <04B937A4-D0E7-33C8-A1C3-2724AD4FAB2F> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff49dbf000 -     0x7fff49dd4ff7  libLinearAlgebra.dylib (1211.20.1) <355307DE-82A5-32A3-8AC6-603D90E99601> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
    0x7fff49dd5000 -     0x7fff49ddaff3  libQuadrature.dylib (3) <3D6BF66A-55B2-3692-BAC7-DEB0C676ED29> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
    0x7fff49ddb000 -     0x7fff49e39fff  libSparse.dylib (79.1.1) <7AD0F8A8-FD36-36FE-B83D-58648EBD0027> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
    0x7fff49e3a000 -     0x7fff49e4dfff  libSparseBLAS.dylib (1211.20.1) <9C7AB67B-5BFD-3571-8D90-312D1DB10098> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
    0x7fff49e4e000 -     0x7fff49ffafc3  libvDSP.dylib (622.20.8) <6FFCA52B-7D60-326A-ADF2-601F39A8685A> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
    0x7fff49ffb000 -     0x7fff4a0abfef  libvMisc.dylib (622.20.8) <54F90047-879F-3260-8604-6E453149B49E> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff4a0ac000 -     0x7fff4a0acfff  com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <8A96A8ED-7B88-3D17-8D17-41D224E0EC90> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff4a396000 -     0x7fff4b1f1ff7  com.apple.AppKit (6.9 - 1561.10.101) <AC5C259A-615C-3929-8586-0BC920696AFA> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fff4b243000 -     0x7fff4b243fff  com.apple.ApplicationServices (48 - 50) <3EB38526-9975-36C9-BADC-F9019A608267> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
    0x7fff4b244000 -     0x7fff4b2aafff  com.apple.ApplicationServices.ATS (377 - 445) <2303339C-5E2A-37DB-B2B0-E4E5DA9121E5> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
    0x7fff4b343000 -     0x7fff4b465ff7  libFontParser.dylib (222.1.1) <56C57A24-6A6A-3F32-8E40-5BFA4DA4B04D> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
    0x7fff4b466000 -     0x7fff4b4b0ff7  libFontRegistry.dylib (221) <A22F82C0-B4FE-3DB5-B968-79B28257DF2F> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
    0x7fff4b5f2000 -     0x7fff4b5f6ff3  com.apple.ColorSyncLegacy (4.13.0 - 1) <7C8AD42D-5A89-3BA6-B55D-374D9267E939> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
    0x7fff4b696000 -     0x7fff4b6e8ff7  com.apple.HIServices (1.22 - 622) <2E83CD6F-ED98-3C29-BD0A-8525E38AB5DB> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
    0x7fff4b6e9000 -     0x7fff4b6f7fff  com.apple.LangAnalysis (1.7.0 - 1.7.0) <71A9C815-AC55-3E36-A618-F6778F5119AD> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
    0x7fff4b6f8000 -     0x7fff4b744fff  com.apple.print.framework.PrintCore (13 - 503) <BC23C22A-7691-3BD4-8013-BAAE3A44763C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
    0x7fff4b745000 -     0x7fff4b77ffff  com.apple.QD (3.12 - 403) <38D8106A-4FFA-3FE9-9999-714CADD7EE9C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
    0x7fff4b780000 -     0x7fff4b78cfff  com.apple.speech.synthesis.framework (7.0.14 - 7.0.14) <C8AACF93-9FF5-32FE-A448-E174702509FA> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x7fff4b78d000 -     0x7fff4ba15ff7  com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) <6894F95E-63B4-3484-A428-2963FB9BFEF9> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x7fff4ba17000 -     0x7fff4ba17fff  com.apple.audio.units.AudioUnit (1.14 - 1.14) <FE0BC0EC-6353-34B5-8479-B33D6ED7EE5B> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x7fff4bd2d000 -     0x7fff4c091fff  com.apple.CFNetwork (889.9 - 889.9) <AD7E1066-F856-314B-A0E0-3CDA012F4AFF> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff4c0a6000 -     0x7fff4c0a6fff  com.apple.Carbon (158 - 158) <C34E5FF0-4FDA-35F1-85C2-FDAC4EDE8331> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fff4c0a7000 -     0x7fff4c0aaffb  com.apple.CommonPanels (1.2.6 - 98) <39C8EBA3-EEB2-335B-8A88-D6C64BAA112F> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
    0x7fff4c0ab000 -     0x7fff4c3afff7  com.apple.HIToolbox (2.1.1 - 909.1) <39EA833C-2FAD-33B9-BB99-7BDCBCE4B08A> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
    0x7fff4c3b0000 -     0x7fff4c3b3ffb  com.apple.help (1.3.8 - 64) <18D02016-119A-33E8-AEB0-E9466BA4AD56> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
    0x7fff4c3b4000 -     0x7fff4c3b9fff  com.apple.ImageCapture (9.0 - 9.0) <2DE590E5-DF0E-3962-A2BE-06EBC79B3D72> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
    0x7fff4c3ba000 -     0x7fff4c44fffb  com.apple.ink.framework (10.9 - 220) <D8AECAE3-9FD2-32E3-B659-026F33650BB2> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
    0x7fff4c450000 -     0x7fff4c46aff7  com.apple.openscripting (1.7 - 174) <1CF64DD1-144D-3702-A728-1F476E1A00ED> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
    0x7fff4c48b000 -     0x7fff4c48cfff  com.apple.print.framework.Print (12 - 267) <E4CBAAFC-9045-38AC-9F93-8C931DDED9D8> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
    0x7fff4c48d000 -     0x7fff4c48fff7  com.apple.securityhi (9.0 - 55006) <E7668200-B4CB-3612-96B8-D57E94077787> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
    0x7fff4c490000 -     0x7fff4c496fff  com.apple.speech.recognition.framework (6.0.3 - 6.0.3) <1F10ED1F-12C7-39AC-88A0-43A1338F9316> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
    0x7fff4c5a2000 -     0x7fff4c5a2fff  com.apple.Cocoa (6.11 - 22) <E2A920D1-E3DE-3904-A53E-B86AB2F4C7C5> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
    0x7fff4c5b0000 -     0x7fff4c669ff7  com.apple.ColorSync (4.13.0 - 544) <E959C37C-099B-3DD8-AB3B-67F0625939F7> /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
    0x7fff4c7f4000 -     0x7fff4c887ff7  com.apple.audio.CoreAudio (4.3.0 - 4.3.0) <505A5EFB-6BCD-3E94-936F-1722C67F608E> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x7fff4c8ee000 -     0x7fff4c917ffb  com.apple.CoreBluetooth (1.0 - 1) <942F88A5-AD68-3359-90D5-6F1A3311C51A> /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
    0x7fff4c918000 -     0x7fff4cc69feb  com.apple.CoreData (120 - 847.1) <9B5E7B0B-1957-3D56-99CA-6422123D300C> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x7fff4cc6a000 -     0x7fff4cd35fff  com.apple.CoreDisplay (1.0 - 79.8) <094FFB53-C609-3925-B933-CCF0AD2B695B> /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
    0x7fff4cd36000 -     0x7fff4d1d5fef  com.apple.CoreFoundation (6.9 - 1445.12) <C01736CF-D425-316C-A984-C8AF46EAD8CD> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff4d1d7000 -     0x7fff4d7e3fef  com.apple.CoreGraphics (2.0 - 1125.3.4) <AF7EE79B-5FA8-3C8C-B537-B3F35D0904AA> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
    0x7fff4d7e5000 -     0x7fff4daddffb  com.apple.CoreImage (13.0.0 - 579.1.3) <92A69430-A484-37F7-B9D1-D065137D34EF> /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
    0x7fff4de77000 -     0x7fff4de77fff  com.apple.CoreServices (822.9 - 822.9) <F56B0D43-BD84-3214-AB01-346BD33C9583> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff4de78000 -     0x7fff4deecff7  com.apple.AE (733 - 733) <09481487-37C2-359E-9E9A-7393B7C8643B> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff4deed000 -     0x7fff4e1c4ff7  com.apple.CoreServices.CarbonCore (1178.2 - 1178.2) <A1FE74F8-953B-371E-A8AC-E87B30FB79C6> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff4e1c5000 -     0x7fff4e1f9ff7  com.apple.DictionaryServices (1.2 - 284) <3FCEE280-8DD0-37C9-BFD4-7BA87AAFC8EF> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff4e1fa000 -     0x7fff4e202ff3  com.apple.CoreServices.FSEvents (1239 - 1239) <7BBC5CB7-DBC8-316B-99B0-781827159A2F> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
    0x7fff4e203000 -     0x7fff4e3bafff  com.apple.LaunchServices (822.9 - 822.9) <E181C2C2-7283-3653-8E19-DA69EBE529E7> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff4e3bb000 -     0x7fff4e46aff3  com.apple.Metadata (10.7.0 - 1191.1) <0BB6AAA9-4185-3DBF-A93C-1787353FEBC7> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff4e46b000 -     0x7fff4e4c8ff7  com.apple.CoreServices.OSServices (822.9 - 822.9) <C91ABD5F-1FE3-3108-AB5E-BF90D56D1F55> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff4e4c9000 -     0x7fff4e537fff  com.apple.SearchKit (1.4.0 - 1.4.0) <14053F88-2C76-35CA-9FC1-2A9BC0B63F88> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff4e538000 -     0x7fff4e55cffb  com.apple.coreservices.SharedFileList (71.2 - 71.2) <41713411-2729-39F9-951A-DE39A00495F0> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
    0x7fff4e7f6000 -     0x7fff4e944ff3  com.apple.CoreText (352.0 - 578.7) <B47CD5A5-47E8-3B07-A37D-A82E389405C4> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
    0x7fff4e945000 -     0x7fff4e97ffff  com.apple.CoreVideo (1.8 - 278.0) <9C66B618-8582-3731-A0F1-36FDD730FB07> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x7fff4e980000 -     0x7fff4ea0affb  com.apple.framework.CoreWLAN (13.0 - 1335) <CC027E31-E925-3682-9E47-93DBBB4F8445> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
    0x7fff4ec84000 -     0x7fff4ec89fff  com.apple.DiskArbitration (2.7 - 2.7) <44836CE9-A9ED-3017-972A-7A0A3D6B472B> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff4ee4a000 -     0x7fff4f20dfff  com.apple.Foundation (6.9 - 1443.14) <70D20A4F-74BC-34D6-8451-DF943C5AA42F> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff4f27d000 -     0x7fff4f2adff7  com.apple.GSS (4.0 - 2.0) <EA4ADB9D-FB33-3D20-BE11-7F833988FDD9> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
    0x7fff4f3be000 -     0x7fff4f4c1ffb  com.apple.Bluetooth (6.0.0 - 6.0.1f1) <7C3FBAE9-F2A8-319E-88D9-16250E0B36F9> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
    0x7fff4f521000 -     0x7fff4f5bcfff  com.apple.framework.IOKit (2.0.2 - 1445.20.1) <3316799C-14BC-366E-8A58-67485E5CD69E> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff4f5be000 -     0x7fff4f5c4ffb  com.apple.IOSurface (209 - 209) <507843CC-3C5D-3548-B86D-4564123F3993> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff4f619000 -     0x7fff4f78cfe7  com.apple.ImageIO.framework (3.3.0 - 1694.5) <45F9DB28-AF9E-388A-AA8C-B1D384A5C46E> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
    0x7fff4f78d000 -     0x7fff4f791ffb  libGIF.dylib (1694.5) <91E5099B-E916-31DC-B11B-BA0D097C6492> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x7fff4f792000 -     0x7fff4f879fef  libJP2.dylib (1694.5) <149E77A9-FECC-3716-8CE2-7853D038EE62> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
    0x7fff4f87a000 -     0x7fff4f89dff7  libJPEG.dylib (1694.5) <9DBAEA95-BED3-3D4B-9BFF-FE6D9F6238D6> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x7fff4fb79000 -     0x7fff4fb9ffeb  libPng.dylib (1694.5) <8F65CAA8-48FC-37BA-AF66-C3261900C60A> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x7fff4fba0000 -     0x7fff4fba2ffb  libRadiance.dylib (1694.5) <7BF9D344-799F-3DFA-AB0C-666282CADA41> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x7fff4fba3000 -     0x7fff4fbf0fff  libTIFF.dylib (1694.5) <0494DA5F-610E-3C8A-A5F1-C43AD585F403> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff50927000 -     0x7fff50940ff7  com.apple.Kerberos (3.0 - 1) <CAF075C0-4C24-3ACE-9AE6-77BEFDEA3622> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
    0x7fff51285000 -     0x7fff51304ff7  com.apple.Metal (123.3.5 - 123.3.5) <C158CADB-0722-37D8-84CE-B6B4E80B9768> /System/Library/Frameworks/Metal.framework/Versions/A/Metal
    0x7fff5131f000 -     0x7fff51334fff  com.apple.MetalPerformanceShaders.MPSCore (1.0 - 1) <D3685A4F-533C-39A6-80B6-7CCA49234329> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore
    0x7fff51335000 -     0x7fff5139ffef  com.apple.MetalPerformanceShaders.MPSImage (1.0 - 1) <50B454D2-5D46-394E-B089-AC3242FEA9A2> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage
    0x7fff513a0000 -     0x7fff513bffff  com.apple.MetalPerformanceShaders.MPSMatrix (1.0 - 1) <0D5F11B0-476D-34EB-8CD0-491BEDA5E4F2> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
    0x7fff513c0000 -     0x7fff51436ff7  com.apple.MetalPerformanceShaders.MPSNeuralNetwork (1.0 - 1) <A4E950B8-380B-3561-8EA4-5C07C3F43816> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
    0x7fff51437000 -     0x7fff51437ff7  com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) <02E0B95E-1F7C-317A-AF09-149E01D2D641> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
    0x7fff52442000 -     0x7fff5244effb  com.apple.NetFS (6.0 - 4.0) <81B22AE7-7094-30F2-BF41-84CA05EDB95B> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
    0x7fff552ae000 -     0x7fff552fbffb  com.apple.opencl (2.8.11 - 2.8.11) <5C8205DF-43F1-3189-93DE-2E340C9A53B8> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
    0x7fff552fc000 -     0x7fff55318ffb  com.apple.CFOpenDirectory (10.13 - 207) <33490A70-08A6-3849-BE79-CAE90E298872> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff55319000 -     0x7fff55324fff  com.apple.OpenDirectory (10.13 - 207) <3081EE64-A69D-3153-8433-C9333D416BF6> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff564a3000 -     0x7fff564a5fff  libCVMSPluginSupport.dylib (16.2.1) <1CFE33C5-137B-32EF-8507-5A5484115B55> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
    0x7fff564a6000 -     0x7fff564a9ff7  libCoreFSCache.dylib (160.9) <FF64C4CC-F262-3176-B06A-632C47CD636B> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
    0x7fff564aa000 -     0x7fff564aefff  libCoreVMClient.dylib (160.9) <390D5A60-55BB-3D7B-928B-52BFCA05FD07> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
    0x7fff564af000 -     0x7fff564b7fff  libGFXShared.dylib (16.2.1) <8A527D8B-1111-3E1B-8083-D5BBB8D15AA5> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
    0x7fff564b8000 -     0x7fff564c3fff  libGL.dylib (16.2.1) <1C64ADD9-1BF9-3ED9-A492-077D7A322917> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x7fff564c4000 -     0x7fff564fffe7  libGLImage.dylib (16.2.1) <81442ED9-FA9E-32EF-9597-B8EDC29564D1> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
    0x7fff5666d000 -     0x7fff566abffb  libGLU.dylib (16.2.1) <D9E8DAE9-51E8-3237-BCD5-D554C823738B> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x7fff57023000 -     0x7fff57031ffb  com.apple.opengl (16.2.1 - 16.2.1) <66266ABC-2655-337C-AC64-955A16A8FCBB> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff57e85000 -     0x7fff580c8fff  com.apple.QuartzCore (1.11 - 574.10.7) <556DE20F-0F03-31C9-B5EC-CDE82D8879BA> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x7fff588fd000 -     0x7fff58c18ff7  com.apple.security (7.0 - 58286.20.16) <ED7F62C8-4E61-34E0-9F1B-59DE4B8BD334> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff58c19000 -     0x7fff58ca2ff7  com.apple.securityfoundation (6.0 - 55185.1.1) <4048FFF8-A5BE-37FE-AAA8-4E00E4C733BE> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff58cd1000 -     0x7fff58cd4ffb  com.apple.xpc.ServiceManagement (1.0 - 1) <480072A0-FCE2-3A90-86D9-BAA21EC33F3F> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
    0x7fff59078000 -     0x7fff590e8ffb  com.apple.SystemConfiguration (1.17 - 1.17) <77EB81C7-7017-3777-BCB7-8DD078ABE25D> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff5bcad000 -     0x7fff5bd38feb  com.apple.APFS (1.0 - 1) <38DC700C-4232-3EE1-B092-13800457678E> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
    0x7fff5c91c000 -     0x7fff5c944fff  com.apple.framework.Apple80211 (13.0 - 1335) <335EE09E-40E4-344C-AED9-5E59E309F8FE> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
    0x7fff5c946000 -     0x7fff5c955fef  com.apple.AppleFSCompression (96.1.1 - 1.0) <B24CC74D-7B69-3313-9DC1-8E8B3E9EEBA2> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
    0x7fff5ca8f000 -     0x7fff5cad7fff  com.apple.AppleJPEG (1.0 - 1) <DCAB2588-8879-3A64-87EA-EAA770BA1ADB> /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
    0x7fff5cb12000 -     0x7fff5cb3afff  com.apple.applesauce (1.0 - ???) <32FF4851-2F68-35BA-835F-91856A20C323> /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
    0x7fff5d2f9000 -     0x7fff5d300ff7  com.apple.coreservices.BackgroundTaskManagement (1.0 - 57.1) <7F54A7A8-3667-3071-9DE6-2D915C63F70C> /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
    0x7fff5d301000 -     0x7fff5d388ff7  com.apple.backup.framework (1.9.1 - 1.9.1) <0024C0A2-C57F-3F62-B0EA-D80264697B90> /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
    0x7fff5ece1000 -     0x7fff5eceaffb  com.apple.CommonAuth (4.0 - 2.0) <F9A7C82E-197F-382E-B854-3DCE83FD6DA3> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
    0x7fff5f6f0000 -     0x7fff5f700ff7  com.apple.CoreEmoji (1.0 - 69.2.4) <7FB592BF-FAA2-3290-8B04-28BCEA49F519> /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
    0x7fff6091b000 -     0x7fff609acfff  com.apple.CoreSymbolication (63075) <22359913-3FAE-3FE3-9F88-F3521169FB4E> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
    0x7fff60a2f000 -     0x7fff60b63fd7  com.apple.coreui (2.1 - 489) <C4AA981A-A1DC-3F65-84DF-228F4007AE6B> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
    0x7fff60b64000 -     0x7fff60c5dffb  com.apple.CoreUtils (5.2 - 520.68) <7F80020B-0208-38A7-B333-EC1463FF1AA4> /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
    0x7fff60cb2000 -     0x7fff60d16fff  com.apple.framework.CoreWiFi (13.0 - 1335) <4244427A-5662-3B38-BF08-C4510FCFBB12> /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
    0x7fff60d17000 -     0x7fff60d26ff7  com.apple.CrashReporterSupport (10.13 - 1) <842680F4-0BFB-386A-A32D-E9ED39DCE790> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
    0x7fff60da3000 -     0x7fff60db2ff7  com.apple.framework.DFRFoundation (1.0 - 189.1) <C7DE4082-6AC1-3971-AAC7-979E33C9D0F1> /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
    0x7fff60db5000 -     0x7fff60db9ffb  com.apple.DSExternalDisplay (3.1 - 380) <BEC07C7C-F3AC-3CF3-B13E-3EBFD6224C0D> /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
    0x7fff60e40000 -     0x7fff60eb6ff7  com.apple.datadetectorscore (7.0 - 590) <9DBE71C0-BF62-3E8E-9465-C0B45669B047> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
    0x7fff60f04000 -     0x7fff60f44ff7  com.apple.DebugSymbols (141 - 141) <99562E28-0E56-3F6F-93A1-EF997A5E1F87> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
    0x7fff60f45000 -     0x7fff6106efff  com.apple.desktopservices (1.12.1 - 1.12.1) <E00E237A-CB67-3ABC-BAE2-41CE7AA5C4B8> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff61dcc000 -     0x7fff621fafff  com.apple.vision.FaceCore (3.3.2 - 3.3.2) <80C97AD7-D5C2-311A-B268-4AA60CAD6CED> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
    0x7fff661fa000 -     0x7fff66209fff  com.apple.GraphVisualizer (1.0 - 5) <0A93C5DE-0D28-312E-8764-6B0FB805ED91> /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
    0x7fff66281000 -     0x7fff662f5fff  com.apple.Heimdal (4.0 - 2.0) <600A9BD5-3DD2-3F7C-B40E-8485026FE936> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
    0x7fff66b96000 -     0x7fff66b9dffb  com.apple.IOAccelerator (374.1 - 374.1) <DD7ACD4F-F908-3ED8-A144-4091AA3C85BE> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
    0x7fff66ba1000 -     0x7fff66bb7ff7  com.apple.IOPresentment (1.0 - 32.1) <23542804-9605-3458-9468-22B0DE738E21> /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
    0x7fff66f76000 -     0x7fff66f9bffb  com.apple.IconServices (97.3 - 97.3) <9FB00A91-C46B-3CF1-973A-FDDABCEA088D> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
    0x7fff6722d000 -     0x7fff67322fff  com.apple.LanguageModeling (1.0 - 159.2.1) <CC4069FF-BF5C-30F5-98F5-D6F746C5AA04> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
    0x7fff67323000 -     0x7fff67365ff7  com.apple.Lexicon-framework (1.0 - 33.2) <5CC5E8EE-62A1-3EA5-B300-A39ABD0CF12D> /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
    0x7fff67369000 -     0x7fff67370ff7  com.apple.LinguisticData (1.0 - 238.2.2) <0C53E8E4-5BB6-377E-BD74-DDC3B548D699> /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
    0x7fff67f4b000 -     0x7fff67fb2ff7  com.apple.gpusw.MetalTools (1.0 - 1) <A9C560B2-2830-3CC3-8069-128F8D7B8B85> /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
    0x7fff681c0000 -     0x7fff681e8ff7  com.apple.MultitouchSupport.framework (1004.1 - 1004.1) <69BF94F5-9301-3755-98A1-A981DB03C395> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
    0x7fff6844c000 -     0x7fff68457fff  com.apple.NetAuth (6.2 - 6.2) <5C6F492A-28EF-3A0E-B573-6F3D60CFF0C7> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
    0x7fff69c4a000 -     0x7fff69c8affb  com.apple.PerformanceAnalysis (1.183 - 183) <520FEF4A-4C60-31FA-8BA0-528294BC41ED> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
    0x7fff6ba4d000 -     0x7fff6ba6bfff  com.apple.ProtocolBuffer (1 - 259) <D047A3FE-C7A8-3CAA-9891-6232BA88C247> /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
    0x7fff6bc3c000 -     0x7fff6bc5fffb  com.apple.RemoteViewServices (2.0 - 125) <AEDBCE8C-88B7-315A-9F81-3E068F0D3EDC> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
    0x7fff6d564000 -     0x7fff6d668ff7  com.apple.Sharing (933.2 - 933.2) <21CB05ED-E038-34E7-865E-9656DEC83763> /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
    0x7fff6d692000 -     0x7fff6d693fff  com.apple.performance.SignpostNotification (1.0 - 1) <5C953AF5-746A-3049-A2BC-901D6C7B583F> /System/Library/PrivateFrameworks/SignpostNotification.framework/Versions/A/SignpostNotification
    0x7fff6e38c000 -     0x7fff6e624fff  com.apple.SkyLight (1.600.0 - 312.11) <75F0EBAD-AF87-3125-B5D0-752278352FEC> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
    0x7fff6edd1000 -     0x7fff6eddeff7  com.apple.SpeechRecognitionCore (4.0.13 - 4.0.13) <AC026FB9-78F8-31F9-BB80-619D5378DB70> /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
    0x7fff6f96b000 -     0x7fff6f9effe7  com.apple.Symbolication (9.0 - 63079.1) <177BC9CA-E6AE-3B40-806F-0080C0CDFF29> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
    0x7fff6feda000 -     0x7fff6fee1ff3  com.apple.TCC (1.0 - 1) <9E54D9D2-FCBE-39EF-BAD5-4C2C41DA0D36> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
    0x7fff700e8000 -     0x7fff701a9ff7  com.apple.TextureIO (3.4 - 3.4) <7C93B388-7171-3B3D-BD23-0A8280059260> /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
    0x7fff70254000 -     0x7fff70403fff  com.apple.UIFoundation (1.0 - 545) <36B09831-2916-3CE3-BD68-2D304BA7CDEF> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
    0x7fff71b28000 -     0x7fff71b2affb  com.apple.loginsupport (1.0 - 1) <5E2C4AA7-066D-3FDB-B0E1-4CDAF287392C> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
    0x7fff71c8e000 -     0x7fff71cc1fff  libclosured.dylib (519.2.1) <31A6AC03-8F51-367E-9E00-FF0F1AD10F6F> /usr/lib/closure/libclosured.dylib
    0x7fff71d60000 -     0x7fff71d99ff7  libCRFSuite.dylib (41) <AB2DA745-F22C-30CF-81D4-35DD716463B8> /usr/lib/libCRFSuite.dylib
    0x7fff71d9a000 -     0x7fff71da5fff  libChineseTokenizer.dylib (28) <D30A7DB6-058F-3286-9583-60C9EEB77A6E> /usr/lib/libChineseTokenizer.dylib
    0x7fff71e37000 -     0x7fff71e38ff3  libDiagnosticMessagesClient.dylib (104) <9712E980-76EE-3A89-AEA6-DF4BAF5C0574> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff71e6f000 -     0x7fff72039ff3  libFosl_dynamic.dylib (17.7) <B2476843-7FA7-3E62-B79F-2B15FE557E63> /usr/lib/libFosl_dynamic.dylib
    0x7fff72071000 -     0x7fff72071fff  libOpenScriptingUtil.dylib (174) <203D2C39-61BB-3713-A502-2D17B04A42AC> /usr/lib/libOpenScriptingUtil.dylib
    0x7fff7219b000 -     0x7fff7219fffb  libScreenReader.dylib (562.1.3) <17789E85-9B19-383D-B253-4D7F298378F5> /usr/lib/libScreenReader.dylib
    0x7fff721a0000 -     0x7fff721a1ff3  libSystem.B.dylib (1252) <C5473FF4-E5A9-31D3-83F9-094D8A76C31F> /usr/lib/libSystem.B.dylib
    0x7fff72234000 -     0x7fff72234fff  libapple_crypto.dylib (109.20.5) <71AE014E-4C98-3868-9EE8-2A3F23536B41> /usr/lib/libapple_crypto.dylib
    0x7fff72235000 -     0x7fff7224bff7  libapple_nghttp2.dylib (1.24) <01402BC4-4822-3676-9C80-50D83F816424> /usr/lib/libapple_nghttp2.dylib
    0x7fff7224c000 -     0x7fff72276ff3  libarchive.2.dylib (54) <8FC28DD8-E315-3C3E-95FE-D1D2CBE49888> /usr/lib/libarchive.2.dylib
    0x7fff72277000 -     0x7fff722f8fdf  libate.dylib (1.13.1) <178ACDAD-DE7E-346C-A613-1CBF7929AC07> /usr/lib/libate.dylib
    0x7fff722fc000 -     0x7fff722fcff3  libauto.dylib (187) <A05C7900-F8C7-3E75-8D3F-909B40C19717> /usr/lib/libauto.dylib
    0x7fff722fd000 -     0x7fff723b1ff7  libboringssl.dylib (109.20.5) <A1CC732C-B0AC-35FA-8DE0-03CF4BA67F5A> /usr/lib/libboringssl.dylib
    0x7fff723b2000 -     0x7fff723c2ff3  libbsm.0.dylib (39) <770B341F-3BB7-3123-B53C-F2D58868A963> /usr/lib/libbsm.0.dylib
    0x7fff723c3000 -     0x7fff723d0ffb  libbz2.1.0.dylib (38) <0A5086BB-4724-3C14-979D-5AD4F26B5B45> /usr/lib/libbz2.1.0.dylib
    0x7fff723d1000 -     0x7fff72427fff  libc++.1.dylib (400.9) <FCF5E1F6-2B04-3545-8004-F3AB32FED172> /usr/lib/libc++.1.dylib
    0x7fff72428000 -     0x7fff7244cff7  libc++abi.dylib (400.7) <217656D5-BC40-37FF-B322-91CB2AAD4F34> /usr/lib/libc++abi.dylib
    0x7fff7244e000 -     0x7fff7245efff  libcmph.dylib (6) <A5509EE8-7E00-3224-8814-015B077A3CF5> /usr/lib/libcmph.dylib
    0x7fff7245f000 -     0x7fff72475fff  libcompression.dylib (47) <E64D4416-DFBF-314B-BBB9-BED23C3A251C> /usr/lib/libcompression.dylib
    0x7fff7271d000 -     0x7fff72735ff7  libcoretls.dylib (155) <DFE2454F-2FE3-3B2B-A22B-422947C34C69> /usr/lib/libcoretls.dylib
    0x7fff72736000 -     0x7fff72737ffb  libcoretls_cfhelpers.dylib (155) <D3F4B882-40C1-3CD4-927B-0E0ED6031D0B> /usr/lib/libcoretls_cfhelpers.dylib
    0x7fff72c07000 -     0x7fff72c5dff3  libcups.2.dylib (462.1) <4F4F85FD-D907-3D51-A3F0-2A239E165A07> /usr/lib/libcups.2.dylib
    0x7fff72ce7000 -     0x7fff72d63ff7  libdtrace.dylib (262) <A896B3ED-22F3-3EA8-920F-0A56BD6E84A1> /usr/lib/libdtrace.dylib
    0x7fff72d9b000 -     0x7fff72d9bfff  libenergytrace.dylib (16) <A92AB8B8-B986-3CE6-980D-D55090FEF387> /usr/lib/libenergytrace.dylib
    0x7fff72dd2000 -     0x7fff72dd7ffb  libheimdal-asn1.dylib (520) <D968FE68-7770-3AEA-BFEB-3F7F4CB10DDC> /usr/lib/libheimdal-asn1.dylib
    0x7fff72e03000 -     0x7fff72ef4ff7  libiconv.2.dylib (51) <0772997F-4109-38A1-91ED-0F3F16AE99E5> /usr/lib/libiconv.2.dylib
    0x7fff72ef5000 -     0x7fff7311cffb  libicucore.A.dylib (59131.0.1) <3EA7567C-0A0C-3052-BC3C-DDB05A5679A7> /usr/lib/libicucore.A.dylib
    0x7fff73169000 -     0x7fff7316afff  liblangid.dylib (128) <39C39393-0D05-301D-93B2-F224FC4949AA> /usr/lib/liblangid.dylib
    0x7fff7316b000 -     0x7fff73184ffb  liblzma.5.dylib (10) <3D419A50-961F-37D2-8A01-3DC7AB7B8D18> /usr/lib/liblzma.5.dylib
    0x7fff73185000 -     0x7fff7319bff7  libmarisa.dylib (9) <D6D2D55D-1D2E-3442-B152-B18803C0ABB4> /usr/lib/libmarisa.dylib
    0x7fff7324c000 -     0x7fff73474ff7  libmecabra.dylib (779.5.3) <1F81DB66-4EEE-3B14-BA15-4930546C94D4> /usr/lib/libmecabra.dylib
    0x7fff73479000 -     0x7fff734a9ffb  libncurses.5.4.dylib (53) <030DF747-F71B-367A-83EE-2F30B7947929> /usr/lib/libncurses.5.4.dylib
    0x7fff7364c000 -     0x7fff73722ff7  libnetwork.dylib (1229.21.1) <9998359C-3A37-3ED0-8CFC-C095C99F2102> /usr/lib/libnetwork.dylib
    0x7fff73798000 -     0x7fff73b867e7  libobjc.A.dylib (723) <93A92316-DE1E-378C-8891-99720B50D075> /usr/lib/libobjc.A.dylib
    0x7fff73b99000 -     0x7fff73b9dfff  libpam.2.dylib (22) <7B4D2CE2-1438-387A-9802-5CEEFBF26F86> /usr/lib/libpam.2.dylib
    0x7fff73ba0000 -     0x7fff73bd4fff  libpcap.A.dylib (79.20.1) <FA13918B-A247-3181-B256-9B852C7BA316> /usr/lib/libpcap.A.dylib
    0x7fff73c54000 -     0x7fff73c70ffb  libresolv.9.dylib (65) <E8F3415B-4472-3202-8901-41FD87981DB2> /usr/lib/libresolv.9.dylib
    0x7fff73cc0000 -     0x7fff73e55fef  libsqlite3.dylib (274.1) <075468C1-75CE-318F-9E9B-F62B6A88E1B3> /usr/lib/libsqlite3.dylib
    0x7fff74025000 -     0x7fff7405effb  libusrtcp.dylib (1229.21.1) <ED5D440E-6BE6-3AF3-817B-4D0BA2E53EDE> /usr/lib/libusrtcp.dylib
    0x7fff7405f000 -     0x7fff74062ffb  libutil.dylib (51.20.1) <216D18E5-0BAF-3EAF-A38E-F6AC37CBABD9> /usr/lib/libutil.dylib
    0x7fff74063000 -     0x7fff74070fff  libxar.1.dylib (400) <0316128D-3B47-3052-995D-97B4FE5491DC> /usr/lib/libxar.1.dylib
    0x7fff74074000 -     0x7fff7415bfff  libxml2.2.dylib (31.7) <49544596-BCF8-3765-8DC5-DB1A9A90EF92> /usr/lib/libxml2.2.dylib
    0x7fff7415c000 -     0x7fff74184fff  libxslt.1.dylib (15.10) <66682AF6-C2D5-374C-901F-25A3E72814DC> /usr/lib/libxslt.1.dylib
    0x7fff74185000 -     0x7fff74197ffb  libz.1.dylib (70) <48C67CFC-940D-3857-8DAD-857774605352> /usr/lib/libz.1.dylib
    0x7fff74234000 -     0x7fff74238ff7  libcache.dylib (80) <354F3B7D-404E-3398-9EBF-65CA2CE65211> /usr/lib/system/libcache.dylib
    0x7fff74239000 -     0x7fff74243ff3  libcommonCrypto.dylib (60118.1.1) <6C502A55-3B54-3B48-BA7B-FA39F56C0B1E> /usr/lib/system/libcommonCrypto.dylib
    0x7fff74244000 -     0x7fff7424bfff  libcompiler_rt.dylib (62) <4487CFBA-A5D7-3282-9E6B-94CAD7BE507E> /usr/lib/system/libcompiler_rt.dylib
    0x7fff7424c000 -     0x7fff74254fff  libcopyfile.dylib (146) <7E4BD264-5617-339B-AC73-E8D07EF2C51D> /usr/lib/system/libcopyfile.dylib
    0x7fff74255000 -     0x7fff742d9ff7  libcorecrypto.dylib (562) <7974762C-DEF7-3056-9856-9821C27846DB> /usr/lib/system/libcorecrypto.dylib
    0x7fff74360000 -     0x7fff74399ff7  libdispatch.dylib (913.20.5) <389EBBCD-3AA2-3340-AA48-4FBF621401BD> /usr/lib/system/libdispatch.dylib
    0x7fff7439a000 -     0x7fff743b7ff7  libdyld.dylib (519.2.1) <2597D818-42D2-3375-BD9D-451D5942A6BA> /usr/lib/system/libdyld.dylib
    0x7fff743b8000 -     0x7fff743b8ffb  libkeymgr.dylib (28) <6D84A96F-C65B-38EC-BDB5-21FD2C97E7B2> /usr/lib/system/libkeymgr.dylib
    0x7fff743b9000 -     0x7fff743c5ff3  libkxld.dylib (4570.20.62) <E82BC0F8-C51D-3BB2-A0EB-B7899CD6606C> /usr/lib/system/libkxld.dylib
    0x7fff743c6000 -     0x7fff743c6ff7  liblaunch.dylib (1205.20.31) <0089D38D-868D-3748-A032-934AAE679F0D> /usr/lib/system/liblaunch.dylib
    0x7fff743c7000 -     0x7fff743cbffb  libmacho.dylib (900.0.1) <756F2553-07B6-3B42-ACEA-2F0F1A5E8D0F> /usr/lib/system/libmacho.dylib
    0x7fff743cc000 -     0x7fff743ceff3  libquarantine.dylib (86) <6AC8773F-3817-3D82-99C2-01BABB9C3CBB> /usr/lib/system/libquarantine.dylib
    0x7fff743cf000 -     0x7fff743d0ff3  libremovefile.dylib (45) <912FA211-DD8C-3C92-8424-21B89F8B10FD> /usr/lib/system/libremovefile.dylib
    0x7fff743d1000 -     0x7fff743e8fff  libsystem_asl.dylib (356.1.1) <94972913-9DF0-3C78-847C-43E58919E3DA> /usr/lib/system/libsystem_asl.dylib
    0x7fff743e9000 -     0x7fff743e9fff  libsystem_blocks.dylib (67) <F2493BB5-B1C6-3C4D-9F1F-1B402E0F1DB7> /usr/lib/system/libsystem_blocks.dylib
    0x7fff743ea000 -     0x7fff74473ff7  libsystem_c.dylib (1244.20.1) <E0A0A865-AFE5-3230-B535-772D3177D093> /usr/lib/system/libsystem_c.dylib
    0x7fff74474000 -     0x7fff74477ffb  libsystem_configuration.dylib (963) <D7EFEAE6-22A0-348E-BBBE-44FFD41934FA> /usr/lib/system/libsystem_configuration.dylib
    0x7fff74478000 -     0x7fff7447bffb  libsystem_coreservices.dylib (51) <21A488D0-2D07-344E-8631-CC8B2A246F35> /usr/lib/system/libsystem_coreservices.dylib
    0x7fff7447c000 -     0x7fff7447dfff  libsystem_darwin.dylib (1244.20.1) <4E340966-7DE7-38C4-8408-3708E592C21D> /usr/lib/system/libsystem_darwin.dylib
    0x7fff7447e000 -     0x7fff74484ff7  libsystem_dnssd.dylib (878.20.3) <AB5B8E5E-75CD-3695-B89B-77DF73E3EDB1> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff74485000 -     0x7fff744ceff7  libsystem_info.dylib (517) <483BE95B-62EB-3663-ACB3-9915A40C70F5> /usr/lib/system/libsystem_info.dylib
    0x7fff744cf000 -     0x7fff744f4ff7  libsystem_kernel.dylib (4570.20.62) <77865ABA-D9CA-31D5-B484-560660CAB07D> /usr/lib/system/libsystem_kernel.dylib
    0x7fff744f5000 -     0x7fff74540fcb  libsystem_m.dylib (3146) <ABB1B85F-9FFE-31B8-AD4F-E39A30794A93> /usr/lib/system/libsystem_m.dylib
    0x7fff74541000 -     0x7fff74560fff  libsystem_malloc.dylib (140.1.1) <9F0745FF-B92F-330D-8812-BB74001D1D33> /usr/lib/system/libsystem_malloc.dylib
    0x7fff74561000 -     0x7fff74604ff3  libsystem_network.dylib (1229.21.1) <ECB15E1D-5D02-3B79-9C64-64BAAC808278> /usr/lib/system/libsystem_network.dylib
    0x7fff74605000 -     0x7fff7460fffb  libsystem_networkextension.dylib (767.20.1) <27F139B6-3250-345D-8495-7C22A00BC488> /usr/lib/system/libsystem_networkextension.dylib
    0x7fff74610000 -     0x7fff74619ff3  libsystem_notify.dylib (172) <98EA3D62-7C86-30DE-8261-D020D2F1EFF3> /usr/lib/system/libsystem_notify.dylib
    0x7fff7461a000 -     0x7fff74621ff7  libsystem_platform.dylib (161.20.1) <9090E7AA-5F8F-31BA-8476-7B7122CC82BC> /usr/lib/system/libsystem_platform.dylib
    0x7fff74622000 -     0x7fff7462dfff  libsystem_pthread.dylib (301.20.1) <8AF70211-A670-3CC7-AE24-EFE9F1C2B1E5> /usr/lib/system/libsystem_pthread.dylib
    0x7fff7462e000 -     0x7fff74631ff3  libsystem_sandbox.dylib (765.21.1) <FAC0DA75-892E-3161-9D6A-2F999D8519B6> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff74632000 -     0x7fff74633ff3  libsystem_secinit.dylib (30) <F06ADB8F-9E94-34A7-B3C9-2C22FDD14BAD> /usr/lib/system/libsystem_secinit.dylib
    0x7fff74634000 -     0x7fff7463bff7  libsystem_symptoms.dylib (820.20.3) <4439B818-4C84-30E9-91B5-B7766FA74650> /usr/lib/system/libsystem_symptoms.dylib
    0x7fff7463c000 -     0x7fff7464fff7  libsystem_trace.dylib (829.20.1) <878582CE-0647-31DD-92C3-AFCD5C3A714D> /usr/lib/system/libsystem_trace.dylib
    0x7fff74651000 -     0x7fff74656ff7  libunwind.dylib (35.3) <6D4FCD49-D2A9-3233-95C7-A7635CE265F2> /usr/lib/system/libunwind.dylib
    0x7fff74657000 -     0x7fff74683ff7  libxpc.dylib (1205.20.31) <58676E88-35FD-3CF3-99BB-2A82E09F8058> /usr/lib/system/libxpc.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 655599
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=322.8M resident=0K(0%) swapped_out_or_unallocated=322.8M(100%)
Writable regions: Total=167.6M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=167.6M(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Kernel Alloc Once                    8K        2 
MALLOC                            52.6M       59 
MALLOC guard page                   48K       12 
MALLOC_LARGE (reserved)            528K        3         reserved VM address space (unallocated)
STACK GUARD                         72K       19 
Stack                             76.6M       19 
VM_ALLOCATE                        1.5G       16 
VM_ALLOCATE (reserved)             512K        3         reserved VM address space (unallocated)
__DATA                            21.5M      223 
__FONT_DATA                          4K        2 
__LINKEDIT                       187.9M        9 
__TEXT                           134.9M      226 
__UNICODE                          560K        2 
shared memory                       12K        4 
===========                     =======  ======= 
TOTAL                              2.0G      585 
TOTAL, minus reserved VM space     2.0G      585 

erlang:system_info(version) check is wrong

Erlang/OTP 18 [erts-7.0.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.0.3  (abort with ^G)
1> erlang:system_info(version).
"7.0.3"

this leads to

list_to_float("7.0.3")

this was broken in 3efd015

SSL Certificate verification

This is as much a question as an issue, I'm trying to understand why the SSL Certificate verification in fast_tls is largely disabled because the verify callback always returns 1 (success):

static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx) {
    return 1;
}

I understand ejabberd does some level of certificate verification at the application level, but I'm curious why this couldn't be left for fast_tls / OpenSSL to handle?

Would you be open to PRs that change this behaviour?

publish 1.0.17 to hex.pm

Hi, I'm using processone/stun, which depends on this driver. Since stun uses a legacy dependency format, rebar3 will try to fetch it from hex.pm instead of directly from git:

===> Package fast_tls-1.0.17 not found. Fetching registry updates and trying again...
===> Updating package registry...
===> Writing registry to /Users/facundo/.cache/rebar3/hex/default/registry
===> Generating package index...
===> Writing index to /Users/facundo/.cache/rebar3/hex/default/packages.idx
===> Package not found in registry: fast_tls-1.0.17.

This doesn't happen with previous versions of processone/stun that depend on fast_tls-1.0.16 (which is published). So that error would go away by publishing 1.0.17 to hex.pm.

(I can file this issue in the stun repo if you feel it belongs there).

Thanks!

Statically compilation with OpenSSL source fails

I try to compile this library with OpenSSL in ejabberd. (see processone/ejabberd#1367)

However when I use this commands:

export LDFLAGS="-L../../path/to/openssl-1.1.0b -Wl,-Bstatic -lssl -lcrypto -Wl,-Bdynamic"
export CFLAGS="-I../..path/to/openssl-1.1.0b -fstack-protector-strong"
export CPPFLAGS="$CFLAGS"

I get this error:

==> fast_tls (compile)
Compiled src/fast_tls_sup.erl
Compiled src/fast_tls_app.erl
Compiled src/p1_sha.erl
Compiled src/fast_tls.erl
Compiling c_src/fast_tls_drv.c
Compiling c_src/p1_sha.c
/usr/bin/ld: /usr/lib/gcc/arm-linux-gnueabihf/4.9/../../../arm-linux-gnueabihf/libssl.a(s23_meth.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/arm-linux-gnueabihf/4.9/../../../arm-linux-gnueabihf/libssl.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
ERROR: cc c_src/fast_tls_drv.o -L../../path/to/openssl-1.1.0b -Wl,-Bstatic -lssl -lcrypto -Wl,-Bdynamic -lssl -lcrypto -L../../path/to/openssl-1.1.0b -Wl,-Bstatic -lssl -lcrypto -Wl,-Bdynamic -shared  -L/usr/lib/erlang/lib/erl_interface-3.7.18/lib -lerl_interface -lei -o priv/lib/fast_tls_drv.so failed with error: 1 and output:
/usr/bin/ld: /usr/lib/gcc/arm-linux-gnueabihf/4.9/../../../arm-linux-gnueabihf/libssl.a(s23_meth.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/arm-linux-gnueabihf/4.9/../../../arm-linux-gnueabihf/libssl.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status

ERROR: compile failed while processing ejabberdSource/deps/fast_tls: rebar_abort
Makefile:90: recipe for target 'deps/.built' failed
make: *** [deps/.built] Error 1

FTBFS with openssl 3

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1013644

Building with openssl 3.0.4-2 in debian sid

module 'fast_tls'
  fast_tls: transmission_with_client_certificate_test...*failed*
in function fast_tls:transmission_test_with_opts/2 (fast_tls.erl, line 564)
in call from eunit_test:'-mf_wrapper/2-fun-0-'/2 (eunit_test.erl, line 273)
in call from eunit_test:run_testfun/1 (eunit_test.erl, line 71)
in call from eunit_proc:run_test/1 (eunit_proc.erl, line 531)
in call from eunit_proc:with_timeout/3 (eunit_proc.erl, line 356)
in call from eunit_proc:handle_test/2 (eunit_proc.erl, line 514)
in call from eunit_proc:tests_inorder/3 (eunit_proc.erl, line 456)
in call from eunit_proc:with_timeout/3 (eunit_proc.erl, line 346)
**error:{assertEqual,[{module,fast_tls},
              {line,564},
              {expression,"Msg"},
              {expected,<<"abcdefghi">>},
              {value,{error,<<"SSL_do_handshake failed: error:1"...>>,<<>>}}]}
  output:<<"">>

ECDH support limited to P-256 / prime256v1

This is a followup from processone/ejabberd#1714.

The current code in setup_ecdh() does the following: ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);

In other words, it only ever uses the prime256v1 curve for ECDH. This causes compatibility issues because some other implementations hardcode only one curve too but a different one.

For interoperability purposes, all implementations should probably handle the curves chosen in the upcoming TLS 1.3 specification: P-256 (a.k.a. prime256v1), P-284 and P-521. There are also X25519 and X448 but I am less clear about them and they're new to TLS 1.3 which is still a draft anyway. The P-* ones are however currently in use. Some others are currently specified too but have never seen widespread use and are not worth supporting at this point.

https://koldfront.dk/archive/2017/06/20-210822.html has a patch for this but only adds P-384. It should be trivial to extend it to P-521: the name for this curve in the format used in the current code is SN_secp521r1 if I'm not mistaken.
This patch doesn't add a new API nor change any existing one: it always allows these three P-* curves and P-256 is the preferred one since it is listed first.

implicit declaration of function โ€˜OPENSSL_cleanup breaks a libressl based Gentoo ejabberd server

At a stable hardened Gentoo with libressl I do get for 1.0.7

QA Notice: Package triggers severe warnings which indicate that it
may exhibit random runtime failures.
c_src/fast_tls_drv.c:350:5: warning: implicit declaration of function โ€˜OPENSSL_cleanupโ€™ [-Wimplicit-function-declaration]
c_src/fast_tls_drv.c:470:8: warning: implicit declaration of function โ€˜DH_set0_pqgโ€™ [-Wimplicit-function-declaration]

and indeed this correlates to https://bugs.gentoo.org/show_bug.cgi?id=600932

few more info:
=ERROR REPORT==== 27-Nov-2016::17:26:32 ===
failed to load TLS driver: undefined symbol: OPENSSL_cleanup
failed
in function fast_tls:'-load_nif_test/0-fun-0-'/0 (src/fast_tls.erl, line 432)
**error:{assertEqual,[{module,fast_tls},
{line,432},
{expression,"load_driver ( )"},
{expected,ok},
{value,{error,{open_error,-10}}}]}
output:<<"">>

module 'p1_sha'
p1_sha: load_nif_test...ok
p1_sha: sha1_test...ok
p1_sha: sha224_test...ok
p1_sha: sha256_test...ok
p1_sha: sha384_test...ok
p1_sha: sha512_test...ok
p1_sha: to_hexlist_test...ok
[done in 0.021 s]

too many read_file_info fast_tls_drv.so

when my server has 80, 000 TCP connections, the length of file_server_2's message_queue is grow quickly. When I check the process info ,I find this:

(ejabberd@xxxx)1> erlang:process_info(list_to_pid("<0.24.0>")).
[{registered_name,file_server_2},
{current_function,{prim_file,drv_get_response,1}},
{initial_call,{proc_lib,init_p,5}},
{status,running},
{message_queue_len,37},
{messages,[{'$gen_call',{<0.29936.3282>,
#Ref<0.0.11499.147076>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/webtool-0.8.10/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.11832.3264>,#Ref<0.0.11499.147077>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/odbc-2.10.22/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.21203.3289>,#Ref<0.0.11499.147078>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/observer-2.0.4/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.2585.3265>,#Ref<0.0.11499.147079>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/mnesia-4.12.5/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.28603.3278>,#Ref<0.0.11499.147080>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/inets-5.10.6/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.30249.3174>,#Ref<0.0.11499.147081>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/erl_docgen-0.3.7/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.15376.3271>,#Ref<0.0.11499.147085>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/erl_interface-3.7.20/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.23830.3243>,#Ref<0.0.11499.147086>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/xmerl-1.3.7/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.28361.3231>,#Ref<0.0.11499.147087>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/debugger-4.0.3/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.21951.3224>,#Ref<0.0.11499.147088>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/et-1.5/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.24450.3247>,#Ref<0.0.11499.147090>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/crypto-3.5/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.2854.3273>,#Ref<0.0.11499.147092>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/odbc-2.10.22/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.6034.3189>,#Ref<0.0.11499.147095>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/ic-4.3.6/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.4923.3252>,#Ref<0.0.11499.147096>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/compiler-5.0.4/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.14453.3275>,#Ref<0.0.11499.147100>},
{read_file_info,"/home/q/erlang1705/lib/erlang/lib/megaco-3.17.3/ebin/priv/lib/fast_tls_drv.so"}},
{'$gen_call',{<0.21126.3243>,#Ref<0.0.11499.147111>},
{read_file_info,[...]}},
{'$gen_call',{<0.28121.3229>,#Ref<0.0.11499.147118>},
{read_file_info,...}},
{'$gen_call',{<0.26819.3263>,...},{...}},
{'$gen_call',{...},...},
{'$gen_call',...},
{...}|...]},
{links,[#Port<0.112>,<0.11.0>]},
{dictionary,[{'$ancestors',[kernel_sup,<0.10.0>]},
{'$initial_call',{file_server,init,1}}]},
{trap_exit,true},
{error_handler,error_handler},
{priority,normal},
{group_leader,<0.9.0>},
{total_heap_size,225340},
{heap_size,28690},
{stack_size,30},
{reductions,249704733833},
{garbage_collection,[{min_bin_vheap_size,46422},
{min_heap_size,233},
{fullsweep_after,65535},
{minor_gcs,45393}]},
{suspending,[]}]

I can't understand why so many gen_call to get the file info of fast_tls_drv.so

:fast_tls fails to start - Failed to load NIF library

I'm using Elixir 1.3.0, fast_tls from hex.pm (current version is 1.0.5)
On OSX El Capitan 10.11.5

Create a new mix app. Add the fast_tls dependency and application to mix.exs:

def application do
  [applications: [:logger, :fast_tls]]
end

defp deps do
  [{:fast_tls, "~> 1.0"}]
end

Then run:
$ mix deps.get

I get the following output from the compile command:

===> Fetching rebar3_hex ({pkg,<<"rebar3_hex">>,<<"2.5.1">>})
===> Downloaded package, caching at /Users/edward/.cache/rebar3/hex/default/packages/rebar3_hex-2.5.1.tar
===> Compiling rebar3_hex
===> Compiling p1_utils
===> Fetching rebar3_hex ({pkg,<<"rebar3_hex">>,<<"2.5.1">>})
===> Downloaded package, caching at /Users/edward/.cache/rebar3/hex/default/packages/rebar3_hex-2.5.1.tar
===> Compiling rebar3_hex
===> Compiling fast_tls

Then run:
$ mix

But the application will not start:

** (Mix) Could not start application fast_tls: exited in: :fast_tls_app.start(:normal, [])
** (EXIT) an exception was raised:
** (MatchError) no match of right hand side value: {:error, {:load_failed, 'Failed to load NIF library: 'dlopen(/Users/edward/Development/tls_test
/_build/dev/lib/fast_tls/priv/lib/p1_sha.so, 2): image not found''}}
(fast_tls) /Users/edward/Development/tls_test/deps/fast_tls/src/fast_tls_app.erl:53: :fast_tls_app.start/2
(kernel) application_master.erl:273: :application_master.start_it_old/4

build issues with 1.1.5

Hi, I have problems building fast_tls 1.15, it succeeds on one system and fails on another, even though I use identical pbuilder chroots for the build process.
The full build log is attached.

erlang-p1-tls_1.1.5-1_amd64.build.txt

The relevant part begins at line 3081 with

rebar eunit skip_deps=true -vv

configure: error: OpenSSL 'ssl' library was not found

macOS Monterey 12.4 (21F79)

MacBook Pro (13-inch, M1, 2020)
ๅž‹ๅทๆ ‡่ฏ†็ฌฆ๏ผš MacBookPro17,1
่Šฏ็‰‡๏ผš Apple M1
ๆ ธๆ€ปๆ•ฐ๏ผš 8๏ผˆ4ๆ€ง่ƒฝๅ’Œ4่ƒฝๆ•ˆ๏ผ‰
ๅ†…ๅญ˜๏ผš 16 GB
็ณป็ปŸๅ›บไปถ็‰ˆๆœฌ๏ผš 7459.121.3

ๅฆ‚ไธ‹ๆ“ไฝœ๏ผŒ้‡ๆ–ฐๅฎ‰่ฃ…ไบ† [email protected] ่ฟ˜ๆ˜ฏๆŠฅ้”™ ๏ผš
If [email protected] is installed again, an error is reported :

brew install openssl
arch -arm64 brew install [email protected]

brew link [email protected] --force

fish_add_path /opt/homebrew/opt/[email protected]/bin

ll /opt/homebrew/opt/[email protected]
lrwxr-xr-x  1 leeyi  admin    28B  5 21 15:12 /opt/homebrew/opt/[email protected] -> ../Cellar/[email protected]/1.1.1m

CCFLAGS="-I//usr/local/opt/openssl/include/" LDFLAGS="-L//usr/local/opt/openssl/lib" ./configure
webrtc-server/_build/default/lib/fast_tls >
./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether make sets $(MAKE)... yes
checking for an ANSI C-conforming const... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for ANSI C header files... (cached) yes
checking for erl... /opt/homebrew/bin/erl
checking for erlc... /opt/homebrew/bin/erlc
checking for SSL_free in -lssl... no
checking for SHA1_Init in -lcrypto... no
checking openssl/ssl.h usability... yes
checking openssl/ssl.h presence... yes
checking for openssl/ssl.h... yes
checking openssl/err.h usability... yes
checking openssl/err.h presence... yes
checking for openssl/err.h... yes
checking openssl/sha.h usability... yes
checking openssl/sha.h presence... yes
checking for openssl/sha.h... yes
checking openssl/opensslv.h usability... yes
checking openssl/opensslv.h presence... yes
checking for openssl/opensslv.h... yes
configure: error: OpenSSL 'ssl' library was not found

./_build/default/lib/fast_tls/config.log

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by tls configure 1.0.10, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ ./configure 

## --------- ##
## Platform. ##
## --------- ##

hostname = leeyideMacBook-Pro.local
uname -m = x86_64
uname -r = 21.5.0
uname -s = Darwin
uname -v = Darwin Kernel Version 21.5.0: Tue Apr 26 21:08:29 PDT 2022; root:xnu-8020.121.3~4/RELEASE_ARM64_T8101

/usr/bin/uname -p = i386
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = Mach kernel version:
	 Darwin Kernel Version 21.5.0: Tue Apr 26 21:08:29 PDT 2022; root:xnu-8020.121.3~4/RELEASE_ARM64_T8101
Kernel configured for up to 8 processors.
8 processors are physically available.
8 processors are logically available.
Processor type: i486 (Intel 80486)
Processors active: 0 1 2 3 4 5 6 7
Primary memory available: 16.00 gigabytes
Default processor set: 520 tasks, 3845 threads, 8 processors
Load average: 2.58, Mach factor: 5.41
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /opt/homebrew/opt/openssl@3/bin
PATH: /opt/homebrew/opt/icu4c/sbin
PATH: /opt/homebrew/opt/icu4c/bin
PATH: /opt/homebrew/opt/sqlite/bin
PATH: /opt/homebrew/opt/m4/bin
PATH: /opt/homebrew/opt/curl/bin
PATH: /opt/homebrew/opt/[email protected]/bin
PATH: /usr/local/mysql-8.0.23-macos10.15-x86_64/bin
PATH: /opt/homebrew/Cellar/pcre2/10.36/bin
PATH: /opt/homebrew/Cellar/pcre/8.44/bin/
PATH: /opt/homebrew/opt/[email protected]/sbin
PATH: /opt/homebrew/opt/[email protected]/bin
PATH: /opt/homebrew/opt/openssl/bin
PATH: /opt/homebrew/bin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /bin
PATH: /usr/sbin
PATH: /sbin
PATH: /Library/Apple/usr/bin
PATH: /usr/local/go/bin
PATH: /Users/leeyi/go/bin
PATH: /opt/homebrew/opt/make/libexec/gnubin
PATH: /Users/leeyi/workspace/flutter/.pub-cache/bin
PATH: /Users/leeyi/workspace/flutter/bin/cache/dart-sdk/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2079: checking for gcc
configure:2095: found /usr/bin/gcc
configure:2106: result: gcc
configure:2335: checking for C compiler version
configure:2344: gcc --version >&5
Apple clang version 13.1.6 (clang-1316.0.21.2.5)
Target: x86_64-apple-darwin21.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
configure:2355: $? = 0
configure:2344: gcc -v >&5
Apple clang version 13.1.6 (clang-1316.0.21.2.5)
Target: x86_64-apple-darwin21.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
configure:2355: $? = 0
configure:2344: gcc -V >&5
clang: error: argument to '-V' is missing (expected 1 value)
clang: error: no input files
configure:2355: $? = 1
configure:2344: gcc -qversion >&5
clang: error: unknown argument '-qversion'; did you mean '--version'?
clang: error: no input files
configure:2355: $? = 1
configure:2375: checking whether the C compiler works
configure:2397: gcc -I/usr/local/opt/openssl/include/ -I/usr/local/opt/openssl/include/ -L/usr/local/opt/openssl/lib conftest.c  >&5
configure:2401: $? = 0
configure:2449: result: yes
configure:2452: checking for C compiler default output file name
configure:2454: result: a.out
configure:2460: checking for suffix of executables
configure:2467: gcc -o conftest -I/usr/local/opt/openssl/include/ -I/usr/local/opt/openssl/include/ -L/usr/local/opt/openssl/lib conftest.c  >&5
configure:2471: $? = 0
configure:2493: result: 
configure:2515: checking whether we are cross compiling
configure:2523: gcc -o conftest -I/usr/local/opt/openssl/include/ -I/usr/local/opt/openssl/include/ -L/usr/local/opt/openssl/lib conftest.c  >&5
configure:2527: $? = 0
configure:2534: ./conftest
configure:2538: $? = 0
configure:2553: result: no
configure:2558: checking for suffix of object files
configure:2580: gcc -c -I/usr/local/opt/openssl/include/ -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:2584: $? = 0
configure:2605: result: o
configure:2609: checking whether we are using the GNU C compiler
configure:2628: gcc -c -I/usr/local/opt/openssl/include/ -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:2628: $? = 0
configure:2637: result: yes
configure:2646: checking whether gcc accepts -g
configure:2666: gcc -c -g -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:2666: $? = 0
configure:2707: result: yes
configure:2724: checking for gcc option to accept ISO C89
configure:2787: gcc  -c -I/usr/local/opt/openssl/include/ -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:2787: $? = 0
configure:2800: result: none needed
configure:2820: checking whether make sets $(MAKE)
configure:2842: result: yes
configure:2858: checking for an ANSI C-conforming const
configure:2924: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:2924: $? = 0
configure:2931: result: yes
configure:2946: checking how to run the C preprocessor
configure:2977: gcc -E -I/usr/local/opt/openssl/include/ conftest.c
configure:2977: $? = 0
configure:2991: gcc -E -I/usr/local/opt/openssl/include/ conftest.c
conftest.c:9:10: fatal error: 'ac_nonexistent.h' file not found
#include <ac_nonexistent.h>
         ^~~~~~~~~~~~~~~~~~
1 error generated.
configure:2991: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "tls"
| #define PACKAGE_TARNAME "tls"
| #define PACKAGE_VERSION "1.0.10"
| #define PACKAGE_STRING "tls 1.0.10"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3016: result: gcc -E
configure:3036: gcc -E -I/usr/local/opt/openssl/include/ conftest.c
configure:3036: $? = 0
configure:3050: gcc -E -I/usr/local/opt/openssl/include/ conftest.c
conftest.c:9:10: fatal error: 'ac_nonexistent.h' file not found
#include <ac_nonexistent.h>
         ^~~~~~~~~~~~~~~~~~
1 error generated.
configure:3050: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "tls"
| #define PACKAGE_TARNAME "tls"
| #define PACKAGE_VERSION "1.0.10"
| #define PACKAGE_STRING "tls 1.0.10"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3079: checking for grep that handles long lines and -e
configure:3137: result: /usr/bin/grep
configure:3142: checking for egrep
configure:3204: result: /usr/bin/grep -E
configure:3209: checking for ANSI C header files
configure:3229: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3229: $? = 0
configure:3302: gcc -o conftest -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ -L/usr/local/opt/openssl/lib conftest.c  >&5
configure:3302: $? = 0
configure:3302: ./conftest
configure:3302: $? = 0
configure:3313: result: yes
configure:3326: checking for sys/types.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3326: checking for sys/stat.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3326: checking for stdlib.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3326: checking for string.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3326: checking for memory.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3326: checking for strings.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3326: checking for inttypes.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3326: checking for stdint.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3326: checking for unistd.h
configure:3326: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3326: $? = 0
configure:3326: result: yes
configure:3340: checking for stdlib.h
configure:3340: result: yes
configure:3350: checking for GNU libc compatible malloc
configure:3374: gcc -o conftest -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ -L/usr/local/opt/openssl/lib conftest.c  >&5
configure:3374: $? = 0
configure:3374: ./conftest
configure:3374: $? = 0
configure:3384: result: yes
configure:3405: checking for ANSI C header files
configure:3509: result: yes
configure:3571: checking for erl
configure:3589: found /opt/homebrew/bin/erl
configure:3601: result: /opt/homebrew/bin/erl
configure:3680: checking for erlc
configure:3698: found /opt/homebrew/bin/erlc
configure:3710: result: /opt/homebrew/bin/erlc
configure:3743: checking for SSL_free in -lssl
configure:3768: gcc -o conftest -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ -L/usr/local/opt/openssl/lib conftest.c -lssl   >&5
ld: warning: ignoring file /usr/local/opt/openssl/lib/libssl.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
Undefined symbols for architecture x86_64:
  "_SSL_free", referenced from:
      _main in conftest-069135.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
configure:3768: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "tls"
| #define PACKAGE_TARNAME "tls"
| #define PACKAGE_VERSION "1.0.10"
| #define PACKAGE_STRING "tls 1.0.10"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_MALLOC 1
| #define STDC_HEADERS 1
| /* end confdefs.h.  */
| 
| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char SSL_free ();
| int
| main ()
| {
| return SSL_free ();
|   ;
|   return 0;
| }
configure:3777: result: no
configure:3783: checking for SHA1_Init in -lcrypto
configure:3808: gcc -o conftest -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ -L/usr/local/opt/openssl/lib conftest.c -lcrypto   >&5
ld: warning: ignoring file /usr/local/opt/openssl/lib/libcrypto.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
Undefined symbols for architecture x86_64:
  "_SHA1_Init", referenced from:
      _main in conftest-5fab1d.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
configure:3808: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "tls"
| #define PACKAGE_TARNAME "tls"
| #define PACKAGE_VERSION "1.0.10"
| #define PACKAGE_STRING "tls 1.0.10"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_MALLOC 1
| #define STDC_HEADERS 1
| /* end confdefs.h.  */
| 
| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char SHA1_Init ();
| int
| main ()
| {
| return SHA1_Init ();
|   ;
|   return 0;
| }
configure:3817: result: no
configure:3823: checking openssl/ssl.h usability
configure:3823: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3823: $? = 0
configure:3823: result: yes
configure:3823: checking openssl/ssl.h presence
configure:3823: gcc -E -I/usr/local/opt/openssl/include/ conftest.c
configure:3823: $? = 0
configure:3823: result: yes
configure:3823: checking for openssl/ssl.h
configure:3823: result: yes
configure:3829: checking openssl/err.h usability
configure:3829: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3829: $? = 0
configure:3829: result: yes
configure:3829: checking openssl/err.h presence
configure:3829: gcc -E -I/usr/local/opt/openssl/include/ conftest.c
configure:3829: $? = 0
configure:3829: result: yes
configure:3829: checking for openssl/err.h
configure:3829: result: yes
configure:3835: checking openssl/sha.h usability
configure:3835: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3835: $? = 0
configure:3835: result: yes
configure:3835: checking openssl/sha.h presence
configure:3835: gcc -E -I/usr/local/opt/openssl/include/ conftest.c
configure:3835: $? = 0
configure:3835: result: yes
configure:3835: checking for openssl/sha.h
configure:3835: result: yes
configure:3841: checking openssl/opensslv.h usability
configure:3841: gcc -c -I/usr/local/opt/openssl/include/ -Wall -I/usr/local/opt/openssl/include/ conftest.c >&5
configure:3841: $? = 0
configure:3841: result: yes
configure:3841: checking openssl/opensslv.h presence
configure:3841: gcc -E -I/usr/local/opt/openssl/include/ conftest.c
configure:3841: $? = 0
configure:3841: result: yes
configure:3841: checking for openssl/opensslv.h
configure:3841: result: yes
configure:3849: error: OpenSSL 'ssl' library was not found

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_c_compiler_gnu=yes
ac_cv_c_const=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value=-I/usr/local/opt/openssl/include/
ac_cv_env_CPPFLAGS_set=set
ac_cv_env_CPPFLAGS_value=-I/usr/local/opt/openssl/include/
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_ERLCFLAGS_set=
ac_cv_env_ERLCFLAGS_value=
ac_cv_env_ERLC_set=
ac_cv_env_ERLC_value=
ac_cv_env_ERL_set=
ac_cv_env_ERL_value=
ac_cv_env_LDFLAGS_set=set
ac_cv_env_LDFLAGS_value=-L/usr/local/opt/openssl/lib
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_func_malloc_0_nonnull=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_openssl_err_h=yes
ac_cv_header_openssl_opensslv_h=yes
ac_cv_header_openssl_sha_h=yes
ac_cv_header_openssl_ssl_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_lib_crypto_SHA1_Init=no
ac_cv_lib_ssl_SSL_free=no
ac_cv_objext=o
ac_cv_path_EGREP='/usr/bin/grep -E'
ac_cv_path_GREP=/usr/bin/grep
ac_cv_path_ac_pt_ERL=/opt/homebrew/bin/erl
ac_cv_path_ac_pt_ERLC=/opt/homebrew/bin/erlc
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_make_make_set=yes

## ----------------- ##
## Output variables. ##
## ----------------- ##

CC='gcc'
CFLAGS='-I/usr/local/opt/openssl/include/ -Wall'
CPP='gcc -E'
CPPFLAGS='-I/usr/local/opt/openssl/include/'
DEFS=''
ECHO_C='\c'
ECHO_N=''
ECHO_T=''
EGREP='/usr/bin/grep -E'
ERL='/opt/homebrew/bin/erl'
ERLC='/opt/homebrew/bin/erlc'
ERLCFLAGS=''
EXEEXT=''
GREP='/usr/bin/grep'
LDFLAGS='-L/usr/local/opt/openssl/lib'
LIBOBJS=''
LIBS=''
LTLIBOBJS=''
OBJEXT='o'
PACKAGE_BUGREPORT=''
PACKAGE_NAME='tls'
PACKAGE_STRING='tls 1.0.10'
PACKAGE_TARNAME='tls'
PACKAGE_URL=''
PACKAGE_VERSION='1.0.10'
PATH_SEPARATOR=':'
SET_MAKE=''
SHELL='/bin/sh'
ac_ct_CC='gcc'
bindir='${exec_prefix}/bin'
build_alias=''
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='NONE'
gcov=''
host_alias=''
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='NONE'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "tls"
#define PACKAGE_TARNAME "tls"
#define PACKAGE_VERSION "1.0.10"
#define PACKAGE_STRING "tls 1.0.10"
#define PACKAGE_BUGREPORT ""
#define PACKAGE_URL ""
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define HAVE_STDLIB_H 1
#define HAVE_MALLOC 1
#define STDC_HEADERS 1

configure: exit 1

Hex Package Publishing Error. Missing fast_tls/priv/lib/*.so files

Getting

11:16:33.215 [error] failed to start application 'fast_tls': {error,
                                         {{shutdown,
                                           {failed_to_start_child,fast_tls,
                                            {badarg,
                                             [{erl_ddll,format_error_int,
                                               [{load_failed,
                                                 "Failed to load NIF library: 'dlopen(/Users/anon/test-ejab/ejapp/_build/dev/lib/fast_tls/priv/lib/fast_tls.so, 2): image not found'"}],
                                               []},
                                              {erl_ddll,format_error,1,
                                               [{file,"erl_ddll.erl"},
                                                {line,239}]},
                                              {fast_tls,load_nif,1,
                                               [{file,
                                                 "/Users/anon/test-ejab/ejapp/deps/fast_tls/src/fast_tls.erl"},
                                                {line,429}]},
                                              {fast_tls,init,1,
                                               [{file,
                                                 "/Users/anon/test-ejab/ejapp/deps/fast_tls/src/fast_tls.erl"},
                                                {line,89}]},
                                              {gen_server,init_it,2,
                                               [{file,"gen_server.erl"},
                                                {line,365}]},
                                              {gen_server,init_it,6,
                                               [{file,"gen_server.erl"},
                                                {line,333}]},
                                              {proc_lib,init_p_do_apply,3,
                                               [{file,"proc_lib.erl"},
                                                {line,247}]}]}}},
                                          {fast_tls_app,start,[normal,[]]}}}

When attempting to start fast_tls.
The fast_tls/priv/lib/fast_tls.so file and other files in that directory seem to be missing from the hex module.

Test failure on Fedora Rawhide

Greetings!

I'm working on upgrading Fedora Rawhide to fast_tls-1.0.23, and I'm seeing one of the tests fail:

$ /usr/bin/rebar eunit skip_deps=true -v                                                                                                                
==> fast_tls-1.0.23 (eunit)
INFO:  sh info:
        cwd: "/home/bowlofeggs/rpmbuild/BUILD/fast_tls-1.0.23"
        cmd: cp -R src/p1_sha.erl src/fast_tls_sup.erl src/fast_tls_app.erl src/fast_tls.erl ".eunit"
INFO:  Cover compiling /home/bowlofeggs/rpmbuild/BUILD/fast_tls-1.0.23
======================== EUnit ========================
module 'fast_tls'
  fast_tls: load_nif_test...[0.004 s] ok
  fast_tls: transmission_test...*failed*
in function fast_tls:'-transmission_test/0-fun-1-'/1 (src/fast_tls.erl, line 511)
**error:{assertEqual,[{module,fast_tls},
              {line,511},
              {expression,"<< \"abcdefghi\" >>"},
              {expected,<<>>},
              {value,<<"abcdefghi">>}]}
  output:<<"">>

  fast_tls: not_compatible_protocol_options_test...[1.026 s] ok
  [done in 3.055 s]
module 'p1_sha'
  p1_sha: load_nif_test...[0.001 s] ok
  p1_sha: sha1_test...ok
  p1_sha: sha224_test...ok
  p1_sha: sha256_test...ok
  p1_sha: sha384_test...ok
  p1_sha: sha512_test...ok
  p1_sha: to_hexlist_test...ok
  [done in 0.025 s]
module 'fast_tls_app'
module 'fast_tls_sup'
=======================================================
  Failed: 1.  Skipped: 0.  Passed: 9.
Cover analysis: /home/bowlofeggs/rpmbuild/BUILD/fast_tls-1.0.23/.eunit/index.html
Coverdata export: /home/bowlofeggs/rpmbuild/BUILD/fast_tls-1.0.23/.eunit/cover.coverdata
ERROR: One or more eunit tests failed.
ERROR: eunit failed while processing /home/bowlofeggs/rpmbuild/BUILD/fast_tls-1.0.23: rebar_abort

The test code in question looks like this:

transmission_test() ->
    {LPid, Port} = setup_listener([]),
    SPid = setup_sender(Port, []),
    SPid ! {stop, self()},
    receive
    {result, Res} ->
        ?assertEqual(ok, Res)
    end,
    LPid ! {stop, self()},
    receive
    {received, Msg} ->
        ?assertEqual(Msg, <<"abcdefghi">>)
    end.

I'm not particularly familiar with Erlang, so any hints you can provide about this would be helpful. This is being built with these dependencies:

erlang-20.3.8.2
erlang-p1_utils-1.0.12-1.fc29.noarch
erlang-rebar-2.6.4-6.fc28.x86_64
gcc-8.1.1-5.fc29.x86_64
openssl-1.1.1-0.pre8.fc29.x86_64

Can I use "port level lock" for fast_tls_drv?

I use fast_tls and ejabberd with very large number of processes, and in this case fast_tls_drv can be bottleneck with default "driver level lock".
I changed fast_tls_drv.c to use "port level lock" and then connection throughput was increased without any confusion of connection.

So my question is: does fast_tls support port level lock ?

I read fast_tls_drv.c, and found only one global variable ssl_index which is modified only in DRIVER_INIT function, so I think this answer is yes.

failed to load TLS driver

when I use the lib into my ejabberd project ,at the point of start fast_tls application crashed
CRASH REPORT is :
{shutdown,
{failed_to_start_child,fast_tls,{open_error,-10}}},
{fast_tls_app,start,[normal,[]]}

and got the error :
[error] failed to load TLS driver: cannot open shared object file: No such file or directory

Libressl support

Does it have Libressl support? Erlang crypto and ssh can't build with libressl though

TLS 1.3 support

While OpenSSL 3 is now supported, there is no mechanism provided for setting which ciphers to use for TLS 1.3. OpenSSL sets these separately (via SSL_CTX_set_ciphersuites()) than for TLS 1.2 and lower (SSL_CTX_set_cipher_list()). See https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_ciphersuites.html

Most applications I've encountered introduced a new keyword for TLS 1.3 ciphers, but at least one just has you include them in the existing keyword, and it separates them itself. Either is viable.

Unit tests do not pass unless fast_tls is installed

Hello!

I am the packager for fast_tls in Fedora, and I've been trying to get its test suite to pass in Koji (our build system). The unit tests pass if I install the package and then run the tests, but if the package isn't installed it seems that the test suite does not find the nif:

Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.WongvW
+ umask 022
+ cd /builddir/build/BUILD
+ cd fast_tls-1.0.9
+ CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic'
+ export CFLAGS
+ CXXFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic'
+ export CXXFLAGS
+ FFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -I/usr/lib64/gfortran/modules'
+ export FFLAGS
+ FCFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -I/usr/lib64/gfortran/modules'
+ export FCFLAGS
+ LDFLAGS='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld'
+ export LDFLAGS
+ VSN=1.0.9
+ export VSN
+ REBAR_VSN_CACHE_FILE=/builddir/build/BUILD/fast_tls-1.0.9/vsn.cache
+ export REBAR_VSN_CACHE_FILE
+ REBAR_DEPS_PREFER_LIBS=TRUE
+ export REBAR_DEPS_PREFER_LIBS
+ /usr/bin/rebar eunit skip_deps=true -vv
DEBUG: Evaluating config script "/builddir/build/BUILD/fast_tls-1.0.9/rebar.config.script"
DEBUG: Consult config file "/builddir/build/BUILD/fast_tls-1.0.9/rebar.config"
DEBUG: Rebar location: "/usr/bin/rebar"
DEBUG: Consult config file "/builddir/build/BUILD/fast_tls-1.0.9/src/fast_tls.app.src"
DEBUG: is_app_available, looking for App p1_utils with Path "/builddir/build/BUILD/fast_tls-1.0.9/deps/p1_utils"
DEBUG: Directory expected to be an app dir, but it doesn't exist (yet?):
/builddir/build/BUILD/fast_tls-1.0.9/deps/p1_utils
DEBUG: Available deps: []
DEBUG: Missing deps  : [{dep,bad_name,p1_utils,".*",
                             {git,"git://github.com/processone/p1_utils",
                                  {tag,"1.0.6"}},
                             false}]
DEBUG: Plugins requested while processing /builddir/build/BUILD/fast_tls-1.0.9: []
DEBUG: Predirs: []
==> fast_tls-1.0.9 (eunit)
DEBUG: Matched required ERTS version: 8.1 -> .*
DEBUG: Matched required OTP release: 19 -> .*
DEBUG: Min OTP version unconfigured
DEBUG: Triq availability: false
DEBUG: PropEr availability: false
DEBUG: QuickCheck availability: false
INFO:  sh info:
	cwd: "/builddir/build/BUILD/fast_tls-1.0.9"
	cmd: cp -R src/fast_tls_sup.erl src/fast_tls_app.erl src/fast_tls.erl src/p1_sha.erl ".eunit"
DEBUG: 	opts: [{use_stdout,false},abort_on_error]
DEBUG: Port Cmd: "cp -R src/fast_tls_sup.erl src/fast_tls_app.erl src/fast_tls.erl src/p1_sha.erl \".eunit\""
Port Opts: [exit_status,{line,16384},use_stdio,stderr_to_stdout,hide]
DEBUG: erl_opts [{d,'TEST'},debug_info,debug_info,{src_dirs,["src"]}]
DEBUG: Files to compile first: []
DEBUG: Starting 3 compile worker(s)
Compiled src/fast_tls_app.erl
Compiled src/fast_tls_sup.erl
DEBUG: Worker exited cleanly
Compiled src/p1_sha.erl
DEBUG: Worker exited cleanly
Compiled src/fast_tls.erl
DEBUG: Worker exited cleanly
INFO:  Cover compiling /builddir/build/BUILD/fast_tls-1.0.9
======================== EUnit ========================
module 'p1_sha'
  p1_sha: load_nif_test...*failed*
in function p1_nif_utils:get_so_path/3
  called as get_so_path(p1_sha,[],"p1_sha")
in call from p1_sha:'-load_nif_test/0-fun-0-'/0 (src/p1_sha.erl, line 91)
in call from p1_sha:load_nif_test/0
**error:undef
  output:<<"">>
  p1_sha: sha1_test...*failed*
in function erlang:nif_error/1
  called as nif_error(nif_not_loaded)
in call from p1_sha:sha1/1 (src/p1_sha.erl, line 71)
in call from p1_sha:'-sha1_test/0-fun-0-'/0 (src/p1_sha.erl, line 97)
**error:nif_not_loaded
  output:<<"">>
  p1_sha: sha224_test...*failed*
in function erlang:nif_error/1
  called as nif_error(nif_not_loaded)
in call from p1_sha:sha224/1 (src/p1_sha.erl, line 74)
in call from p1_sha:'-sha224_test/0-fun-0-'/0 (src/p1_sha.erl, line 103)
**error:nif_not_loaded
  output:<<"">>
  p1_sha: sha256_test...*failed*
in function erlang:nif_error/1
  called as nif_error(nif_not_loaded)
in call from p1_sha:sha256/1 (src/p1_sha.erl, line 77)
in call from p1_sha:'-sha256_test/0-fun-0-'/0 (src/p1_sha.erl, line 109)
**error:nif_not_loaded
  output:<<"">>
  p1_sha: sha384_test...*failed*
in function erlang:nif_error/1
  called as nif_error(nif_not_loaded)
in call from p1_sha:sha384/1 (src/p1_sha.erl, line 80)
in call from p1_sha:'-sha384_test/0-fun-0-'/0 (src/p1_sha.erl, line 116)
**error:nif_not_loaded
  output:<<"">>
  p1_sha: sha512_test...*failed*
in function erlang:nif_error/1
  called as nif_error(nif_not_loaded)
in call from p1_sha:sha512/1 (src/p1_sha.erl, line 83)
in call from p1_sha:'-sha512_test/0-fun-0-'/0 (src/p1_sha.erl, line 124)
**error:nif_not_loaded
  output:<<"">>
  p1_sha: to_hexlist_test...*failed*
in function erlang:nif_error/1
  called as nif_error(nif_not_loaded)
in call from p1_sha:to_hexlist/1 (src/p1_sha.erl, line 65)
in call from p1_sha:'-to_hexlist_test/0-fun-0-'/0 (src/p1_sha.erl, line 136)
**error:nif_not_loaded
  output:<<"">>
  [done in 0.023 s]
module 'fast_tls_app'
module 'fast_tls_sup'
fast_tls: load_nif_test (module 'fast_tls')...*failed*
in function p1_nif_utils:get_so_path/3
  called as get_so_path(fast_tls,[],"fast_tls_drv")
in call from fast_tls:load_nif_test/0 (src/fast_tls.erl, line 439)
in call from fast_tls:load_nif_test/0
**error:undef
  output:<<"">>
=======================================================
  Failed: 8.  Skipped: 0.  Passed: 0.
Cover analysis: /builddir/build/BUILD/fast_tls-1.0.9/.eunit/index.html
Coverdata export: /builddir/build/BUILD/fast_tls-1.0.9/.eunit/cover.coverdata
DEBUG: Reconstruct crypto []
DEBUG: Reconstruct stdlib []
DEBUG: Reconstruct kernel [{error_logger,tty}]
DEBUG: Reconstruct rebar [{log_level,warn},
                          {log_colored,uncolored},
                          {any_dir_modules,
                              [rebar_require_vsn,rebar_deps,rebar_subdirs,
                               rebar_templater,rebar_cleaner]},
                          {modules,
                              [{app_dir,
                                   [rebar_proto_compiler,
                                    rebar_protobuffs_compiler,
                                    rebar_neotoma_compiler,
                                    rebar_asn1_compiler,rebar_dia_compiler,
                                    rebar_dialyzer,rebar_erlc_compiler,
                                    rebar_lfe_compiler,rebar_erlydtl_compiler,
                                    rebar_port_compiler,rebar_otp_app,
                                    rebar_otp_appup,rebar_ct,rebar_eunit,
                                    rebar_qc,rebar_escripter,rebar_edoc,
                                    rebar_shell,rebar_xref,rebar_metacmds]},
                               {rel_dir,
                                   [rebar_appups,rebar_reltool,
                                    rebar_upgrade]}]},
                          {recursive_cmds,
                              ['check-deps',compile,'delete-deps','get-deps',
                               'list-deps','update-deps']}]
ERROR: One or more eunit tests failed.
ERROR: eunit failed while processing /builddir/build/BUILD/fast_tls-1.0.9: rebar_abort

Is there some different way I should be executing the tests so they test against the build nif (instead of trying to find the installed one), or is there a way we could patch fast_tls so that it finds the built nif locally when the tests are running?

is_modified call causes scheduling issues

There is a call to is_modified and to stat functions from inside a global lock each time an SSL connection is created. stat() blocks thread unless called via an asynchronous tactic (like in a fork).

It's a major problem for systems with slow disks, lot's of new connections, lots of cores, that are using fast_tls.

Function in question
https://github.com/processone/fast_tls/blob/1.0.20/c_src/fast_tls.c#L566

Proposed ideas

is_modified should be called on the erlang side, not inside the NIF. We should limit how often we call it.
I.e. if we have a burst of 10k incoming connections in 5 seconds, we should call is_modified once.
If we don't have incoming connections, we don't need to call it.

Than we can command to NIF to reload an updated file explicitly.

There should be API to list cached certs and info about them (for testing and introspection).
We can also read certs from erlang into binaries.

We can use NIF resources for transfering SSL_CTX-s on the erlang side and manage them in erlang.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.