Skip to content
  1. Jun 07, 2016
    • Rich Salz's avatar
      Add script to find undocumented API · 35ea640a
      Rich Salz authored
      
      
      Also tweaks to find-doc-nits, including name/synopsis checking.
      Ironically, it also reports on duplicated doc names :)
      
      Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
      35ea640a
    • Matt Caswell's avatar
      Document the issue with threads and dlopen() · c796e021
      Matt Caswell authored
      
      
      If using threads and OpenSSL is loaded via dlopen(), and subsequently
      closed again via dlclose() *before* the threads are destroyed, then
      OpenSSL will not free up the per thread resources. We need to document
      this restriction, and provide some guidance on what to do about it.
      
      I did some testing and discovered/verified a few of things (at least
      this is the behaviour on Linux):
      
      - Using OpenSSL via dlopen in a mutli-threaded app does leak memory if
      threads are destroyed after dlcose() is called.
      - In a single threaded environment, or if threads are destroyed prior to
      dlclose() being called, then no memory is leaked
      - Using the RTLD_NODELETE flag to dlopen solves the above problem
      - Interestingly the OpenSSL atexit() handler gets called when dlclose()
      is called rather than at application exit (I was worred that it might crash
      if there was an atexit() handler for a function that has been unloaded)
      - RTLD_NODELETE is a non-standard flag - but it does seem to be fairly
      widely supported. As far as I could determine (via google), at least Linux,
      Solaris, OpenBSD, FreeBSD, HP-UX all seem to support it.
      
      I also tested on Windows (using LoadLibrary instead of dlopen and
      FreeLibrary instead of dlclose) and experienced similar behaviour, except
      that (AFAIK) there is no equivalent of RTLD_NODELETE on Windows.
      
      GitHub Issue #653
      
      Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
      c796e021
  2. Jun 06, 2016
  3. Jun 05, 2016
  4. Jun 04, 2016
  5. Jun 03, 2016