- Unreleased
- 2021
- 2020
- 2009
- 2008
- 2007
- 2006
- 2005
- 2004
- 2002
- 1995
- 1994
- 1993
- 1992
- 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
shartarget - Fix
dos2unixtarget - Use C++98 compilation mode w/G++
- Fix macOS X default installation prefix
- Allow user to override default prefix
- Update clean target to remove
coreanda.out
- Update
duma.c: Adjust ordering of included headers - New CMake build support
- Generate
duma.shto use absolute path to installed shared library - Use C++98 standard mode if available
- Explicitly request position independent code
- Generate
- 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.txtandINSTALLinformation
- Normalize source code styling (
clang-format+uncrustify) - Convert
CHANGELOGto Markdown- Normalize format, fix spelling, wording, add dates
- Squash details of generated
CHANGELOG.md
- Switch to
git-changeloggeneratedCHANGELOG
- Update contact information and documentation
- No functional changes
- Typo fixes and build system updates
- No functional changes
- Build tests
- Other minor changes
- Updated shell scripts
- Fixed Debian release info
- Updated documentation
- Updated
READMEwith 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: MergedCOPYING-GPLandCOPYING-LGPL(2020-08-25, JJ) - Updated
TODOwith items from 2009-12-30 by Daniel Trebbien (2020-08-25, JJ) - Updated
TODOwith 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
NULLchecks (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)
- Add
memmove()implementation based onmemove()fromklibcby Andris Zeila: http://sf.net/tracker/?func=detail&aid=2792252&group_id=149725&atid=775376 (2009-05-21, HA) - Fixed "Broken build in MSYS" and "C++ tests fail"
- Fixed
USE_WIN32_CRIT_SECTimplementation insem_inc.c - Added make section for
OSTYPE=msys-sh, which uses mingw32-gcc / G++
- Fixed
- Use
USE_WIN32_CRIT_SECTimplementation for Cygwin, fixestestoperator(2009-05-23, HA) - Remove CVS sub-directories from packaging
- Remove
debiansub-directory from CVS (2009-06-07, HA) - Fixed "Wrong
LD_PRELOADpath induma.sh". see https://sf.net/tracker/?func=detail&aid=2800139&group_id=149725&atid=775376 (2009-06-12, HA) - Fixed "GNUmakefile is missing DESTDIR" using submitted patch: https://sf.net/tracker/?func=detail&aid=2800137&group_id=149725&atid=775376
- Moved definition of
MAN_INSTALL_DIRandDOC_INSTALL_DIRinGNUmakefileafter definition ofprefix(2009-06-15, HA) - Removed
GNUmakefileoptionDUMA_SEMAPHORES(2009-06-14, HA)
- Added alternative locking implementation in
sem_inc.cusing 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_SEMAPHORESon Win32 / Cygwin insem_inc.c- The locking mechanism for multi-threading, with this configuration
testmt.cworks with pthreads or the Win32 API
- The locking mechanism for multi-threading, with this configuration
CreateSemaphore()now used, maximum count = initial count = 1 (2008-08-03, HA)- Removed usage of
strlen() instrncpy()(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)
- Added suggested
~/.gdbinitasgdbinit.rc - Added hint in
mprotectFailed() - Fix GCC compiler warnings
- Rename of
sem_inc.htoduma_sem.h, cause needed bydumapp.h(2008-03-12, HA) - Update of
READMEfor Microsoft'spageheap.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 returnedNULL - Added environment switch
DUMA_MALLOC_0_STRATEGY, which may return a special protected piece of memory formalloc(0) - Moved
malloc/SHOW_ALLOCprint outputs before all abort checks (2008-04-20, Philip Mucci, HA)
- Fix for
- 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 = 0is equivalent to previousDUMA_ALLOW_MALLOC_0 = 0, default is3(2008-04-22, HA) - Return unique pointer for C++ operator
newforDUMA_MALLOC_0_STRATEGY = 3. Now, it should really be standards conforming. (2008-04-26, HA) - Fix for C++ operator
newwith size zero (0) - Added environment switch
DUMA_NEW_0_STRATEGY(2008-04-27, HA)
- Apply patches from Philip Mucci
of SiCortex:
- Fix for
pthread_self()and hang oftestoperatorstest case on 64-bit Linux platforms (x86_64_and_MIPS64) - Added
-Wallto 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-Mline endings
- Please do not ship UNIX sources with
- Make sure
ranlibis run on the static library, various platforms require this - Add
-DPICfor shared library builds - Added install targets for headers (
INC_INSTALL_DIR) - Added install targets for documentation (
DOC_INSTALL_DIR) - Added separate
testtarget - Added proper
installtarget that also refers to GNU standardDESTDIRusage - Added
distcleanandclobbertargets to remove all configuration - Added
reconfigtarget to regenerateduma_config.h - Changed
Makefileflow to recursively run ifduma_config.hdoesn't exist - Fixed return value error in
testmt.c - Fixed args in
thread-test.c
- Fix for
- Update
Makefile- Updated
PACKAGE_SOURCE - Added new target
dos2unix(2008-03-09, HA)
- Updated
- Enhancement: Add environment variable
DUMA_CHECK_FREQto 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.txtfor environment variablesDUMA_CHECK_FREQandDUMA_SKIPCOUNT_INIT(2008-01-25, HA)
- Bugfix on thread safety in
sem_inc.c, thanks to Andrew Kornev writing the right hint as bug-report: "[ 1875926 ] non-thread safelock()implementation" (2008-01-20, HA)
- 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
Makefilefor all C source files (2008-01-14, HA) - Bugfix for
MakefiletargetinstallwhenDUMASOis 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)
- 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.0inside of PearPC 0.4 on Windows:- Compiles and passes all confidence tests; trying to debug
example1from 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)
- Compiles and passes all confidence tests; trying to debug
- Bugfix for
_duma_strncpy(): no more calls tostrlen(), 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(aboutDUMA_OUTPUT_FILE) - Added some comments in
duma.handdumapp.h(2007-12-23, HA)
- Fix: Set
DUMA_PREFER_GETENVon Mac OS X; it doesn't link withenviron - Fix: MINGW wants an exact declaration for function
DUMA_strerrorinprint.h - Fix: Add work-around in
testmt.cto compile on Microsoft Windows - Fix: Call
duma_init()(#ifdef DUMA_EXPLICIT_INIT) intestoperators.cpp - Added notes on pre-packaged
.rpmfiles, provided by Dries Verachtert at http://dries.ulyssis.org/apt/packages/duma/info.html (2007-08-17, HA) - Added environment variable
DUMA_REPORT_ALL_LEAKSdefaulting to zero (0) - Added empty definitions for macro functions
DUMA_SET_ALIGNMENT(),DUMA_SET_PROTECT_BELOW(), andDUMA_SET_FILL() - Updated
READMEon 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)
- Reformatting: Converted tabs to spaces
- Added test program
testenv.cusing global environment variable as alternative togetenv()(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_FRAMENOand theframenovariable; I suppose nobody is using it, but, additionally, it is not thread-safe - Added option
DUMA_PREFER_GETENV; if you prefer standard C librarygetenv()over global char**environ - Added function
duma_check(void*)and macroDUMA_CHECK(); it checks the No-Mans-Land - especially the unprotected end - of the memory block - Added function
duma_checkAll()and macroDUMA_CHECKALL(); it checks the No-Mans-Land - especially the unprotected end - of all allocated memory blocks (2007-08-17, HA)
- Modified example
Makefileto 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
MakefileforDUMA_SO__andDUMA_LIB__options - Changes in
Makefileto 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)
- Support for Solaris (Solaris 10 using the GNU toolchain)
- Fix for Solaris:
strerror()callscalloc(), 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)
- Support for Win32 using MSYS / MINGW when calling make with
OSTYPE=msys; callmingw32-make OSTYPE=msysfrom the Windows Command Prompt, after adding MINGW'sbinto the PATH (2007-07-28, HA) - Echo a single dot (
.) for Windows Command Prompt (2007-07-31, HA)
- Added simple
Makefilefor examples in sub-directoryexample_makes/ex* - Modified
Makefileto avoid build of shared libs / executables specific to OS dumapp.hnow 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.cfor Win32 when not using Visual C++ - Cygwin fixes
- Switch off stacktrace (before trying to integrate in
Makefile) caddr_tandu_intwere already defined- Use signals on Linux / UNIX in
dumatest.c - Update
Makefile(2007-07-13, HA)
- Switch off stacktrace (before trying to integrate in
- Other minor corrections
- Added preprocessor option
DUMA_SEMAPHORESto select pthreads locking mechanism: semaphores or mutexes - Removed automatically generated Visual C++ file
detoursexample1.ncbfrom CVS and archives (2007-07-12, HA)
- Turned global variables
DUMA_PROTECT_BELOW,DUMA_ALIGNMENT, andDUMA_FILLinto thread local variables- Access with new function macros:
DUMA_SET_ALIGNMENT()DUMA_SET_PROTECT_BELOW()DUMA_SET_FILL()
- Access with new function macros:
- Support for
posix_memalign() - Add
pthread_muteximplementation (as an alternative to semaphores) (2007-07-03, HA)
- 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
- Enhancement: Reworked initialization for Request-ID 1458083 on SF;
checks for recursive calls in
_duma_init()andduma_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_OPTIONSwas not used when compilingcreateconf.o - Fix compile error when
DUMA_NO_LEAKDETECTIONwas set intestoperators.cpp - Fix to obey
EXPLICIT_INITintestoperators.cpp(2006-06-18, HA) - Fix: As in Request-ID 1482267 on SF: Updated install directory for manual:
$prefix/share/man/man3should fit the Filesystem Hierarchy Standard (FHS) 2.3 for/usrand/usr/local(2006-06-18, HA)
- 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
maxsizefor output buffers in some functions - Incremented
STRING_BUFFER_SIZEto reduce this risk; bug reported by loigu@volny.cz (2006-01-09, HA)
- Added parameter
- New project file for Dev-C++ 4.9.9.2 for
createconffrom Benjamin Berkels - Bugfix and enhancement: Avoid recursion from
sem_init()in Linux / UNIX, wheresem_init()may callmalloc(), which again calls semaphore locking (2005-10-25, HA) - Bugfix in
deletemacro: Magic must be a single variable! Bug was reported by Benjamin Berkels - Some more TLS preparation (2005-10-28, HA)
- 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
deletemacros DUMA_Magicnow array (call_depth) (2005-10-21, HA)
- New program
testoperatorswrites it's own membernew/deleteoperator with file name and line number forwarding to DUMA - Reworked
Makefile: Addedtstheap_so, which runs with shared library - Output in banner now shows which library (static / shared) is in use (2005-10-09, HA)
- Write DUMA's preprocessor flags at compile time to
duma_config.h - Update
Makefile(2005-10-07, HA)
- C++
newoperators are now (more) standard conforming; allocations of size equal to zero (0) now returns a non-zero (!0) pointer - New option
DUMA_SUPPRESS_ATEXITas environment variable from Tim Braun that suppress calls to the C library'satexit()function for DUMA's leak checking function in buggy environments (whereatexit()hangs) - Implemented alternative for C library's
atexit()using the GNU C compiler's 'destructor' function attribute - Add new preprocessor flag
DUMA_PREFER_ATEXITinMakefile - Updated project files for Dev-C++ 4.9.9.2 / GCC 3.3.1 from Benjamin Berkels
- Updated
TODO - Bugfix:
EF_was not replaced byDUMA_intstheap.c - Bugfix: Fix rules for building test objects;
DUMA_OPTIONSwere not passed (2005-10-06, HA)
- Modified
Makefile: name for shared library and symbolic links now configurable at start - Update
README - Sort
TODOby priority (2005-10-04, HA) - Bugfix: Follow
enum _DUMA_FailReturnin_duma_allocate()function - Bugfix: Initializing
userAddrin_duma_allocate()function may lead to bug if allocation failed newoperators now (nearly) C++ standard conforming (2005-09-29, HA)
- Integrated patches from Zbynek Vyskovsky
- Use tighter alignment when size is smaller than default alignment
- Replaced calls to
EF_Exit()byEF_Abort() - Modified
README(2005-09-19 - 2005-09-23, ZV) - Reworked Zbynek's patch to use
longin internal address calculations- Auto-detect compatible integer types
DUMA_ADDRandDUMA_SIZEincreateconf - Auto-detect
DUMA_MIN_ALIGNMENTincreateconf - Write values to
duma_config.h - Use auto-detected values in code
- Auto-detect compatible integer types
- Reworked
DUMA_sprintf()and it's format specifier - Bugfixed
Makefile:DUMA_SO_OPTIONSalso usedDUMA_OPTIONS- Removed
-DDUMA_NO_CPP_SUPPORT, asLD_PRELOADworks for C++new,new[],deleteanddelete[]operators (2005-09-24, HA)
- Removed
- Bugfixed
reduceProtectedMemory(): WindowsVirtualFree(,,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*)0in_duma_allocate(), whenuserSize == 0(2005-09-27, HA)
- Fixed compile error in
duma.cintroduced in 2.4.18 - Enhanced
Makefile(2005-09-19, HA) - Added run-time check for
DUMA_PAGE_SIZEfromduma_config.h(2005-09-17, HA) - Added check for initialization function
__attribute ((constructor))(2005-09-18, HA)
DUMA_get_sem()is no longer called whenDUMA_NO_THREAD_SAFETYis set- Split
CHANGELOGdocument into two files:TODOandCHANGELOG - Created
INSTALLdocument - 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_SLACKFILLDUMA_MALLOC_FAILEXITDUMA_MAX_ALLOCDUMA_FREE_ACCESSDUMA_SHOW_ALLOCDUMA_DISABLE_BANNER
- Add new preprocessor flag
DUMA_NO_HANG_MSGinMakefile(2005-09-16, HA)
- 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)
- Added examples for article portability: use standardized
strerror()instead ofsys_nerrandsys_errlist[] - Bugfix: Error when defining
EF_NO_LEAKDETECTIONin_eff_allocate() - Bugfix: Error when defining
EF_NO_LEAKDETECTIONin_eff_deallocate() - Enhancement: Mark allocations from standard libraries before
ef_init()is called withlineno = -1to allow special treatment inleak_checking - Changed default in
eftestto use two signals:SIGSEGVandSIGBUSinstead of singlePAGE_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_SAFETYpreprocessor flag inMakefile - Added
EF_EXPLICIT_INITpreprocessor flag to workaround buggy environments (2005-08-21, HA)
- 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()orEF_Exit()(2005-07-24, HA) - Added parameter
ExitOnFailtoPage_Create() - Added warning when allocation failed and
ExitOnFailis off- Extended
_eff_allocate()for this; prepared new for standard conformity (2005-07-20, HA)
- Extended
- Integrated code from Tim Braun
- New
EF_SHOW_ALLOCenvironment variable, which prints allocations and deallocation when variable set check ifmalloc()andfree()are bound to efence (2005-07-15, HA)
- New
- 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_DEALLOCATEDreported 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()andstr[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_MACROpreprocessor flag to keep compatibility to oldDEL_ELEM()/DEL_ARRAY()macros; when not defined, a macro fordeleteis defined, which has standard conforming syntax (2005-02-14, HA)
- Added internal flag saving the source (allocation / deallocation) for file name and line number
- Added
EF_OLD_NEW_MACROpreprocessor flag to keep compatibility to oldNEW_ELEM()/NEW_ARRAY()macros. When not defined, a macro fornewis defined, which has standards conforming syntax. Unfortunately, you have to useDEL_ELEM/DEL_ARRAYfurther 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__offree()to be able to print position of first free - Added
EF_USE_FRAMENOpreprocessor flag. Changed not to supportEF_newFrame()andEF_delFrame()by default (2005-02-07, HA) - Applied bug fix posted by Luis Gonzalez. Bug was occurring under SuSE Linux
9.1 when calling
eftestwith a higher number (such as10000.) (2005-02-02, HA) - Bugfixed
memalign()which was not exported asextern "C". This bug lead to crashes when free-ing memory allocated bymemalign(). Bug was reported by Grant Goodyear and Steven G. Johnson. Now defining macros / functions also forvalloc()(2005-02-03, HA)
- Added
EF_NO_GLOBAL_MALLOC_FREEpreprocessor flag to work-around buggy environments: nomalloc(),free(),realloc(),calloc()are put into the global name-space of the efence library, thus only files which includeefence.hcall the efencemalloc(),…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, butfreeis called from efence using efence. This is a problem when using DLL libraries, which are linked againstmsvcrt.dlland itsmalloc()/free()under Microsoft Windows. The same problem applies whenlibstdc++/libgccis not linked in correct order (2005-01-04, HA)
- 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(), whenEF_PROTECT_BELOWflag changed which lead to false positives - Bugfixed error message output to stderr; length of messages were calculated
too short; fixes functions
EF_Abort()andEF_Exit()(2004-08-15, HA)
- Added preprocessor macros for
CA_DECLARE,CA_DEFINE, andCA_REFinefence.hfor 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 betweenmalloc()/free(),new/delete,new[]/delete[]; this is deactivated whenEF_NO_LEAKDETECTIONis set - Added
EF_MALLOC_FAILEXITparameter (for now, not implemented) - Extended semantics of
EF_PROTECT_FREE - Added
EF_MAX_ALLOCparameter - Bugfix: Why should we ever use
Page_Delete()when setting up the "dead" page? - Bugfix:
EF_PROTECT_FREEdid 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_LEAKDETECTIONpreprocessor flag Makefileworks again, also included automatic generation ofefence_config.h- Added automatic generation and inclusion of
efence_config.hinstead functionPage_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_SAFETYpreprocessor flag. There may be flaws concerning threads, when using the C++ operators for leak detection; use theEF_NO_LEAKDETECTIONpreprocessor flag if you encounter problems! - Some files (
page.candprint.c) have turned to header files, the needed functions are now declared static and are no more visible outsideefence.cthis way theNDEBUGpreprocessor flag has been replaced byEF_NO_EFENCE,EF_NO_CPP_SUPPORT- be careful not to include efence in your release builds! (2004-03-21, HA)
- Added checks for No-Mans-Land (space which cannot get protected from the MMU);
this area gets filled with
EF_FILLon allocation, and gets checked on deallocation (2002-12-05, HA)
- One big fix and many smaller improvements for C++ code. Old macros
NEW_ELEM,NEW_ARRAYwere not usable when allocating classes, which have constructor / destructor; the usage of these macros has not changed (2002-12-04, HA)
- 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-videfor VIDE 1.24 using Borland C++ Builder 5.5 (see http://www.objectcentral.com) (2002-11-22, HA)
- Throw away unnecessary declarations of
- Remove memory leak in eftest
- Allow re-inclusion of
efence.hafter inclusion ofefenceint.h - Added some project files in sub-directory
win32-devcppfor Dev-C++ 4.9.6 using gcc (See http://www.bloodshed.net/) and saved its generatedMakefile's; lefttstheap's memory leaks (2002-11-18, HA)
- 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)
- Separation of C++ files:
efencepp.h,efencepp.cpp - Rename
EF_push()/EF_pop()toEF_newFrame()/EF_delFrame() - Add new compile option
EF_NO_LEAKDETECTION - Add new compile option
EF_NO_CPP - Split
efence.htoefence.handefenceint.h - Add Copyright and License information to many files
- Rename
COPYINGtoCOPYING-GPL(2002-11-03, HA)
- 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 []PTRwhich are mapped tomalloc()andfree()in Debug Mode
- Use these macros to get the file name and line number of a C++-style memory leak (2002-10-08, HA)
- Added support for implicit and explicit leak checking:
void EF_push(void)creates a new memory framevoid EF_pop(void)checks for memory leaks allocated afterEF_push(); this function is called automatically byonexit(), even withoutEF_push()(2002-10-07, HA)
- 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)
- Added support for C++ operators
new,new[],deleteanddelete[] - Added some project files in sub-directory
win32-msvc/for Microsoft Visual C++ 6.0 (2002-10-03, HA)
- Shared library must be position-independent code
- Merge in bug-fixes, multi-thread patch, shared library patch,
debian/sub-directory used for building the Debian package
- Port to Linux (1995-01-20)
- When
reallocis passed a zero address, it should work the same way asmalloc(). Fix forward declaration ofmprotect()inpage.cto usevoid *, notcaddr_t, for addresses; IRIX 5.0.1 complained about that (1994-09-30)
- Don't attempt to allow access to a zero-sized page when
EF_ALLOW_MALLOC_0is 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)
- Add support for DEC Alpha
- Add
%apattern for printing addresses, which assumes they are passed in avoid *
- Add work-arounds for kernel and library bugs under HP-UX
- HP has been notified and will repair these soon