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)
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 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 WindowsCommand Prompt, after adding MINGW's bin to the PATH
(2007-07-28, HA)
Echo a single dot (.) for WindowsCommand 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)
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
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)
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(): 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(), 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)
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 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, 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