CHANGELOG.md 35 KB

Version History

2.6xx

  • Reformat banner and messages
  • Update SECURITY.md
    • Clarify purpose of document, update, reformat, add PGP details
  • Reorganization of files in source tree
  • Update shell scripts to improve styling (shfmt), tune redirection, add pedantic error checking, better POSIX compliance, and appease ShellCheck
  • Update GNUmakefile
    • Support out-of-tree compilation
    • Remove shar target
    • Fix dos2unix target
    • Use C++98 compilation mode w/G++
    • Fix macOS X default installation prefix
    • Allow user to override default prefix
    • Update clean target to remove core and a.out
  • Update duma.c: Adjust ordering of included headers
  • New CMake build support
    • Generate duma.sh to use absolute path to installed shared library
    • Use C++98 standard mode if available
    • Explicitly request position independent code
  • Fix compilation warnings with GCC 9.3
  • Fix compilation on macOS X (ARM64 and Intel processors)
  • Create Attic for outdated / deprecated components
  • Overhaul and consolidate documentation into README.md
    • Optimize for both web browser and plain-text viewing
    • Integrate README.txt and INSTALL information
  • Normalize source code styling (clang-format + uncrustify)
  • Convert CHANGELOG to Markdown
    • Normalize format, fix spelling, wording, add dates
    • Squash details of generated CHANGELOG.md
  • Switch to git-changelog generated CHANGELOG

2.5.21 (2021-02-14)

  • Update contact information and documentation
    • No functional changes

2.5.20 (2021-01-04)

  • Typo fixes and build system updates
    • No functional changes

2.5.19 (2021-01-02)

  • Build tests
  • Other minor changes
  • Updated shell scripts
  • Fixed Debian release info

2.5.18 (2020-12-18)

  • Updated documentation

2.5.17 (2020-12-16)

  • Updated README with extra history and information (2020-12-15, JJ)
  • Added SECURITY.md: Add security policy and information for bug reporting (2020-12-15, JJ)
  • Added LICENSE: Merged COPYING-GPL and COPYING-LGPL (2020-08-25, JJ)
  • Updated TODO with items from 2009-12-30 by Daniel Trebbien (2020-08-25, JJ)
  • Updated TODO with items from 2008-05-23 by Michael Eddington (2020-08-25, JJ)
  • No longer build test programs (for now) to un-break static builds (2020-08-24, JJ)
  • Applied various update patches from the Buildroot Project (2020-10-28, JJ)
  • Applied a patch from Swati Kumari for additional NULL checks (2015-07-30, JJ)
  • Applied a patch for bug ID 3035145 from Reinhard Katzmann (2010-07-26, JJ)
  • Applied a patch for bug ID 2923784 from Daniel Trebbien (2009-12-30, JJ)
  • Applied a patch for bug ID 2923779 from Daniel Trebbien (2009-12-30, JJ)
  • Applied a patch for bug ID 2831348 from an anonymous SourceForge user (2009-07-23, JJ)

2.5.16 (2009-06-14)

2.5.15 (2009-04-11)

  • Added alternative locking implementation in sem_inc.c using critical sections. Code from Peter Harris, see: http://code.google.com/p/electric-fence-win32/
  • Added Windows threading to testmt.c
  • Added win32-msvc.net project file
  • Use of WIN32_SEMAPHORES on Win32 / Cygwin in sem_inc.c
    • The locking mechanism for multi-threading, with this configuration testmt.c works with pthreads or the Win32 API
  • CreateSemaphore() now used, maximum count = initial count = 1 (2008-08-03, HA)
  • Removed usage of strlen() in strncpy() (2009-03-19, HA)
  • Add patch from Andre Landwehr which fixes a race condition when using the preprocessor macro delete (2009-04-07, HA)
  • Fix bug in strncpy(): Roman Jokl reported the bug, error check was too rigorous (2009-04-11, HA)

