forked from johnsonjh/duma
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
837 lines (767 loc) · 37.6 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
CHANGELOG:
==========
2.6xx
=====
* Update README.txt: Remove alt tag spaces
* Update README.md: Update lgtm analysis badging
* stacktrace/printStackTrace.cpp: Refer to #81
* duma.h: Refer to #82
* multi: Quiet TickGit
* Merge pull request #80 from hayguen/master
* fix warning: https://github.com/johnsonjh/duma/issues/76
* Merge pull request #79 from johnsonjh/restyled/pull-78
* Restyled by clang-format
* Restyled by astyle
* fix warning: https://github.com/johnsonjh/duma/issues/77
* Update README.md: Clarify text
* Update GNUmakefile: Remove shar target
* Merge pull request #74 from johnsonjh/deepsource-transform-162cfcd9
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* Update README.md: Simplify header section titles
* Update TODO: Reference GitHub #70
* Update TODO: Remove verified completed items
* Update TODO: Remove obsolete service reference
* multi: process code with `expand`; remove TODO
* Update TODO: Remove item redundant by #65 and #64
* Update TODO: Reference GitHub #65
* Update TODO: Reference #64
* Update TODO: Remove {s,p,q,b}make references
* Update TODO: Remove obsolete compiler references.
* Update TODO: Remove ICC (now DPC++) - it works.
* Update TODO: Fix DMCC and OWC URLs
* Update TODO: Add notes
* Update README.md: Remove comment newlines
* Merge pull request #68 from johnsonjh/deepsource-transform-de75b352
* Merge pull request #67 from johnsonjh/deepsource-transform-769b82fe
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* Update README.md: Remove redundant header emphasis
* Update README.md: Process with markdown-toc
* Update README.md: Small reorganization
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* Update README.md: Process with markdown-toc
* Update README.md: Prepare for markdown-toc
* Rename: docs-data -> docs; builddocs.bat to Attic
* Attic: refactoring.sh -> Attic/refactoring.sh
* Merge pull request #57 from johnsonjh/restyled/pull-56
* Update GNUmakefile: C++-11 compilation mode w/g++
* Update duma.c: Adjust include ordering
* Merge pull request #59 from johnsonjh/deepsource-transform-80543723
* Merge pull request #61 from johnsonjh/deepsource-transform-6eb76d71
* Merge pull request #62 from johnsonjh/restyled/deepsource-transform-6eb76d71
* Merge pull request #60 from johnsonjh/restyled/deepsource-transform-80543723
* Restyled by prettier-markdown
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* Rebase and merge - Restyling by prettier-markdown
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* Restyled by prettier-markdown
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* Update README.md: Incorporate #52 and #53.
* Update README.md: Incorporate #52 and #53.
* Restyled by whitespace
* Restyled by shfmt
* Restyled by shellharden
* Restyled by clang-format
* Restyled by astyle
* Restyled by prettier-markdown
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* added cmake targets install and uninstall
* initial cmake support +fixes
* Update README.md: Fixup conversion, correct typos
* Rename: Attic/README.txt -> Attic/README_orig.txt
* Update GNUmakefile: Install Markdown-ified doc
* Merge pull request #49 from johnsonjh/restyled/pull-48
* Restyled by prettier-markdown
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* Update CHANGELOG
* README.md: Commit first attempt at (mostlt automated) Markdown-ification.
* Restyled by clang-format
* Restyled by astyle
* fix compilation warnings with gcc-9.3; changes in createconf on addr
* Update README.md
* Stow old comparions to make way for overhaul.
* CHANGELOG: Document Attic
* Merge pull request #46 from johnsonjh/deepsource-transform-c20ce809
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* Update 42Crunch/api-security-audit-action action to v2
* Update codacy/codacy-analysis-cli-action action to v3.0.3
* Update codacy/codacy-analysis-cli-action action to v3.0.2
* Update codacy/codacy-analysis-cli-action action to v3.0.1
* Create Attic: Store detours and kduma for now.
* Merge pull request #37 from johnsonjh/renovate/codacy-codacy-analysis-cli-action-3.x
* Update codacy/codacy-analysis-cli-action action to v3
* Merge pull request #36 from jhjv/patch-1
* Update README.md: Fix code size badge
* Merge pull request #35 from johnsonjh/renovate/actions-setup-java-2.x
* Update actions/setup-java action to v2
* Update GNUmakefile: Remove "a.out" during clean.
* Update README.md: SourceHut: Link to project page
* Update README.md: Add links to GitLab mirror.
* Add .gitattributes to configure GitHub Linguist.
* Merge pull request #34 from johnsonjh/deepsource-transform-3b52b849
* Format code with black, gofmt, yapf, autopep8, isort, standardrb, standardjs, prettier and rubocop
* README.md: Remove duplicated Codacy badging.
* Merge pull request #33 from johnsonjh/renovate/codacy-codacy-analysis-cli-action-2.x
* Update codacy/codacy-analysis-cli-action action to v2.0.1
* Merge pull request #32 from johnsonjh/renovate/codacy-codacy-analysis-cli-action-2.x
* Normalize some code styling with clang-format.
* scripts: Reformat
* Update codacy/codacy-analysis-cli-action action to v2
* README: Correct link title
* Update contact info and documentation.
* Switch to git-changelog generated CHANGELOG (manually triggered for now)
(2021-05-30, JJ)
* Stow README.txt, add initial Markdown conversion.
* Create Attic, store Detours and kduma for now.
(2021-05-28, JJ)
* Stow away old comparison data; prepare for overhaul.
(2021-05-28, JJ)
2.5.21
* Update contact information and documentation.
2.5.20
* Typo fix and build system updates - nothing functional.
2.5.19
* Updated scripts, Debian release info, minor changes.
2.5.18
* Non-beta tagged release.
2.5.17
* Updated README with extra history and information.
(2020-12-15, JJ)
* Added SECURITY.md: New Security Policy for bug reporting.
(2020-12-15, JJ)
* 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 <[email protected]>
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 <[email protected]> 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 <[email protected]>
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 <[email protected]>
* 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 <[email protected]> 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 <[email protected]>
(2006-01-09, HA)
2.4.26 new project file for Dev-C++ 4.9.9.2 for createconf from
Benjamin Berkels <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>:
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 <[email protected]>
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 <[email protected]> :
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 <[email protected]>
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 <[email protected]>
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.