[fpc-devel] Heaptrc settings by environments

Martin Frb lazarus at mfriebe.de
Mon Apr 21 19:55:55 CEST 2014


http://www.freepascal.org/docs-html/rtl/heaptrc/environment.html

I was comparing the keywords accepted in the environment with the list 
of options that exist in the unit.

The following can be set by env, but is not in the doc (based on 2.7.1)
   HaltOnNotReleased : boolean = false;


Could/Should the following be added to the environment?

Not sure what it actually does, but the option is implemented...
   { less checking }
   quicktrace : boolean=true;

   { add a small footprint at the end of memory blocks, this  can check 
for memory overwrites at the end of a block }
   add_tail : boolean = true;

   { put crc in sig   this allows to test for writing into that part }
   usecrc : boolean = true;

   printleakedblock: boolean = false;
   printfaultyblock: boolean = false;
   maxprintedblocklength: integer = 128;

-----------
About:
   tracesize = 8;

This is currently used in type definition
theap_mem_info = record
     calls    : array [1..tracesize] of codepointer;

So it can not be changed at runtime.

Without any intend of immediate action, but curiosity for future 
potential patches, would it be considered acceptable, if:
- The array was moved to the end of record, and defined
     calls    : array [1..8] of codepointer;
  But (without range check) would allow arbitrary indexes
- All memory alloc would replace "sizeof(theap_mem_info)" by 
"sizeof(theap_mem_info)+(tracesize-8)*sizeof(codepointer)"  (can be pre 
calculated)
- checks where in place to ensure it is divide-able by 8 / minimum of 8
- all resulting errors and problems (potentially a great many) would be 
fixed.

Allowing to make the value configurable.




More information about the fpc-devel mailing list