CHANGELOG 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. CHANGELOG:
  2. ==========
  3. (unreleased)
  4. * Added LICENSE: Merged COPYING-GPL and COPYING-LGPL.
  5. (2020-08-25, JJ)
  6. * Updated TODO with items from 2009-12-30 by Daniel Trebbien.
  7. (2020-08-25, JJ)
  8. * Updated TODO with items from 2008-05-23 by Michael Eddington.
  9. (2020-08-25, JJ)
  10. * No longer build test programs (for now) to unbreak static builds.
  11. (2020-08-24, JJ)
  12. * Applied various update patches from the Buildroot Project.
  13. (2020-10-28, JJ)
  14. * Applied a patch from Swati Kumari for additional NULL checks.
  15. (2015-07-30, JJ)
  16. * Applied a patch for bug ID #3035145 from Reinhard Katzmann.
  17. (2010-07-26, JJ)
  18. * Applied a patch for bug ID #2923784 from Daniel Trebbien.
  19. (2009-12-30, JJ)
  20. * Applied a patch for bug ID #2923779 from Daniel Trebbien.
  21. (2009-12-30, JJ)
  22. * Applied a patch for bug ID #2831348 from an Anonymous SourceForge user.
  23. (2009-07-23, JJ)
  24. 2.5.16
  25. * added memmove() implementation based on memove() from klibc.
  26. code from Andris Zeila, see
  27. http://sourceforge.net/tracker/?func=detail&aid=2792252&group_id=149725&atid=775376
  28. (2009-05-21, HA)
  29. * fixed "Broken build in Msys and C++ tests fail":
  30. fixed USE_WIN32_CRIT_SECT implementation in sem_inc.c, mingw now uses this one
  31. added make section for OSTYPE=msys-sh, which uses mingw32-gcc/g++ and rm
  32. * use USE_WIN32_CRIT_SECT implementation also for cygwin, fixes testoperator
  33. (2009-05-23, HA)
  34. * remove CVS subdirectories from packaging
  35. * removed debian subdirectory from CVS
  36. (2009-06-07, HA)
  37. * fixed "Wrong LD_PRELOAD path in duma.sh". see
  38. https://sourceforge.net/tracker/?func=detail&aid=2800139&group_id=149725&atid=775376
  39. (2009-06-12, HA)
  40. * fixed "GNUmakefile is missing DESTDIR" using submitted patch:
  41. https://sourceforge.net/tracker/?func=detail&aid=2800137&group_id=149725&atid=775376
  42. * moved definition of MAN_INSTALL_DIR and DOC_INSTALL_DIR in GNUmakefile
  43. after definition of prefix
  44. (2009-06-15, HA)
  45. * removed GNUmakefile option "DUMA_SEMAPHORES"
  46. (2009-06-14, HA)
  47. 2.5.15
  48. * added alternative locking implementation in sem_inc.c
  49. using critical sections.
  50. code from Peter Harris, see
  51. http://code.google.com/p/electric-fence-win32/
  52. * added Windows Threading to testmt.c
  53. added win32-msvc.net project file
  54. * use of WIN32_SEMAPHORES on Win32-Cygwin in sem_inc.c
  55. - the locking mechanism for multi-threading,
  56. with this configuration testmt.c works either
  57. with pthreads and with the Win32 API
  58. * CreateSemaphore() now used with maximum count = initial count = 1
  59. (2008-08-03, HA)
  60. * removed usage of strlen() in strncpy()
  61. (2009-03-19, HA)
  62. * PATCH from Andre Landwehr <andrel@cybernoia.de>
  63. fixes race condition when using preprocessor macro 'delete'
  64. (2009-04-07, HA)
  65. * bugfix in strncpy()
  66. Roman Jokl reported the bug: error check was too rigorous
  67. (2009-04-11, HA)
  68. 2.5.14
  69. * added suggested ~/.gdbinit as gdbinit.rc
  70. * added hint in mprotectFailed()
  71. * removed (gcc) compiler warnings
  72. * rename of sem_inc.h to duma_sem.h, cause needed by dumapp.h
  73. (2008-03-12, HA)
  74. * update of README for Microsoft's pageheap.exe,
  75. a built in heap debugging tool
  76. (2008-04-20, HA)
  77. * PATCH from Philip Mucci <mucci@cs.utk.edu> on behalf of SiCortex
  78. * Fix for malloc(0) which previously always returned NULL.
  79. added environment switch DUMA_MALLOC_0_STRATEGY, which may
  80. return a special protected piece of memory for malloc(0)
  81. * Moved malloc/SHOW_ALLOC printouts before all abort checks
  82. (2008-04-20, Philip Mucci, HA)
  83. * remove some warnings for "-Wall -Wextra" especially for cygwin
  84. * detailed some messages when source filename and lineno were available
  85. (2008-04-21, HA)
  86. * removed environment variable "DUMA_ALLOW_MALLOC_0"
  87. DUMA_MALLOC_0_STRATEGY = 0 is equivalent to previous
  88. DUMA_ALLOW_MALLOC_0=0. default is 3.
  89. (2008-04-22, HA)
  90. * return unique pointer for C++ operator new
  91. for DUMA_MALLOC_0_STRATEGY == 3. now it should be really standard conform
  92. (2008-04-26, HA)
  93. * Fix for C++ operator new with size zero
  94. added environment switch DUMA_NEW_0_STRATEGY
  95. (2008-04-27, HA)
  96. 2.5.13
  97. * applied PATCH(es) from Philip Mucci <mucci@cs.utk.edu>
  98. from the company SiCortex www.sicortex.com :
  99. - Fix for pthread_self() and hang of testoperators test case on 64 bit
  100. linux platforms (x86_64 and MIPS64)
  101. - Added -Wall to Makefile
  102. - Properly versioned symbolic library to have the version triple 0.0.0
  103. - Removed control-M's from the sources. Please do not ship unix sources
  104. with control-M's (stop editing on Windows)
  105. - Make sure ranlib is run on the static library,
  106. various platforms require this
  107. - Add -DPIC for shared library builds
  108. - Added install targets for headers (INC_INSTALL_DIR)
  109. - Added install targets for documentation (DOC_INSTALL_DIR)
  110. - Added separate 'make test' target
  111. - Added proper install target that also refers to
  112. GNU standard DESTDIR usage.
  113. - Added 'distclean clobber' targets to remove configuration
  114. - Added 'reconfig' target to regenerate duma_config.h
  115. - Changed makefile flow to recursively run if duma_config.h doesn't exist
  116. - Fixed return value error in testmt.c
  117. - Fixed args in thread-test.c
  118. * updated Makefile: updated PACKAGE_SOURCE and added target dos2unix
  119. (2008-03-09, HA)
  120. 2.5.12
  121. * enhancement: added environment variable 'DUMA_CHECK_FREQ' to autmatically
  122. check all memories no man's land at each n'th allocation/deallocation.
  123. n=0 to deactivate automatic checks.
  124. (2008-01-24, HA)
  125. * updated README.txt for environment variables DUMA_CHECK_FREQ and
  126. DUMA_SKIPCOUNT_INIT.
  127. (2008-01-25, HA)
  128. 2.5.11
  129. * bugfix on thread safety in sem_inc.c
  130. thanks to Andrew Kornev writing the right hint as bugreport:
  131. "[ 1875926 ] non-thread safe lock() implementation"
  132. (2008-01-20, HA)
  133. 2.5.10
  134. * added small test program to demonstrate crashing on multithreaded
  135. programs from
  136. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=67838
  137. (2008-01-15, HA)
  138. * added html comparison charts/text and C source code examples from
  139. http://www.cs.utexas.edu/~jpmartin/memCheckers.html
  140. into subdir comparisons
  141. with kind permission of Jean-Philippe Martin
  142. * added Makefile for each C source file
  143. (2008-01-14, HA)
  144. * bugfix for Makefile target install, when DUMASO is empty
  145. bug was reported from Louis Strous
  146. (2008-01-09, HA)
  147. * added hint where no man's land was overwritten:
  148. below or above userSpace
  149. (2008-01-03, HA)
  150. 2.5.9
  151. * added link to mpatrol in README
  152. * added shell environment variable 'DUMA_SKIPCOUNT_INIT'
  153. (2007-08-22, HA)
  154. * added section for NetBSD in Makefile
  155. there is always 1 memory leak on NetBSD-3.1
  156. .. but the functionality works
  157. (2007-08-28, HA)
  158. * tested on powerpc-apple-darwin8.0.0 inside of PearPC 0.4 (Windows):
  159. compiles and passes all confidence tests. trying to debug example1
  160. from within gdb crashes whole PearPC; running without gdb creates
  161. a core dump one can analyse afterwards with gdb.
  162. (2007-09-02, HA)
  163. * bugfix for _duma_strncpy(): no more call to strlen()
  164. bug was reported from kamallneet <kamalneet@gmail.com>
  165. * applied patch from Eddy Pronk <epronk at users.sourceforge.net>
  166. submitted to sourceforge with title "libduma.so on Solaris"
  167. (2007-11-13, HA)
  168. * added minor error check in print.c about DUMA_OUTPUT_FILE
  169. * some comments in duma.h and dumapp.h
  170. (2007-12-23, HA)
  171. 2.5.8
  172. * fix: set DUMA_PREFER_GETENV for osx; it doesn't link with environ
  173. * fix: MinGW wanted exact declaration as in definition for
  174. function DUMA_strerror in print.h
  175. * fix: workaround testmt.c to compile on Windows
  176. * fix: call duma_init() ifdef DUMA_EXPLICIT_INIT in testoperators.cpp
  177. * added notes on prepackaged .rpm files provided by
  178. Dries Verachtert <dries@ulyssis.org> at
  179. http://dries.ulyssis.org/apt/packages/duma/info.html
  180. in README
  181. (2007-08-17, HA)
  182. * added environment variable 'DUMA_REPORT_ALL_LEAKS' defaulting to 0.
  183. * added empty definitions for macro functions DUMA_SET_ALIGNMENT(),
  184. DUMA_SET_PROTECT_BELOW() and DUMA_SET_FILL()
  185. * updated README on shell environment variable options, added some
  186. entries to section 'OTHER ALTERNATIVE/ADDITIONAL DEBUGGING SOFTWARE/TOOLS'
  187. and added section 'COMPILATION NOTES FOR RELEASE/PRODUCTION'
  188. (2007-08-18, HA)
  189. * added single line function 'duma_alloc_return()'. all memory allocated
  190. from DUMA is returned through this function. This allows you to set a
  191. conditional breakpoint on this function to catch a specific allocation
  192. (2007-08-19, HA)
  193. 2.5.7
  194. * reformatting: converted tabs to spaces
  195. * added test program testenv.c using global environ variable as
  196. alternative to getenv()
  197. (2007-08-15, HA)
  198. * added output of some configuration settings with banner
  199. * switched off leak detection in shared library for any platform.
  200. use the static library for finding leaks - with information where
  201. the piece of memory got allocated. Meanwhile I think leak-checking
  202. without further information is quite useless! Too many correct
  203. programs don't free all memory, cause the system frees memory up at
  204. program end. Thus, too many platforms/environments are reported
  205. "broken" from DUMA.
  206. * output allocator type (malloc, strdup, ..) with leak report for each
  207. non freed memory block
  208. * removed option DUMA_USE_FRAMENO and the frameno variable
  209. i suppose nobody is using it. but additionally it is not thread safe.
  210. * added option DUMA_PREFER_GETENV
  211. if you prefer standard C library getenv() over global char **environ
  212. * added function duma_check(void*) and its macro DUMA_CHECK():
  213. it checks the No Mans Land - especially the unprotected end - of
  214. the memory block
  215. * added function duma_checkAll() and its macro DUMA_CHECKALL():
  216. it checks the No Mans Land - especially the unprotected end - of
  217. all allocated memory blocks
  218. (2007-08-17, HA)
  219. 2.5.6
  220. * modified example Makefiles for not linking to pthreads on Windows
  221. (2007-08-12, HA)
  222. * added win32-msvc.net project file for testoperators.cpp
  223. * bugfix: obey for option DUMA_NO_LEAKDETECTION:
  224. check for this option before calling any non-existing operators
  225. with leak parameters
  226. * enhanced comments in Makefile for DUMA_SO_* and DUMA_LIB_* options
  227. * changes in Makefile to build dynamic library on osx
  228. * preloading duma library now works on osx
  229. * added Debian Bug report logs - #241156 as testmt.c
  230. (2007-08-14, HA)
  231. 2.5.5
  232. * support for Solaris (Solaris 10 with the GNU toolchain from Companion CD)
  233. * fix for solaris: strerror() calls calloc() leading to recursion
  234. added preprocessor option DUMA_NO_STRERROR
  235. * internal redesign:
  236. collected several global static variables to one structure
  237. and several global non static variables to other structure
  238. each with prepended and appended protection space
  239. (2007-08-11, HA)
  240. 2.5.4
  241. * support for win32 mingw when calling make with OSTYPE=msys
  242. call "mingw32-make OSTYPE=msys" from Windows command prompt
  243. having added the PATH for MINGW/bin
  244. (2007-07-28, HA)
  245. * echo single dot '.' for windows command shell
  246. (2007-07-31, HA)
  247. 2.5.3
  248. * added simple Makefiles for examples in subdir example_makes/ex*/
  249. * modified Makefile to avoid build of shared libs/executables specific to OS
  250. * dumapp.h now keeps C macro definitions
  251. * support for max osx when calling make with OS=osx
  252. * support for win32 cygwin when calling make with OSTYPE=cygwin
  253. (2007-07-14, HA)
  254. * bugfix in createconf.c for Win32 but non Visual C++
  255. * got cygwin to work:
  256. switched off stacktrace (before trying to integrate in Makefile)
  257. caddr_t and u_int were already defined
  258. use signals as on Linux/Unix in dumatest.c
  259. updated Makefile
  260. (2007-07-13, HA)
  261. 2.5.2
  262. * minor corrections
  263. * added preprocessor option "DUMA_SEMAPHORES" to select pthreads
  264. locking mechanism: semaphores or mutexes
  265. * removed automatically generated visual c++ file detoursexample1.ncb
  266. from CVS and archives
  267. (2007-07-12, HA)
  268. 2.5.1
  269. * turned global variables DUMA_PROTECT_BELOW, DUMA_ALIGNMENT and DUMA_FILL
  270. to thread local variables. Acces now with new function macros
  271. DUMA_SET_ALIGNMENT(), DUMA_SET_PROTECT_BELOW() and DUMA_SET_FILL()
  272. * support for posix_memalign()
  273. * pthread_mutex implementation alternative to semaphores
  274. (2007-07-03, HA)
  275. 2.5
  276. * Documentation updates. Now using Natural Docs
  277. * win32: Detours support for using DUMA with just binaries
  278. * win32: Can compile a duma dll
  279. * win32: DUMA can perform stacktraces of each allocation
  280. * win32: Support for Visual Studio 2005
  281. * win32: Support for output to debug console
  282. * Support for output to a file
  283. * Can control output via environmental variables
  284. 2.4.28 fix/enhancement: reworked initialization for RequestID 1458083 on SF
  285. checks for recursive calls in _duma_init() and duma_init()
  286. (2006-06-17, HA)
  287. bugfix in new[] operators occured on alpha-linux1 on sf compile farm
  288. (2006-06-18, HA)
  289. bugfix in Makefile: DUMA_OPTIONS was not used
  290. when compiling createconf.o
  291. bugfix: compile error when DUMA_NO_LEAKDETECTION was set
  292. in testoperators.cpp
  293. fix: obey EXPLICIT_INIT in testoperators.cpp
  294. (2006-06-18, HA)
  295. fix: as in RequestID 1482267 on SF:
  296. updated install directory for manual. $prefix/share/man/man3 should fit
  297. the Filesystem Hierarchy Standard 2.3 for /usr and /usr/local
  298. (2006-06-18, HA)
  299. 2.4.27 this version is now reachable via cvs on sourceforge.net
  300. 2.4.27 published a german article on DUMA on http://duma.sourceforge.net/
  301. bugfix: removed buffer overflow in DUMA_sprintf() for long filenames:
  302. added parameter maxsize for output buffers in some functions.
  303. incremented STRING_BUFFER_SIZE to reduce this risk.
  304. this bug was reported by <loigu@volny.cz>
  305. (2006-01-09, HA)
  306. 2.4.26 new project file for Dev-C++ 4.9.9.2 for createconf from
  307. Benjamin Berkels <benjamin.berkels@ins.uni-bonn.de>
  308. bugfix/enhancement: avoid recursion from sem_init() in Linux/U*ix
  309. where sem_init() may call malloc() which again calls semaphore locking
  310. (2005-10-25, HA)
  311. bugfix in delete macro: Magic must be a single variable!
  312. reported from Benjamin Berkels <benjamin.berkels@ins.uni-bonn.de>
  313. some more TLS preparation
  314. (2005-10-28, HA)
  315. 2.4.25 bugfix: semaphores were not initialized correctly; this lead to a hang.
  316. thanks for reporting and providing a test environment
  317. to Tim Braun <braun@informatik.uni-kl.de>
  318. updated project files for Dev-C++ 4.9.9.2 / GCC 3.3.1
  319. and bugfixed compiler error for Dev-C++/gcc both reported from
  320. Benjamin Berkels <benjamin.berkels@ins.uni-bonn.de>
  321. modified delete macros
  322. DUMA_Magic now array (call_depth)
  323. (2005-10-21, HA)
  324. 2.4.24 new program testoperators: writes its own member new/delete operator
  325. with filename and line number forwarding to DUMA
  326. reworked Makefile: added tstheap_so which runs with shared library
  327. output in banner now shows which library (static/shared) is used
  328. (2005-10-09, HA)
  329. 2.4.23 write DUMA's preprocessor flags at compile time of the library
  330. to duma_config.h. Thus one no more would have to provide the same
  331. flags when compiling his own objects files.
  332. changed Makefile, to take care for this
  333. (2005-10-07, HA)
  334. 2.4.22 C++ 'new' operators now (more) standard conform:
  335. allocation of size==0 now returns non 0 pointer
  336. new option 'DUMA_SUPPRESS_ATEXIT' as environment variable
  337. from Tim Braun <braun@informatik.uni-kl.de>:
  338. suppress call to C library's atexit() function for DUMA's leak
  339. checking function in buggy environments, where atexit() hangs.
  340. implemented alternative for C library's atexit() using GNU C compiler's
  341. 'destructor' function attribute.
  342. new preprocessor flag 'DUMA_PREFER_ATEXIT' in Makefile
  343. got updated project files for Dev-C++ 4.9.9.2 / GCC 3.3.1 from
  344. Benjamin Berkels <benjamin.berkels@ins.uni-bonn.de>
  345. updated TODO
  346. bugfix: "EF_" was not replaced by "DUMA_" in tstheap.c
  347. bugfix: rules how to build test objects; DUMA_OPTIONS were not passed
  348. (2005-10-06, HA)
  349. 2.4.21 modified Makefile: name for shared library and symbolic links now
  350. configurable at start
  351. update of README
  352. updated TODO; sorted by priority
  353. (2005-10-04, HA)
  354. bugfix: follow enum _DUMA_FailReturn in _duma_allocate() function
  355. bugfix: initialize userAddr in _duma_allocate() function
  356. may lead to bug when allocation failed
  357. new operators now (nearly) C++ conform
  358. (2005-09-29, HA)
  359. 2.4.20 integrated patches from Zbynek Vyskovsky <kvr@centrum.cz> :
  360. use tighter alignment when size is smaller than default alignment
  361. replaced calls to EF_Exit() by EF_Abort()
  362. modified README
  363. (2005-09-19 - 2005-09-23, ZV)
  364. reworked Zbynek's patch to use long in internal adress calculations:
  365. autodetect compatible integer types DUMA_ADDR and DUMA_SIZE in
  366. createconf. write them to duma_config.h
  367. autodetect DUMA_MIN_ALIGNMENT in createconf, write value to
  368. duma_config.h
  369. use autodetected values in code
  370. reworked DUMA_sprintf() and its format specifier
  371. bugfixed Makefile: DUMA_SO_OPTIONS also used DUMA_OPTIONS
  372. removed '-DDUMA_NO_CPP_SUPPORT', as LD_PRELOAD works for C++
  373. new, new[], delete and delete[] operators
  374. (2005-09-24, HA)
  375. bugfixed reduceProtectedMemory(): Windows VirtualFree(,,MEM_RELEASE)
  376. can only free whole allocations. not parts.
  377. bugfix in memory allocation: try allocation in loop until
  378. reduceProtectedMemory() fails deallocating more memory.
  379. long running programs with much memory handling should benefit.
  380. (2005-09-26, HA)
  381. added project files for Visual C++ .NET 2003
  382. applied one more patch from Zbynek Vyskovsky concerning alignment
  383. his calculation of next lower power of 2 is much smaller
  384. bugfix: return '(void*)0' in _duma_allocate(), when userSize==0
  385. (2005-09-27, HA)
  386. 2.4.19 fixed compile error in duma.c introduced in 2.4.18
  387. fixed/enhanced Makefile
  388. (2005-09-19, HA)
  389. added runtime check for DUMA_PAGE_SIZE from duma_config.h
  390. (2005-09-17, HA)
  391. added check for initialization function "__attribute ((constructor))"
  392. (2005-09-18, HA)
  393. 2.4.18 checked Source code: DUMA_get_sem() is nor more called,
  394. when DUMA_NO_THREAD_SAFETY is set
  395. splitted this document into two files: TODO and CHANGELOG
  396. created INSTALL document
  397. modified Makefile: added special rules for building shared library
  398. (2005-09-10, HA)
  399. modified README
  400. (2005-09-16, HA)
  401. removed option DUMA_FREE_WIPES
  402. documented the options DUMA_SLACKFILL, DUMA_MALLOC_FAILEXIT,
  403. DUMA_MAX_ALLOC, DUMA_FREE_ACCESS, DUMA_SHOW_ALLOC and
  404. DUMA_DISABLE_BANNER in README.
  405. new preprocessor flag 'DUMA_NO_HANG_MSG' in Makefile
  406. (2005-09-16, HA)
  407. 2.4.17 forked Electric Fence cause Bruce Perens wrote:
  408. > Hayati Ayguen must choose another name for his program.
  409. > "Electric Fence" is a trademark he is not permitted to use.
  410. opened a "new" project DUMA - Detect Unintended Memory Access
  411. rename efence to duma
  412. rename Electric Fence to DUMA
  413. rename EF_ to DUMA_
  414. rename ef_ to duma_
  415. rename eff_ to duma_
  416. and so on ...
  417. (2005-09-10, HA)
  418. 2.4.16 added examples for article
  419. portability: use standardized strerror() instead sys_nerr
  420. and sys_errlist[].
  421. bugfix: error when defined EF_NO_LEAKDETECTION in _eff_allocate()
  422. bugfix: error when defined EF_NO_LEAKDETECTION in _eff_deallocate()
  423. enhancement: mark allocations from standard libraries
  424. before ef_init() is called with lineno = -1
  425. to allow special treatment in leak_checking
  426. changed default in eftest to use two signals: SIGSEGV and SIGBUS
  427. instead of single PAGE_PROTECTION_VIOLATED_SIGNAL
  428. define functions (memcpy, strcpy, strcat) as non-intrinsic
  429. for Visual C++ compiler in Release mode
  430. (2005-08-28, HA)
  431. enhancement: allow alignments bigger than page size
  432. (2005-08-23, HA)
  433. documented EF_NO_THREAD_SAFETY preprocessor flag in Makefile
  434. added EF_EXPLICIT_INIT preprocessor flag to workaround buggy
  435. environments: initialisation is done in 2 steps:
  436. 1- must do things when allocation is called
  437. 2- non must-do like retrieving environment variables, registering atexit()
  438. calls to functions getenv(), atexit() and write() are avoided in
  439. first step.
  440. 3- avoid semaphore locking before 2.step is done
  441. (2005-08-21, HA)
  442. 2.4.15 bugfixed page management under Windows: virtual address space never got
  443. released. unfortunately this "quick" fix avoids memory pooling (under
  444. Windows).
  445. remove double "Electric Fence:" messages when calling EF_Abort()
  446. or EF_Exit()
  447. (2005-07-24, HA)
  448. added parameter ExitOnFail to Page_Create().
  449. added warning when allocation failed and ExitOnFail is off.
  450. extended _eff_allocate() for this. prepared new for standard conformity.
  451. (2005-07-20, HA)
  452. 2.4.14 integrated code from Tim Braun <braun@informatik.uni-kl.de>
  453. new EF_SHOW_ALLOC environment variable, which prints allocations
  454. and deallocation when variable set
  455. check if malloc() and free() are bound to efence
  456. (2005-07-15, HA)
  457. integrated a patch from Zbynek Vyskovsky <kvr@centrum.cz>
  458. in his words: "I modified Electric Efence a little, to be able
  459. to catch free-ing memory via watch point in debugger. The patch
  460. (attached) solves the problem when you are watching expression for
  461. change and suddenly realize the memory containing expression
  462. disappeared. It has no other effect, just makes debugging easier."
  463. (2005-07-11, HA)
  464. bugfix for internal slot mode EFST_DEALLOCATED reported by
  465. Mikolas Patocka: error occured when userSpace memory region of freed
  466. memory is reused from system and freed again: efence claimed freeing
  467. already freed memory.
  468. (2005-03-02, HA)
  469. now defining macros/functions also for str[n]cpy() and str[n]cat()
  470. checking for overlapping memory regions.
  471. (2005-02-17, HA)
  472. now defining macros/functions also for strdup(), memcpy().
  473. memcpy() checks if memory regions overlap.
  474. (2005-02-16, HA)
  475. added EF_OLD_DEL_MACRO preprocessor flag to keep compatibility to old
  476. DEL_ELEM() / DEL_ARRAY() macros. when not defined a macro for "delete"
  477. is defined which has standard conform syntax.
  478. (2005-02-14, HA)
  479. 2.4.13 added internal flag saving the source (allocation/deallocation)
  480. for filename and lineno.
  481. added EF_OLD_NEW_MACRO preprocessor flag to keep compatibility to old
  482. NEW_ELEM() / NEW_ARRAY() macros. when not defined a macro for "new"
  483. is defined which has standard conform syntax. unfortunately you have
  484. to use DEL_ELEM/DEL_ARRAY further to utilize filename and linenumber
  485. of deallocation calls.
  486. (2005-02-10, HA)
  487. reworked/revised ALL internal functions !!!
  488. freeing already freed memory is now detected (much better)
  489. this disallows coalescing memory regions and also stores __FILE__
  490. and __LINE__ of free() to be able to print position of first free.
  491. added EF_USE_FRAMENO preprocessor flag. changed not to support
  492. EF_newFrame() and EF_delFrame() by default.
  493. (2005-02-07, HA)
  494. applied bugfix posted by Luis Gonzalez. bug was occuring under
  495. SuSE Linux 9.1 when calling eftest with a higher number f.e. 10000.
  496. (2005-02-02, HA)
  497. bugfixed memalign() which was not exported as extern "C". this bug lead
  498. to crashes when freeing memory allocated by memalign(). bug was
  499. reported by Grant Goodyear and Steven G. Johnson.
  500. now defining macros/functions also for valloc()
  501. (2005-02-03, HA)
  502. 2.4.12 added EF_NO_GLOBAL_MALLOC_FREE preprocessor flag to workaround buggy
  503. environments:
  504. no malloc(),free(),realloc(),calloc() are put into the global namespace
  505. of the efence library, thus only files which include efence.h call the
  506. efence malloc(),.. replacement functions.
  507. this flag is also helpful where linking order cannot get controlled
  508. f.e. when memory is allocated from a library not using efence but free
  509. is called from efence using efence. this is a problem when using .dll
  510. libraries which are linked against msvcrt.dll and its malloc/free under
  511. MS Windows. the same problem applies when libstdc++ / libgcc is not
  512. linked in correct order.
  513. (2005-01-04, HA)
  514. 2.4.11 bugfixed signal handling in confidence test (eftest),
  515. which lead to false errors with my newly installed MandrakeLinux 10.1
  516. (2005-01-03, HA)
  517. bugfixed checking at free(), when EF_PROTECT_BELOW flag changed:
  518. which lead to false positives.
  519. bugfixed error message output to stderr: length of messages were
  520. calculated too short. fixed functions EF_Abort() and EF_Exit().
  521. (2004-08-15, HA)
  522. 2.4.10 added preprocessor macros for CA_DECLARE, CA_DEFINE, CA_REF in efence.h
  523. for declaration, definition and reference to Checked Arrays.
  524. these macros allow checks of arrays which are allocated on stack,
  525. but they are very slow on references cause every reference has to
  526. be checked.
  527. added EF_ASSERT() which definitely halts (for debugging)
  528. precompiled headers have to be switched off in MS Visual C++ to get all
  529. the C++ operators to work. but don't ask me why!
  530. implemented all the various new/delete/new[]/delete[] C++ operators.
  531. the implementations are not C++ conform concerning their behaviour
  532. added type mismatch detection between malloc()/free(), new/delete,
  533. new[]/delete[]. This is deactivated when EF_NO_LEAKDETECTION is set.
  534. added EF_MALLOC_FAILEXIT parameter. (for now not implemented)
  535. extended semantics of EF_PROTECT_FREE.
  536. added EF_MAX_ALLOC parameter.
  537. bugfix: why should we ever use Page_Delete() when setting up
  538. the "dead" page?
  539. bugfix: EF_PROTECT_FREE did exactly the opposite of that, what it
  540. should do up from Bruce's version 2.2.2 maybe earlier.
  541. (2004-07-16, HA)
  542. confidence test now PASSes again
  543. removed problems when used EF_NO_LEAKDETECTION preprocessor flag
  544. got Makefile to work again, also included automatic generation of
  545. efence_config.h
  546. added automatic generation and inclusion of efence_config.h instead
  547. function Page_Size()
  548. (2004-07-15, HA)
  549. added code for thread safety: only one thread at once is allowed to enter
  550. some internal functions. this can be deactivated using the EF_NO_THREAD_SAFETY
  551. preprocessor flag. there may be flaws concering threads, when using the c++ operators
  552. for leak detection: use the EF_NO_LEAKDETECTION preprocessor flag if you encounter problems!
  553. some files (page.c and print.c) have turned to header files,
  554. the needed functions are now declared static
  555. and are no more visible outside efence.c this way
  556. the NDEBUG preprocessor flag has been replaced by EF_NO_EFENCE, EF_NO_CPP_SUPPORT.
  557. so be careful not to include efence in your release builds!
  558. (2004-03-21, HA)
  559. 2.4.9 added checks for no mans land (= space which cannot get protected from
  560. the MMU): this area gets filled with EF_FILL on allocation, and gets
  561. checked on deallocation.
  562. (2002-12-04, HA)
  563. 2.4.8 one big fix and many improvements for C++ code. old macros NEW_ELEM,
  564. NEW_ARRAY were not usable when allocating classes, which have
  565. constructor/destructor. the usage of these macros has not changed
  566. (see 2.4.3).
  567. (2002-12-04, HA)
  568. 2.4.7 get to work with Borland Free Commandline Tools: Borland C++ Builder 5.5
  569. thrown away unnecessary declarations of malloc(), free(), ..
  570. Borland didn't like them,
  571. and neither MS-Visual C++ 6.0 nor gcc (Dev-C++) needs them.
  572. added project files in subdir "win32-vide" for VIDE 1.24
  573. using Borland C++
  574. Builder 5.5 (see http://www.objectcentral.com)
  575. (2002-11-22, HA)
  576. 2.4.6 remove memory leak in eftest
  577. allowed re-inclusion of efence.h after inclusion of efenceint.h
  578. added some project files in subdir "win32-devcpp" for Dev-C++ 4.9.6
  579. using gcc (see http://www.bloodshed.net)
  580. and saved its generated makefiles
  581. left tstheap's memory leaks
  582. (2002-11-17, HA)
  583. 2.4.5 modifications in print routines (EF_Print, EF_Abort, ..)
  584. added direct output to visual c++ debug output window.
  585. some additions to Makefile
  586. (2002-11-17, HA)
  587. 2.4.4 several modifications
  588. seperation of c++ files: efencepp.h, efencepp.cpp
  589. renamed EF_push()/EF_pop() to EF_newFrame()/EF_delFrame()
  590. new compile option "EF_NO_LEAKDETECTION"
  591. new compile option "EF_NO_CPP"
  592. splitted efence.h to efence.h and efenceint.h
  593. added Copyright and License information to many files
  594. renamed COPYING to COPYING-GPL
  595. (2002-11-03, HA)
  596. 2.4.3 added following PreProcessor Macros for Release and Debug Mode
  597. #define NEW_ELEM(TYPE) new TYPE
  598. #define NEW_ARRAY(TYPE,COUNT) new (TYPE)[COUNT]
  599. #define DEL_ELEM(PTR) delete PTR
  600. #define DEL_ARRAY(PTR) delete []PTR
  601. which are mapped to malloc() and free() in Debug Mode.
  602. Use these macros to get filename and linenumber of a C++ style
  603. memory leak.
  604. (2002-10-07, HA)
  605. 2.4.2 added support for implicit and explicit leak checking:
  606. void EF_push(void) creates a new memory frame.
  607. void EF_pop(void) checks for memory leaks allocated after EF_push().
  608. this function is called automatically onexit(),
  609. even without EF_push().
  610. (2002-10-07, HA)
  611. 2.4.1 Port to Windows (NT/2000/XP) by adding sections to following functions:
  612. Page_AllowAccess(), Page_Create(), Page_Delete(),
  613. Page_DenyAccess(), Page_Size()
  614. (2002-10-06, HA)
  615. 2.4.0 added support for C++ operators new, new[], delete and delete[].
  616. added some project files in subdir "win32-msvc" for MS-Visual C++ 6.0
  617. (2002-10-03, HA)
  618. 2.2.2 Oops. Shared library must be position-independent code.
  619. 2.2.0
  620. Merge in bug-fixes, multi-thread patch, shared library patch,
  621. debian/ subdirectory used for building the Debian package
  622. 2.0.1
  623. Add work-arounds for kernel and library bugs under HP-UX.
  624. HP has been notified and will repair these soon.
  625. 2.0.2
  626. Add support for DEC Alpha. Add %a pattern for printing addresses, which
  627. assumes they are passed in a void *.
  628. 2.0.3 30-Sep-1993
  629. When realloc is passed a zero address, it should work the same
  630. way as malloc(). Fix forward declaration of mprotect() in page.c to
  631. use void *, not caddr_t, for addresses. IRIX 5.0.1 complained about that.
  632. 2.0.4 29-May-1994
  633. Don't attempt to allow access to a zero-sized page when
  634. EF_ALLOW_MALLOC_0 is set. Attempt to un-map memory from
  635. Page_Delete(). If that doesn't work, fall back by protecting the
  636. page from all references. Un-mapping small segments of a mapping
  637. used to crash my SGI IRIX 5.0 system. I assume that nobody is running
  638. 5.0 any longer.
  639. 2.0.5 20-January-1995
  640. Port to Linux.