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
|
Write OOP style in all your code.. each system is self contained... no
overlap.. Ex: ret addrs don't interact with anything else.. you if you want a
callstack, you request it, and get an index back, this index you can look up
in a table..
Split the .c files up into functional components.. split the .h files up..
First just do it with ret_addrs.. when that works and is succinct, split
everything else
Score igor..
make sure mem_under isn't faulting that extra page..
expand run_tests.pl to test CHK_FREE=none
Change called to called_loc
Warn if alignment isn't a power of two.. No option either.. Tell them to mail
mikepery if they actually need it.
more stack traces... make fenceposting manditory
Notes on indef trace results:
2^32 bytes of address space, 2^13 bytes per malloc. Leaves 2^19 allocations to
FILL the address space. Each allocation has about 5-7 callstraces.. but
default 3.. Under the old regeim 2^19*3*4*2=12megs. Under the new regeim
figure 7 callstacks each, 2^19*7*4*2=29megs for a full address space and
lots of allocations. For a 256meg program, 2^28 bytes. Only use 1 page of
memory per alloc: 2^16 entries*7*4*2=3.5megs. So the realloc table should be
between 4 megs and 12 megs for optimum usage.. 8 megs it is. That would fill
about 2^17*8*2 (handling 512 megs of mem). We'd need 8 of those to handle
the 4gig address space. 2^21 entires will be in the 8 meg table. That leaves
11 bits. High 3bits+ used for which table (0-7) 8 bits used for the length of
the trace.
Only 2^19 allocs in a full address space... Figure 4 indices per alloc. thats
2^21 entries in a table.
The rest of this list has been moved to sourceforge.
https://sourceforge.net/pm/?group_id=18683
|