2.5.14 (2008-04-27)

  • Added suggested ~/.gdbinit as gdbinit.rc
  • Added hint in mprotectFailed()
  • Fix GCC compiler warnings
  • Rename of sem_inc.h to duma_sem.h, cause needed by dumapp.h (2008-03-12, HA)
  • Update of README for Microsoft's pageheap.exe, a heap debugging tool (2008-04-20, HA)
  • Add patch from Philip Mucci on behalf of SiCortex
    • Fix for malloc(0) which previously always returned NULL
    • Added environment switch DUMA_MALLOC_0_STRATEGY, which may return a special protected piece of memory for malloc(0)
    • Moved malloc / SHOW_ALLOC print outputs before all abort checks (2008-04-20, Philip Mucci, HA)
  • Remove some warnings for -Wall -Wextra, especially for Cygwin
  • Add detail to some messages when source file name and line number are not available (2008-04-21, HA)
  • Removed environment variable DUMA_ALLOW_MALLOC_0, DUMA_MALLOC_0_STRATEGY = 0 is equivalent to previous DUMA_ALLOW_MALLOC_0 = 0, default is 3 (2008-04-22, HA)
  • Return unique pointer for C++ operator new for DUMA_MALLOC_0_STRATEGY = 3. Now, it should really be standards conforming. (2008-04-26, HA)
  • Fix for C++ operator new with size zero (0)
  • Added environment switch DUMA_NEW_0_STRATEGY (2008-04-27, HA)

2.5.13 (2008-03-19)

  • Apply patches from Philip Mucci of SiCortex:
    • Fix for pthread_self() and hang of testoperators test case on 64-bit Linux platforms (_x86_64_andMIPS64)
    • Added -Wall to Makefile
    • Properly version symbolic library to have the version triple (0.0.0)
    • Removed Control-M's from the source files
    • Please do not ship UNIX sources with Control-M line endings
    • Make sure ranlib is run on the static library, various platforms require this
    • Add -DPIC for shared library builds
    • Added install targets for headers (INC_INSTALL_DIR)
    • Added install targets for documentation (DOC_INSTALL_DIR)
    • Added separate test target
    • Added proper install target that also refers to GNU standard DESTDIR usage
    • Added distclean and clobber targets to remove all configuration
    • Added reconfig target to regenerate duma_config.h
    • Changed Makefile flow to recursively run if duma_config.h doesn't exist
    • Fixed return value error in testmt.c
    • Fixed args in thread-test.c
  • Update Makefile
    • Updated PACKAGE_SOURCE
    • Added new target dos2unix (2008-03-09, HA)

2.5.12 (2008-01-25)

  • Enhancement: Add environment variable DUMA_CHECK_FREQ to automatically check all memories No-Mans-Land at each n'th allocation / deallocation. Use zero (0) for n to deactivate the automatic checks (2008-01-24, HA)
  • Updated README.txt for environment variables DUMA_CHECK_FREQ and DUMA_SKIPCOUNT_INIT (2008-01-25, HA)

2.5.11 (2008-01-20)

  • Bugfix on thread safety in sem_inc.c, thanks to Andrew Kornev writing the right hint as bug-report: "[ 1875926 ] non-thread safe lock() implementation" (2008-01-20, HA)

2.5.10 (2008-01-15)

  • Added a small test program to demonstrate crashing on multi-threaded programs from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=67838 (2008-01-15, HA)
  • Added HTML comparison charts / text with C source code examples from http://www.cs.utexas.edu/~jpmartin/memCheckers.html into sub-directory comparisons with kind permission of Jean-Philippe Martin
  • Update Makefile for all C source files (2008-01-14, HA)
  • Bugfix for Makefile target install when DUMASO is empty; bug was reported by Louis Strous (2008-01-09, HA)
  • Added hint where No-Mans-Land was overwritten (below or above user-space) (2008-01-03, HA)

2.5.9 (2007-12-23)

  • Added link to mpatrol in README
  • Added shell environment variable DUMA_SKIPCOUNT_INIT (2007-08-22, HA)
  • Added section for NetBSD in Makefile; there is always one (1) memory leak on NetBSD 3.1, but the functionality works (2007-08-28, HA)
  • Tested on powerpc-apple-darwin8.0.0 inside of PearPC 0.4 on Windows:
    • Compiles and passes all confidence tests; trying to debug example1 from within gdb crashes PearPC 0.4; running without gdb creates a core dump file that can be used for post-mortem analysis (2007-09-02, HA)
  • Bugfix for _duma_strncpy(): no more calls to strlen(), reported by Kamal Neet
  • Applied patch from Eddy Pronk submitted to SourceForge with title "libduma.so on Solaris" (2007-11-13, HA)
  • Added minor error checking in print.c (about DUMA_OUTPUT_FILE)
  • Added some comments in duma.h and dumapp.h (2007-12-23, HA)

