123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705 |
- CHANGELOG:
- ==========
- (unreleased)
- * 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 unbreak 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
- * added memmove() implementation based on memove() from klibc.
- code from Andris Zeila, see
- http://sourceforge.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 in sem_inc.c, mingw now uses this one
- added make section for OSTYPE=msys-sh, which uses mingw32-gcc/g++ and rm
- * use USE_WIN32_CRIT_SECT implementation also for cygwin, fixes testoperator
- (2009-05-23, HA)
- * remove CVS subdirectories from packaging
- * removed debian subdirectory from CVS
- (2009-06-07, HA)
- * fixed "Wrong LD_PRELOAD path in duma.sh". see
- https://sourceforge.net/tracker/?func=detail&aid=2800139&group_id=149725&atid=775376
- (2009-06-12, HA)
- * fixed "GNUmakefile is missing DESTDIR" using submitted patch:
- https://sourceforge.net/tracker/?func=detail&aid=2800137&group_id=149725&atid=775376
- * moved definition of MAN_INSTALL_DIR and DOC_INSTALL_DIR in GNUmakefile
- after definition of prefix
- (2009-06-15, HA)
- * removed GNUmakefile option "DUMA_SEMAPHORES"
- (2009-06-14, HA)
- 2.5.15
- * 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 either
- with pthreads and with the Win32 API
- * CreateSemaphore() now used with maximum count = initial count = 1
- (2008-08-03, HA)
- * removed usage of strlen() in strncpy()
- (2009-03-19, HA)
- * PATCH from Andre Landwehr <andrel@cybernoia.de>
- fixes race condition when using preprocessor macro 'delete'
- (2009-04-07, HA)
- * bugfix in strncpy()
- Roman Jokl reported the bug: error check was too rigorous
- (2009-04-11, HA)
- 2.5.14
- * added suggested ~/.gdbinit as gdbinit.rc
- * added hint in mprotectFailed()
- * removed (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 built in heap debugging tool
- (2008-04-20, HA)
- * PATCH from Philip Mucci <mucci@cs.utk.edu> 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 printouts before all abort checks
- (2008-04-20, Philip Mucci, HA)
- * remove some warnings for "-Wall -Wextra" especially for cygwin
- * detailed some messages when source filename and lineno were 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 be really standard conform
- (2008-04-26, HA)
- * Fix for C++ operator new with size zero
- added environment switch DUMA_NEW_0_STRATEGY
- (2008-04-27, HA)
- 2.5.13
- * applied PATCH(es) from Philip Mucci <mucci@cs.utk.edu>
- from the company SiCortex www.sicortex.com :
- - Fix for pthread_self() and hang of testoperators test case on 64 bit
- linux platforms (x86_64 and MIPS64)
- - Added -Wall to Makefile
- - Properly versioned symbolic library to have the version triple 0.0.0
- - Removed control-M's from the sources. Please do not ship unix sources
- with control-M's (stop editing on Windows)
- - 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 'make test' target
- - Added proper install target that also refers to
- GNU standard DESTDIR usage.
- - Added 'distclean clobber' targets to remove 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
- * updated Makefile: updated PACKAGE_SOURCE and added target dos2unix
- (2008-03-09, HA)
- 2.5.12
- * enhancement: added environment variable 'DUMA_CHECK_FREQ' to autmatically
- check all memories no man's land at each n'th allocation/deallocation.
- n=0 to deactivate 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
- * bugfix on thread safety in sem_inc.c
- thanks to Andrew Kornev writing the right hint as bugreport:
- "[ 1875926 ] non-thread safe lock() implementation"
- (2008-01-20, HA)
- 2.5.10
- * added small test program to demonstrate crashing on multithreaded
- programs from
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=67838
- (2008-01-15, HA)
- * added html comparison charts/text and C source code examples from
- http://www.cs.utexas.edu/~jpmartin/memCheckers.html
- into subdir comparisons
- with kind permission of Jean-Philippe Martin
- * added Makefile for each C source file
- (2008-01-14, HA)
- * bugfix for Makefile target install, when DUMASO is empty
- bug was reported from Louis Strous
- (2008-01-09, HA)
- * added hint where no man's land was overwritten:
- below or above userSpace
- (2008-01-03, HA)
- 2.5.9
- * 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 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 (Windows):
- compiles and passes all confidence tests. trying to debug example1
- from within gdb crashes whole PearPC; running without gdb creates
- a core dump one can analyse afterwards with gdb.
- (2007-09-02, HA)
- * bugfix for _duma_strncpy(): no more call to strlen()
- bug was reported from kamallneet <kamalneet@gmail.com>
- * applied patch from Eddy Pronk <epronk at users.sourceforge.net>
- submitted to sourceforge with title "libduma.so on Solaris"
- (2007-11-13, HA)
- * added minor error check in print.c about DUMA_OUTPUT_FILE
- * some comments in duma.h and dumapp.h
- (2007-12-23, HA)
- 2.5.8
- * fix: set DUMA_PREFER_GETENV for osx; it doesn't link with environ
- * fix: MinGW wanted exact declaration as in definition for
- function DUMA_strerror in print.h
- * fix: workaround testmt.c to compile on Windows
- * fix: call duma_init() ifdef DUMA_EXPLICIT_INIT in testoperators.cpp
- * added notes on prepackaged .rpm files provided by
- Dries Verachtert <dries@ulyssis.org> at
- http://dries.ulyssis.org/apt/packages/duma/info.html
- in README
- (2007-08-17, HA)
- * added environment variable 'DUMA_REPORT_ALL_LEAKS' defaulting to 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)
- * added 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
- * reformatting: converted tabs to spaces
- * added test program testenv.c using global environ variable as
- alternative to getenv()
- (2007-08-15, HA)
- * added output of some configuration settings with banner
- * switched off leak detection in shared library for any platform.
- use the static library for finding leaks - with information where
- the piece of memory got allocated. Meanwhile I think leak-checking
- without further information is quite useless! Too many correct
- programs don't free all memory, cause the system frees memory up at
- program end. Thus, too many platforms/environments are reported
- "broken" from DUMA.
- * output allocator type (malloc, strdup, ..) with leak report 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 its macro DUMA_CHECK():
- it checks the No Mans Land - especially the unprotected end - of
- the memory block
- * added function duma_checkAll() and its 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
- * modified example Makefiles for not linking to pthreads on Windows
- (2007-08-12, HA)
- * added win32-msvc.net project file for testoperators.cpp
- * bugfix: obey 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 osx
- * preloading duma library now works on osx
- * added Debian Bug report logs - #241156 as testmt.c
- (2007-08-14, HA)
- 2.5.5
- * support for Solaris (Solaris 10 with the GNU toolchain from Companion CD)
- * fix for solaris: strerror() calls calloc() leading to recursion
- added preprocessor option DUMA_NO_STRERROR
- * internal redesign:
- collected several global static variables to one structure
- and several global non static variables to other structure
- each with prepended and appended protection space
- (2007-08-11, HA)
- 2.5.4
- * support for win32 mingw when calling make with OSTYPE=msys
- call "mingw32-make OSTYPE=msys" from Windows command prompt
- having added the PATH for MINGW/bin
- (2007-07-28, HA)
- * echo single dot '.' for windows command shell
- (2007-07-31, HA)
- 2.5.3
- * added simple Makefiles for examples in subdir example_makes/ex*/
- * modified Makefile to avoid build of shared libs/executables specific to OS
- * dumapp.h now keeps C macro definitions
- * support for max osx when calling make with OS=osx
- * support for win32 cygwin when calling make with OSTYPE=cygwin
- (2007-07-14, HA)
- * bugfix in createconf.c for Win32 but non Visual C++
- * got cygwin to work:
- switched off stacktrace (before trying to integrate in Makefile)
- caddr_t and u_int were already defined
- use signals as on Linux/Unix in dumatest.c
- updated Makefile
- (2007-07-13, HA)
- 2.5.2
- * 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
- * turned global variables DUMA_PROTECT_BELOW, DUMA_ALIGNMENT and DUMA_FILL
- to thread local variables. Acces now with new function macros
- DUMA_SET_ALIGNMENT(), DUMA_SET_PROTECT_BELOW() and DUMA_SET_FILL()
- * support for posix_memalign()
- * pthread_mutex implementation alternative to semaphores
- (2007-07-03, HA)
- 2.5
- * Documentation updates. Now using Natural Docs
- * win32: Detours support for using DUMA with just binaries
- * win32: Can compile a duma dll
- * win32: DUMA can perform stacktraces of each allocation
- * win32: Support for Visual Studio 2005
- * win32: Support for output to debug console
- * Support for output to a file
- * Can control output via environmental variables
- 2.4.28 fix/enhancement: reworked initialization for RequestID 1458083 on SF
- checks for recursive calls in _duma_init() and duma_init()
- (2006-06-17, HA)
- bugfix in new[] operators occured on alpha-linux1 on sf compile farm
- (2006-06-18, HA)
- bugfix in Makefile: DUMA_OPTIONS was not used
- when compiling createconf.o
- bugfix: compile error when DUMA_NO_LEAKDETECTION was set
- in testoperators.cpp
- fix: obey EXPLICIT_INIT in testoperators.cpp
- (2006-06-18, HA)
- fix: as in RequestID 1482267 on SF:
- updated install directory for manual. $prefix/share/man/man3 should fit
- the Filesystem Hierarchy Standard 2.3 for /usr and /usr/local
- (2006-06-18, HA)
- 2.4.27 this version is now reachable via cvs on sourceforge.net
- 2.4.27 published a german article on DUMA on http://duma.sourceforge.net/
- bugfix: removed buffer overflow in DUMA_sprintf() for long filenames:
- added parameter maxsize for output buffers in some functions.
- incremented STRING_BUFFER_SIZE to reduce this risk.
- this bug was reported by <loigu@volny.cz>
- (2006-01-09, HA)
- 2.4.26 new project file for Dev-C++ 4.9.9.2 for createconf from
- Benjamin Berkels <benjamin.berkels@ins.uni-bonn.de>
- bugfix/enhancement: avoid recursion from sem_init() in Linux/U*ix
- 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!
- reported from Benjamin Berkels <benjamin.berkels@ins.uni-bonn.de>
- some more TLS preparation
- (2005-10-28, HA)
- 2.4.25 bugfix: semaphores were not initialized correctly; this lead to a hang.
- thanks for reporting and providing a test environment
- to Tim Braun <braun@informatik.uni-kl.de>
- updated project files for Dev-C++ 4.9.9.2 / GCC 3.3.1
- and bugfixed compiler error for Dev-C++/gcc both reported from
- Benjamin Berkels <benjamin.berkels@ins.uni-bonn.de>
- modified delete macros
- DUMA_Magic now array (call_depth)
- (2005-10-21, HA)
- 2.4.24 new program testoperators: writes its own member new/delete operator
- with filename 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 used
- (2005-10-09, HA)
- 2.4.23 write DUMA's preprocessor flags at compile time of the library
- to duma_config.h. Thus one no more would have to provide the same
- flags when compiling his own objects files.
- changed Makefile, to take care for this
- (2005-10-07, HA)
- 2.4.22 C++ 'new' operators now (more) standard conform:
- allocation of size==0 now returns non 0 pointer
- new option 'DUMA_SUPPRESS_ATEXIT' as environment variable
- from Tim Braun <braun@informatik.uni-kl.de>:
- suppress call to 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 GNU C compiler's
- 'destructor' function attribute.
- new preprocessor flag 'DUMA_PREFER_ATEXIT' in Makefile
- got updated project files for Dev-C++ 4.9.9.2 / GCC 3.3.1 from
- Benjamin Berkels <benjamin.berkels@ins.uni-bonn.de>
- updated TODO
- bugfix: "EF_" was not replaced by "DUMA_" in tstheap.c
- bugfix: rules how to build test objects; DUMA_OPTIONS were not passed
- (2005-10-06, HA)
- 2.4.21 modified Makefile: name for shared library and symbolic links now
- configurable at start
- update of README
- updated TODO; sorted by priority
- (2005-10-04, HA)
- bugfix: follow enum _DUMA_FailReturn in _duma_allocate() function
- bugfix: initialize userAddr in _duma_allocate() function
- may lead to bug when allocation failed
- new operators now (nearly) C++ conform
- (2005-09-29, HA)
- 2.4.20 integrated patches from Zbynek Vyskovsky <kvr@centrum.cz> :
- 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 adress calculations:
- autodetect compatible integer types DUMA_ADDR and DUMA_SIZE in
- createconf. write them to duma_config.h
- autodetect DUMA_MIN_ALIGNMENT in createconf, write value to
- duma_config.h
- use autodetected values in code
- reworked DUMA_sprintf() and its 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 deallocating more memory.
- long running programs with much memory handling should benefit.
- (2005-09-26, HA)
- added project files for Visual C++ .NET 2003
- applied one more patch from Zbynek Vyskovsky concerning alignment
- his calculation of next lower power of 2 is much smaller
- bugfix: return '(void*)0' in _duma_allocate(), when userSize==0
- (2005-09-27, HA)
- 2.4.19 fixed compile error in duma.c introduced in 2.4.18
- fixed/enhanced Makefile
- (2005-09-19, HA)
- added runtime 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 checked Source code: DUMA_get_sem() is nor more called,
- when DUMA_NO_THREAD_SAFETY is set
- splitted this 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 the options DUMA_SLACKFILL, DUMA_MALLOC_FAILEXIT,
- DUMA_MAX_ALLOC, DUMA_FREE_ACCESS, DUMA_SHOW_ALLOC and
- DUMA_DISABLE_BANNER in README.
- new preprocessor flag 'DUMA_NO_HANG_MSG' in Makefile
- (2005-09-16, HA)
- 2.4.17 forked Electric Fence cause 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 DUMA - Detect Unintended Memory Access
- rename efence to duma
- rename Electric Fence to DUMA
- rename EF_ to DUMA_
- rename ef_ to duma_
- rename eff_ to duma_
- and so on ...
- (2005-09-10, HA)
- 2.4.16 added examples for article
- portability: use standardized strerror() instead sys_nerr
- and sys_errlist[].
- bugfix: error when defined EF_NO_LEAKDETECTION in _eff_allocate()
- bugfix: error when defined 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)
- documented EF_NO_THREAD_SAFETY preprocessor flag in Makefile
- added EF_EXPLICIT_INIT preprocessor flag to workaround buggy
- environments: initialisation is done in 2 steps:
- 1- must do things when allocation is called
- 2- non must-do like retrieving environment variables, registering atexit()
- calls to functions getenv(), atexit() and write() are avoided in
- first step.
- 3- avoid semaphore locking before 2.step is done
- (2005-08-21, HA)
- 2.4.15 bugfixed page management under Windows: virtual address space never got
- released. unfortunately this "quick" fix avoids memory pooling (under
- 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 integrated code from Tim Braun <braun@informatik.uni-kl.de>
- 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 <kvr@centrum.cz>
- in his words: "I modified Electric Efence 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 occured when userSpace memory region of freed
- memory is reused from system and freed again: efence claimed freeing
- already freed memory.
- (2005-03-02, HA)
- now 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 conform syntax.
- (2005-02-14, HA)
- 2.4.13 added internal flag saving the source (allocation/deallocation)
- for filename and lineno.
- 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 standard conform syntax. unfortunately you have
- to use DEL_ELEM/DEL_ARRAY further to utilize filename and linenumber
- of deallocation calls.
- (2005-02-10, HA)
- reworked/revised ALL internal functions !!!
- freeing already freed memory is now detected (much better)
- this 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 bugfix posted by Luis Gonzalez. bug was occuring under
- SuSE Linux 9.1 when calling eftest with a higher number f.e. 10000.
- (2005-02-02, HA)
- bugfixed memalign() which was not exported as extern "C". this bug lead
- to crashes when freeing 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 added EF_NO_GLOBAL_MALLOC_FREE preprocessor flag to workaround buggy
- environments:
- no malloc(),free(),realloc(),calloc() are put into the global namespace
- 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
- f.e. 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
- MS Windows. the same problem applies when libstdc++ / libgcc is not
- linked in correct order.
- (2005-01-04, HA)
- 2.4.11 bugfixed signal handling in confidence test (eftest),
- which lead to false errors with my newly installed MandrakeLinux 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. fixed functions EF_Abort() and EF_Exit().
- (2004-08-15, HA)
- 2.4.10 added preprocessor macros for CA_DECLARE, CA_DEFINE, 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 MS 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++ conform concerning their behaviour
- 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 that, what it
- should do up from Bruce's version 2.2.2 maybe earlier.
- (2004-07-16, HA)
- confidence test now PASSes again
- removed problems when used EF_NO_LEAKDETECTION preprocessor flag
- got Makefile to work 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 concering 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.
- so be careful not to include efence in your release builds!
- (2004-03-21, HA)
- 2.4.9 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-04, HA)
- 2.4.8 one big fix and many 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
- (see 2.4.3).
- (2002-12-04, HA)
- 2.4.7 get to work with Borland Free Commandline Tools: Borland C++ Builder 5.5
- thrown away unnecessary declarations of malloc(), free(), ..
- Borland didn't like them,
- and neither MS-Visual C++ 6.0 nor gcc (Dev-C++) needs them.
- added project files in subdir "win32-vide" for VIDE 1.24
- using Borland C++
- Builder 5.5 (see http://www.objectcentral.com)
- (2002-11-22, HA)
- 2.4.6 remove memory leak in eftest
- allowed re-inclusion of efence.h after inclusion of efenceint.h
- added some project files in subdir "win32-devcpp" for Dev-C++ 4.9.6
- using gcc (see http://www.bloodshed.net)
- and saved its generated makefiles
- left tstheap's memory leaks
- (2002-11-17, HA)
- 2.4.5 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 several modifications
- seperation of c++ files: efencepp.h, efencepp.cpp
- renamed EF_push()/EF_pop() to EF_newFrame()/EF_delFrame()
- new compile option "EF_NO_LEAKDETECTION"
- new compile option "EF_NO_CPP"
- splitted efence.h to efence.h and efenceint.h
- added Copyright and License information to many files
- renamed COPYING to COPYING-GPL
- (2002-11-03, HA)
- 2.4.3 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 filename and linenumber of a C++ style
- memory leak.
- (2002-10-07, HA)
- 2.4.2 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 onexit(),
- even without EF_push().
- (2002-10-07, HA)
- 2.4.1 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 added support for C++ operators new, new[], delete and delete[].
- added some project files in subdir "win32-msvc" for MS-Visual C++ 6.0
- (2002-10-03, HA)
- 2.2.2 Oops. Shared library must be position-independent code.
- 2.2.0
- Merge in bug-fixes, multi-thread patch, shared library patch,
- debian/ subdirectory used for building the Debian package
- 2.0.1
- Add work-arounds for kernel and library bugs under HP-UX.
- HP has been notified and will repair these soon.
- 2.0.2
- Add support for DEC Alpha. Add %a pattern for printing addresses, which
- assumes they are passed in a void *.
- 2.0.3 30-Sep-1993
- 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.
- 2.0.4 29-May-1994
- 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.
- 2.0.5 20-January-1995
- Port to Linux.
|