- 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
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
anda.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
- 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.txt
andINSTALL
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
generatedCHANGELOG
- 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
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
: MergedCOPYING-GPL
andCOPYING-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)
- Add
memmove()
implementation based onmemove()
fromklibc
by 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_SECT
implementation insem_inc.c
- Added make section for
OSTYPE=msys-sh
, which uses mingw32-gcc / G++
- Fixed
- Use
USE_WIN32_CRIT_SECT
implementation for Cygwin, fixestestoperator
(2009-05-23, HA) - Remove CVS sub-directories from packaging
- Remove
debian
sub-directory from CVS (2009-06-07, HA) - Fixed "Wrong
LD_PRELOAD
path 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_DIR
andDOC_INSTALL_DIR
inGNUmakefile
after definition ofprefix
(2009-06-15, HA) - Removed
GNUmakefile
optionDUMA_SEMAPHORES
(2009-06-14, HA)
- 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 insem_inc.c
- The locking mechanism for multi-threading, with this configuration
testmt.c
works 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
~/.gdbinit
asgdbinit.rc
- Added hint in
mprotectFailed()
- Fix GCC compiler warnings
- Rename of
sem_inc.h
toduma_sem.h
, cause needed bydumapp.h
(2008-03-12, HA) - Update of
README
for 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_ALLOC
print 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 = 0
is equivalent to previousDUMA_ALLOW_MALLOC_0 = 0
, default is3
(2008-04-22, HA) - Return unique pointer for C++ operator
new
forDUMA_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)
- Apply patches from Philip Mucci
of SiCortex:
- Fix for
pthread_self()
and hang oftestoperators
test case on 64-bit Linux platforms (x86_64_and_MIPS64) - 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
- Please do not ship UNIX sources with
- 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 standardDESTDIR
usage - Added
distclean
andclobber
targets to remove all configuration - Added
reconfig
target to regenerateduma_config.h
- Changed
Makefile
flow to recursively run ifduma_config.h
doesn'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_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 variablesDUMA_CHECK_FREQ
andDUMA_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
Makefile
for all C source files (2008-01-14, HA) - Bugfix for
Makefile
targetinstall
whenDUMASO
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)
- 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)
- 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.h
anddumapp.h
(2007-12-23, HA)
- Fix: Set
DUMA_PREFER_GETENV
on Mac OS X; it doesn't link withenviron
- Fix: MINGW wants an exact declaration for function
DUMA_strerror
inprint.h
- Fix: Add work-around in
testmt.c
to compile on Microsoft Windows - Fix: Call
duma_init()
(#ifdef DUMA_EXPLICIT_INIT
) intestoperators.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()
, andDUMA_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)
- Reformatting: Converted tabs to spaces
- Added test program
testenv.c
using 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_FRAMENO
and theframeno
variable; 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
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
forDUMA_SO__
andDUMA_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)
- 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=msys
from the Windows Command Prompt, after adding MINGW'sbin
to the PATH (2007-07-28, HA) - Echo a single dot (
.
) for Windows Command Prompt (2007-07-31, HA)
- Added simple
Makefile
for examples in sub-directoryexample_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
andu_int
were 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_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)
- Turned global variables
DUMA_PROTECT_BELOW
,DUMA_ALIGNMENT
, andDUMA_FILL
into 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_mutex
implementation (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_OPTIONS
was not used when compilingcreateconf.o
- Fix compile error when
DUMA_NO_LEAKDETECTION
was set intestoperators.cpp
- Fix to obey
EXPLICIT_INIT
intestoperators.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)
- 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)
- Added parameter
- 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, wheresem_init()
may callmalloc()
, 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)
- 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)
- New program
testoperators
writes it's own membernew
/delete
operator 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++
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'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_ATEXIT
inMakefile
- 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_OPTIONS
were not passed (2005-10-06, HA)
- 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)
- 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
long
in internal address calculations- Auto-detect compatible integer types
DUMA_ADDR
andDUMA_SIZE
increateconf
- Auto-detect
DUMA_MIN_ALIGNMENT
increateconf
- 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_OPTIONS
also usedDUMA_OPTIONS
- Removed
-DDUMA_NO_CPP_SUPPORT
, asLD_PRELOAD
works for C++new
,new[]
,delete
anddelete[]
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*)0
in_duma_allocate()
, whenuserSize == 0
(2005-09-27, HA)
- 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
fromduma_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_SAFETY
is set- Split
CHANGELOG
document into two files:TODO
andCHANGELOG
- 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
inMakefile
(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_nerr
andsys_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 withlineno = -1
to allow special treatment inleak_checking
- Changed default in
eftest
to use two signals:SIGSEGV
andSIGBUS
instead 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_SAFETY
preprocessor flag inMakefile
- Added
EF_EXPLICIT_INIT
preprocessor 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
ExitOnFail
toPage_Create()
- Added warning when allocation failed and
ExitOnFail
is off- Extended
_eff_allocate()
for this; prepared new for standard conformity (2005-07-20, HA)
- Extended
- Integrated code from Tim Braun
- New
EF_SHOW_ALLOC
environment 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_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()
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_MACRO
preprocessor flag to keep compatibility to oldDEL_ELEM()
/DEL_ARRAY()
macros; when not defined, a macro fordelete
is 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_MACRO
preprocessor flag to keep compatibility to oldNEW_ELEM()
/NEW_ARRAY()
macros. When not defined, a macro fornew
is defined, which has standards conforming syntax. Unfortunately, you have to useDEL_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__
offree()
to be able to print position of first free - Added
EF_USE_FRAMENO
preprocessor 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
eftest
with 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_FREE
preprocessor 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.h
call 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, butfree
is called from efence using efence. This is a problem when using DLL libraries, which are linked againstmsvcrt.dll
and itsmalloc()
/free()
under Microsoft Windows. The same problem applies whenlibstdc++
/libgcc
is 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_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()
andEF_Exit()
(2004-08-15, HA)
- Added preprocessor macros for
CA_DECLARE
,CA_DEFINE
, andCA_REF
inefence.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 betweenmalloc()
/free()
,new
/delete
,new[]
/delete[]
; this is deactivated whenEF_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 ofefence_config.h
- Added automatic generation and inclusion of
efence_config.h
instead 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_SAFETY
preprocessor flag. There may be flaws concerning threads, when using the C++ operators for leak detection; use theEF_NO_LEAKDETECTION
preprocessor flag if you encounter problems! - Some files (
page.c
andprint.c
) have turned to header files, the needed functions are now declared static and are no more visible outsideefence.c
this way theNDEBUG
preprocessor 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_FILL
on 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_ARRAY
were 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-vide
for 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.h
after inclusion ofefenceint.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 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.h
toefence.h
andefenceint.h
- Add Copyright and License information to many files
- Rename
COPYING
toCOPYING-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 []PTR
which 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[]
,delete
anddelete[]
- 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
realloc
is passed a zero address, it should work the same way asmalloc()
. Fix forward declaration ofmprotect()
inpage.c
to 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_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)
- Add support for DEC Alpha
- Add
%a
pattern 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