2.5.8 (2007-08-19)

  • Fix: Set DUMA_PREFER_GETENV on Mac OS X; it doesn't link with environ
  • Fix: MINGW wants an exact declaration for function DUMA_strerror in print.h
  • Fix: Add work-around in testmt.c to compile on Microsoft Windows
  • Fix: Call duma_init() (#ifdef DUMA_EXPLICIT_INIT) in testoperators.cpp
  • Added notes on pre-packaged .rpm files, provided by Dries Verachtert at http://dries.ulyssis.org/apt/packages/duma/info.html (2007-08-17, HA)
  • Added environment variable DUMA_REPORT_ALL_LEAKS defaulting to zero (0)
  • Added empty definitions for macro functions DUMA_SET_ALIGNMENT(), DUMA_SET_PROTECT_BELOW(), and DUMA_SET_FILL()
  • Updated README on shell environment variable options, added some entries to section "OTHER ALTERNATIVE / ADDITIONAL DEBUGGING SOFTWARE / TOOLS" and added section "COMPILATION NOTES FOR RELEASE / PRODUCTION" (2007-08-18, HA)
  • Add single-line function duma_alloc_return(); all memory allocated from DUMA is returned through this function. This allows you to set a conditional breakpoint on this function to catch a specific allocation (2007-08-19, HA)

2.5.7 (2007-08-17)

  • Reformatting: Converted tabs to spaces
  • Added test program testenv.c using global environment variable as alternative to getenv() (2007-08-15, HA)
  • Added output of some configuration settings in start-up banner
  • Switched off leak detection in shared library for all platforms; use the static library for finding leaks, with information where the memory was allocated
    • NOTE: Full leak checking without further information is quite useless. Too many "correct" programs don't free all memory, causing the system to free the memory at program termination. As a result, many platforms / environments are reported as "broken" by DUMA
  • Output allocator type (malloc, strdup, ) with leak reporting for each non-freed memory block
  • Removed option DUMA_USE_FRAMENO and the frameno variable; I suppose nobody is using it, but, additionally, it is not thread-safe
  • Added option DUMA_PREFER_GETENV; if you prefer standard C library getenv() over global char **environ
  • Added function duma_check(void*) and macro DUMA_CHECK(); it checks the No-Mans-Land - especially the unprotected end - of the memory block
  • Added function duma_checkAll() and macro DUMA_CHECKALL(); it checks the No-Mans-Land - especially the unprotected end - of all allocated memory blocks (2007-08-17, HA)

2.5.6 (2007-08-15)

  • Modified example Makefile to not link to pthreads on Microsoft Windows (2007-08-12, HA)
  • Added win32-msvc.net project file for testoperators.cpp
  • Bugfix: Support for option DUMA_NO_LEAKDETECTION; check for this option before calling any non-existing operators with leak parameters
  • Enhanced comments in Makefile for DUMA_SO__ and DUMA_LIB__ options
  • Changes in Makefile to build dynamic library on Mac OS X
  • Preloading DUMA library now works on Mac OS X
  • Added test for Debian bug report 241156 as testmt.c (2007-08-14, HA)

2.5.5 (2007-08-11)

  • Support for Solaris (Solaris 10 using the GNU toolchain)
  • Fix for Solaris: strerror() calls calloc(), leading to recursion
  • Added preprocessor option DUMA_NO_STRERROR
  • Internal redesign
    • Collected several global static variables into one structure and several global non-static variables to another structure, each with prepended and appended protection space (2007-08-11, HA)

2.5.4 (2007-07-31)

  • Support for Win32 using MSYS / MINGW when calling make with OSTYPE=msys; call mingw32-make OSTYPE=msys from the Windows Command Prompt, after adding MINGW's bin to the PATH (2007-07-28, HA)
  • Echo a single dot (.) for Windows Command Prompt (2007-07-31, HA)

2.5.3 (2007-07-15)

  • Added simple Makefile for examples in sub-directory example_makes/ex*
  • Modified Makefile to avoid build of shared libs / executables specific to OS
  • dumapp.h now keeps C macro definitions
  • Support for Mac OS X when calling make with OS=osx
  • Support for Win32 using Cygwin when calling make with OSTYPE=cygwin (2007-07-14, HA)
  • Bugfix in createconf.c for Win32 when not using Visual C++
  • Cygwin fixes
    • Switch off stacktrace (before trying to integrate in Makefile)
    • caddr_t and u_int were already defined
    • Use signals on Linux / UNIX in dumatest.c
    • Update Makefile (2007-07-13, HA)

2.5.2 (2007-07-12)

  • Other minor corrections
  • Added preprocessor option DUMA_SEMAPHORES to select pthreads locking mechanism: semaphores or mutexes
  • Removed automatically generated Visual C++ file detoursexample1.ncb from CVS and archives (2007-07-12, HA)

2.5.1 (2007-07-08)

  • Turned global variables DUMA_PROTECT_BELOW, DUMA_ALIGNMENT, and DUMA_FILL into thread local variables
    • Access with new function macros:
    • DUMA_SET_ALIGNMENT()
    • DUMA_SET_PROTECT_BELOW()
    • DUMA_SET_FILL()
  • Support for posix_memalign()
  • Add pthread_mutex implementation (as an alternative to semaphores) (2007-07-03, HA)

2.5.0 (2006-07-01)

  • Documentation updates
    • Use Natural Docs
  • Win32-specific fixes
    • Detours support for using DUMA (with just binaries)
    • Compile a DUMA DLL
    • DUMA can perform stack traces of each allocation
    • Support for Visual Studio 2005
    • Support for output to debug console
  • Support for output to a file
    • Can control output via environmental variables

2.4.28 (2006-06-18)

  • Enhancement: Reworked initialization for Request-ID 1458083 on SF; checks for recursive calls in _duma_init() and duma_init() (2006-06-17, HA)
  • Bugfix in new[] operators occurred on alpha-linux1 on SF's compile farm (2006-06-18, HA)
  • Fix in Makefile: DUMA_OPTIONS was not used when compiling createconf.o
  • Fix compile error when DUMA_NO_LEAKDETECTION was set in testoperators.cpp
  • Fix to obey EXPLICIT_INIT in testoperators.cpp (2006-06-18, HA)
  • Fix: As in Request-ID 1482267 on SF: Updated install directory for manual: $prefix/share/man/man3 should fit the Filesystem Hierarchy Standard (FHS) 2.3 for /usr and /usr/local (2006-06-18, HA)

2.4.27 (2006-04-23)

  • Published a German-language article about DUMA on http://duma.sourceforge.net
  • Bugfix: Removed buffer overflow in DUMA_sprintf() for long file names
    • Added parameter maxsize for output buffers in some functions
    • Incremented STRING_BUFFER_SIZE to reduce this risk; bug reported by loigu@volny.cz (2006-01-09, HA)

2.4.26 (2005-10-28)

  • New project file for Dev-C++ 4.9.9.2 for createconf from Benjamin Berkels
  • Bugfix and enhancement: Avoid recursion from sem_init() in Linux / UNIX, where sem_init() may call malloc(), which again calls semaphore locking (2005-10-25, HA)
  • Bugfix in delete macro: Magic must be a single variable! Bug was reported by Benjamin Berkels
  • Some more TLS preparation (2005-10-28, HA)

2.4.25 (2005-10-21)

  • Bugfix: semaphores were not initialized correctly; this lead to a hang
    • Thanks for reporting (and providing a test environment) go to Tim Braun
  • Fixes for Dev-C++ from Benjamin Berkels
    • Updated project files for Dev-C++ 4.9.9.2 / GCC 3.3.1
    • Fixed compiler errors affecting Dev-C++ 4.9.9.2 / GCC 3.3.1
  • Modified delete macros
  • DUMA_Magic now array (call_depth) (2005-10-21, HA)

2.4.24 (2005-10-10)

  • New program testoperators writes it's own member new / delete operator with file name and line number forwarding to DUMA
  • Reworked Makefile: Added tstheap_so, which runs with shared library
  • Output in banner now shows which library (static / shared) is in use (2005-10-09, HA)

2.4.23 (2005-10-08)

  • Write DUMA's preprocessor flags at compile time to duma_config.h
  • Update Makefile (2005-10-07, HA)

2.4.22 (2005-10-06)

  • C++ new operators are now (more) standard conforming; allocations of size equal to zero (0) now returns a non-zero (!0) pointer
  • New option DUMA_SUPPRESS_ATEXIT as environment variable from Tim Braun that suppress calls to the C library's atexit() function for DUMA's leak checking function in buggy environments (where atexit() hangs)
  • Implemented alternative for C library's atexit() using the GNU C compiler's 'destructor' function attribute
  • Add new preprocessor flag DUMA_PREFER_ATEXIT in Makefile
  • Updated project files for Dev-C++ 4.9.9.2 / GCC 3.3.1 from Benjamin Berkels
  • Updated TODO
  • Bugfix: EF_ was not replaced by DUMA_ in tstheap.c
  • Bugfix: Fix rules for building test objects; DUMA_OPTIONS were not passed (2005-10-06, HA)

2.4.21 (2005-09-29)

  • Modified Makefile: name for shared library and symbolic links now configurable at start
  • Update README
  • Sort TODO by priority (2005-10-04, HA)
  • Bugfix: Follow enum _DUMA_FailReturn in _duma_allocate() function
  • Bugfix: Initializing userAddr in _duma_allocate() function may lead to bug if allocation failed
  • new operators now (nearly) C++ standard conforming (2005-09-29, HA)

2.4.20 (2005-09-27)

  • Integrated patches from Zbynek Vyskovsky
    • Use tighter alignment when size is smaller than default alignment
    • Replaced calls to EF_Exit() by EF_Abort()
    • Modified README (2005-09-19 - 2005-09-23, ZV)
    • Reworked Zbynek's patch to use long in internal address calculations
    • Auto-detect compatible integer types DUMA_ADDR and DUMA_SIZE in createconf
    • Auto-detect DUMA_MIN_ALIGNMENT in createconf
    • Write values to duma_config.h
    • Use auto-detected values in code
  • Reworked DUMA_sprintf() and it's format specifier
  • Bugfixed Makefile: DUMA_SO_OPTIONS also used DUMA_OPTIONS
    • Removed -DDUMA_NO_CPP_SUPPORT, as LD_PRELOAD works for C++ new, new[], delete and delete[] operators (2005-09-24, HA)
  • Bugfixed reduceProtectedMemory(): Windows VirtualFree(,,MEM_RELEASE) can only free whole allocations, not parts
  • Bugfix in memory allocation: try allocation in loop until reduceProtectedMemory() fails de-allocating more memory; long running programs with much memory handling should benefit (2005-09-26, HA)
  • Added project files for Microsoft Visual C++ .NET 2003
  • Applied one more patch from Zbynek Vyskovsky concerning alignment; his calculation of next lower power of two (2) is much smaller
  • Bugfix: return (void*)0 in _duma_allocate(), when userSize == 0 (2005-09-27, HA)

2.4.19 (2005-09-20)

  • Fixed compile error in duma.c introduced in 2.4.18
  • Enhanced Makefile (2005-09-19, HA)
  • Added run-time check for DUMA_PAGE_SIZE from duma_config.h (2005-09-17, HA)
  • Added check for initialization function __attribute ((constructor)) (2005-09-18, HA)

2.4.18 (2005-09-16)

  • DUMA_get_sem() is no longer called when DUMA_NO_THREAD_SAFETY is set
  • Split CHANGELOG document into two files: TODO and CHANGELOG
  • Created INSTALL document
  • Modified Makefile: added special rules for building shared library (2005-09-10, HA)
  • Modified README (2005-09-16, HA)
  • Removed option DUMA_FREE_WIPES
  • Documented options in README:
    • DUMA_SLACKFILL
    • DUMA_MALLOC_FAILEXIT
    • DUMA_MAX_ALLOC
    • DUMA_FREE_ACCESS
    • DUMA_SHOW_ALLOC
    • DUMA_DISABLE_BANNER
  • Add new preprocessor flag DUMA_NO_HANG_MSG in Makefile (2005-09-16, HA)

2.4.17 (2005-09-10)

  • Forked Electric Fence, because Bruce Perens wrote: > … Hayati Ayguen must choose another name for his program > … "Electric Fence" is a trademark he is not permitted to use …
  • Opened a "new" project for DUMA (Detect Unintended Memory Access)
    • Rename efence to duma
    • Rename Electric Fence to DUMA
    • Rename EF_ to DUMA_
    • Rename ef_ to duma_ (and so on …) (2005-09-10, HA)

2.4.16 (2005-08-28)

  • Added examples for article portability: use standardized strerror() instead of sys_nerr and sys_errlist[]
  • Bugfix: Error when defining EF_NO_LEAKDETECTION in _eff_allocate()
  • Bugfix: Error when defining EF_NO_LEAKDETECTION in _eff_deallocate()
  • Enhancement: Mark allocations from standard libraries before ef_init() is called with lineno = -1 to allow special treatment in leak_checking
  • Changed default in eftest to use two signals: SIGSEGV and SIGBUS instead of single PAGE_PROTECTION_VIOLATED_SIGNAL
  • Define functions (memcpy, strcpy, strcat) as non-intrinsic for Visual C++ compiler in Release mode (2005-08-28, HA)
  • Enhancement: Allow alignments bigger than page size (2005-08-23, HA)
  • Document EF_NO_THREAD_SAFETY preprocessor flag in Makefile
  • Added EF_EXPLICIT_INIT preprocessor flag to workaround buggy environments (2005-08-21, HA)

2.4.15 (2005-07-24)

  • Bugfixed page management under Microsoft Windows; virtual address space was never released. Unfortunately, this "quick" fix avoids memory pooling on Windows
  • Remove double "Electric Fence:" messages when calling EF_Abort() or EF_Exit() (2005-07-24, HA)
  • Added parameter ExitOnFail to Page_Create()
  • Added warning when allocation failed and ExitOnFail is off
    • Extended _eff_allocate() for this; prepared new for standard conformity (2005-07-20, HA)

2.4.14 (2005-07-15)

  • Integrated code from Tim Braun
    • New EF_SHOW_ALLOC environment variable, which prints allocations and deallocation when variable set check if malloc() and free() are bound to efence (2005-07-15, HA)
  • Integrated a patch from Zbynek Vyskovsky in his words: "I modified Electric Fence a little, to be able to catch free-ing memory via watch point in debugger. The patch (attached) solves the problem when you are watching expression for change and suddenly realize the memory containing expression disappeared. It has no other effect, just makes debugging easier." (2005-07-11, HA)
  • Bugfix for internal slot mode EFST_DEALLOCATED reported by Mikolas Patocka error occurred when user-space memory region of freed memory is reused from system and freed again: efence claimed it was freeing already freed memory (2005-03-02, HA)
  • Defining macros / functions, also for str[n]cpy() and str[n]cat(), checking for overlapping memory regions (2005-02-17, HA)
  • Now defining macros / functions, also for strdup() / memcpy()
  • memcpy() checks if memory regions overlap (2005-02-16, HA)
  • Added EF_OLD_DEL_MACRO preprocessor flag to keep compatibility to old DEL_ELEM() / DEL_ARRAY() macros; when not defined, a macro for delete is defined, which has standard conforming syntax (2005-02-14, HA)

2.4.13 (2005-02-11)

  • Added internal flag saving the source (allocation / deallocation) for file name and line number
  • Added EF_OLD_NEW_MACRO preprocessor flag to keep compatibility to old NEW_ELEM() / NEW_ARRAY() macros. When not defined, a macro for new is defined, which has standards conforming syntax. Unfortunately, you have to use DEL_ELEM / DEL_ARRAY further to utilize file name and line number of deallocation calls (2005-02-10, HA)
  • Reworked / revised ALL internal functions (!!!)
  • Free-ing already freed memory is now (better) detected
  • Disallows coalescing memory regions and also stores __FILE__ and __LINE__ of free() to be able to print position of first free
  • Added EF_USE_FRAMENO preprocessor flag. Changed not to support EF_newFrame() and EF_delFrame() by default (2005-02-07, HA)
  • Applied bug fix posted by Luis Gonzalez. Bug was occurring under SuSE Linux 9.1 when calling eftest with a higher number (such as 10000.) (2005-02-02, HA)
  • Bugfixed memalign() which was not exported as extern "C". This bug lead to crashes when free-ing memory allocated by memalign(). Bug was reported by Grant Goodyear and Steven G. Johnson. Now defining macros / functions also for valloc() (2005-02-03, HA)

2.4.12 (2005-01-05)

  • Added EF_NO_GLOBAL_MALLOC_FREE preprocessor flag to work-around buggy environments: no malloc(), free(), realloc(), calloc() are put into the global name-space of the efence library, thus only files which include efence.h call the efence malloc(), replacement functions. This flag is also helpful where linking order cannot get controlled e.g. when memory is allocated from a library not using efence, but free is called from efence using efence. This is a problem when using DLL libraries, which are linked against msvcrt.dll and its malloc() / free() under Microsoft Windows. The same problem applies when libstdc++ / libgcc is not linked in correct order (2005-01-04, HA)

2.4.11 (2005-01-03)

  • Bugfixed signal handling in confidence test (eftest), which lead to false errors with my newly installed Mandrake Linux 10.1 (2005-01-03, HA)
  • Bugfixed checking at free(), when EF_PROTECT_BELOW flag changed which lead to false positives
  • Bugfixed error message output to stderr; length of messages were calculated too short; fixes functions EF_Abort() and EF_Exit() (2004-08-15, HA)

2.4.10 (2004-07-21)

  • Added preprocessor macros for CA_DECLARE, CA_DEFINE, and CA_REF in efence.h for declaration, definition and reference to Checked Arrays. These macros allow checks of arrays which are allocated on stack, but they are very slow on references cause every reference has to be checked
  • Added EF_ASSERT() which definitely halts (for debugging)
  • Precompiled headers have to be switched off in Microsoft Visual C++ to get all the C++ operators to work, but don't ask me why!
  • Implemented all the various new / delete / new[] / delete[] C++ operators. The implementations are not C++ conforming concerning their behavior added type mismatch detection between malloc() / free(), new / delete, new[] / delete[]; this is deactivated when EF_NO_LEAKDETECTION is set
  • Added EF_MALLOC_FAILEXIT parameter (for now, not implemented)
  • Extended semantics of EF_PROTECT_FREE
  • Added EF_MAX_ALLOC parameter
  • Bugfix: Why should we ever use Page_Delete() when setting up the "dead" page?
  • Bugfix: EF_PROTECT_FREE did exactly the opposite of what it should do, from Bruce's version 2.2.2 (or maybe earlier) (2004-07-16, HA)
  • Confidence test now pass again
  • Removed problems when used EF_NO_LEAKDETECTION preprocessor flag
  • Makefile works again, also included automatic generation of efence_config.h
  • Added automatic generation and inclusion of efence_config.h instead function Page_Size() (2004-07-15, HA)
  • Added code for thread safety: Only one thread at once is allowed to enter some internal functions. This can be deactivated using the EF_NO_THREAD_SAFETY preprocessor flag. There may be flaws concerning threads, when using the C++ operators for leak detection; use the EF_NO_LEAKDETECTION preprocessor flag if you encounter problems!
  • Some files (page.c and print.c) have turned to header files, the needed functions are now declared static and are no more visible outside efence.c this way the NDEBUG preprocessor flag has been replaced by EF_NO_EFENCE, EF_NO_CPP_SUPPORT - be careful not to include efence in your release builds! (2004-03-21, HA)

2.4.9 (2002-12-05)

  • Added checks for No-Mans-Land (space which cannot get protected from the MMU); this area gets filled with EF_FILL on allocation, and gets checked on deallocation (2002-12-05, HA)

2.4.8 (2002-12-04)

  • One big fix and many smaller improvements for C++ code. Old macros NEW_ELEM, NEW_ARRAY were not usable when allocating classes, which have constructor / destructor; the usage of these macros has not changed (2002-12-04, HA)

2.4.7 (2002-11-22)

  • Support Borland's free command-line tools: Borland C++ Builder 5.5
    • Throw away unnecessary declarations of malloc(), free(), Borland didn't like them, and neither Microsoft Visual C++ 6.0, nor gcc (Dev-C++) needs them
    • Added project files in sub-directory win32-vide for VIDE 1.24 using Borland C++ Builder 5.5 (see http://www.objectcentral.com) (2002-11-22, HA)

2.4.6 (2002-11-18)

  • Remove memory leak in eftest
  • Allow re-inclusion of efence.h after inclusion of efenceint.h
  • Added some project files in sub-directory win32-devcpp for Dev-C++ 4.9.6 using gcc (See http://www.bloodshed.net/) and saved its generated Makefile's; left tstheap's memory leaks (2002-11-18, HA)

2.4.5 (2002-11-17)

  • Modifications in print routines (EF_Print(), EF_Abort(), )
  • Added direct output to Visual C++ debug output window
  • Some additions to Makefile (2002-11-17, HA)

2.4.4 (2002-11-03)

  • Separation of C++ files: efencepp.h, efencepp.cpp
  • Rename EF_push() / EF_pop() to EF_newFrame() / EF_delFrame()
  • Add new compile option EF_NO_LEAKDETECTION
  • Add new compile option EF_NO_CPP
  • Split efence.h to efence.h and efenceint.h
  • Add Copyright and License information to many files
  • Rename COPYING to COPYING-GPL (2002-11-03, HA)

2.4.3 (2002-10-08)

  • Added following preprocessor macros for Release and Debug Mode
    • #define NEW_ELEM(TYPE) new TYPE
    • #define NEW_ARRAY(TYPE,COUNT) new (TYPE)[COUNT]
    • #define DEL_ELEM(PTR) delete PTR
    • #define DEL_ARRAY(PTR) delete []PTR which are mapped to malloc() and free() in Debug Mode
  • Use these macros to get the file name and line number of a C++-style memory leak (2002-10-08, HA)

2.4.2 (2002-10-07)

  • Added support for implicit and explicit leak checking:
    • void EF_push(void) creates a new memory frame
    • void EF_pop(void) checks for memory leaks allocated after EF_push(); this function is called automatically by onexit(), even without EF_push() (2002-10-07, HA)

2.4.1 (2002-10-06)

  • Port to Windows NT (2000 / XP) by adding sections to following functions:
    • Page_AllowAccess()
    • Page_Create()
    • Page_Delete()
    • Page_DenyAccess()
    • Page_Size() (2002-10-06, HA)

2.4.0 (2002-10-03)

  • Added support for C++ operators new, new[], delete and delete[]
  • Added some project files in sub-directory win32-msvc/ for Microsoft Visual C++ 6.0 (2002-10-03, HA)

2.2.2

  • Shared library must be position-independent code

2.2.0

  • Merge in bug-fixes, multi-thread patch, shared library patch, debian/ sub-directory used for building the Debian package

2.0.5 (1995-01-20)

  • Port to Linux (1995-01-20)

2.0.4 (1994-09-30)

  • When realloc is passed a zero address, it should work the same way as malloc(). Fix forward declaration of mprotect() in page.c to use void *, not caddr_t, for addresses; IRIX 5.0.1 complained about that (1994-09-30)

2.0.3 (1993-05-29)

  • Don't attempt to allow access to a zero-sized page when EF_ALLOW_MALLOC_0 is set
  • Attempt to un-map memory from Page_Delete(). If that doesn't work, fall back by protecting the page from all references. Un-mapping small segments of a mapping used to crash my SGI IRIX 5.0 system; I assume that nobody is running 5.0 any longer (1993-05-29)

2.0.2

  • Add support for DEC Alpha
  • Add %a pattern for printing addresses, which assumes they are passed in a void *

2.0.1

  • Add work-arounds for kernel and library bugs under HP-UX
    • HP has been notified and will repair these soon