-C Fix\sfor\sOMIT_AUTHORIZATION\sbuilds.\s(CVS\s4489)
-D 2007-10-15T07:08:44
+C Add\sa\smalloc\ssize\shistogram\sto\sthe\sdebugging\smalloc\simplementation\nin\smem2.c.\s(CVS\s4490)
+D 2007-10-15T19:34:32
F Makefile.in 75b729d562e9525d57d9890ec598b38e1a8b02bc
F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/malloc.c de4e77fe70a9a0ac47a1c3a874422b107231bf31
F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
F src/mem1.c 232075b7da8c9b7f23159bbda25c7407168ab9db
-F src/mem2.c 9c59519e471f858961fbdccd9543317bba1c5e58
+F src/mem2.c 8651e5306c1d5c0a7ab91c027a653ced1ca3e6d6
F src/mutex.c 3259f62c2429967aee6dc112117a6d2f499ef061
F src/mutex.h 079fa6fe9da18ceb89e79012c010594c6672addb
F src/mutex_os2.c 7fe4773e98ed74a63b2e54fc557929eb155f6269
F test/tableapi.test 92651a95c23cf955e92407928e640536402fa3cc
F test/tclsqlite.test c7feea1985c3e8a1ed134ba342347d47fa762e43
F test/temptable.test 19b851b9e3e64d91e9867619b2a3f5fffee6e125
-F test/tester.tcl 913a808f05b0aed2fbb16481a423b1a5a118bdf0
+F test/tester.tcl 0fea2ceef69678ee8b15d3dd64d29f659449a081
F test/thread001.test 8fbd9559da0bbdc273e00318c7fd66c162020af7
F test/thread002.test 2c4ad2c386f60f6fe268cd91c769ee35b3c1fd0b
F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P e756bc9b74ef357c088b3044527c41e6834ba1a2
-R 2a362f0638262e15107e468de4d77838
-U danielk1977
-Z 171613e0cdad61754450cbee9fe33dc0
+P 260711a14d5ab2d7c9888c7c46c33a28a3da0415
+R e7cd2dbd87cc55ed9709f416c29bb4b2
+U drh
+Z b3fd55271c42d6d384286f4a414e866e
-260711a14d5ab2d7c9888c7c46c33a28a3da0415
\ No newline at end of file
+3e51696cb878063e4ebfdcc2a61ba94c9bebdfe3
\ No newline at end of file
** This file contains the C functions that implement a memory
** allocation subsystem for use by SQLite.
**
-** $Id: mem2.c,v 1.14 2007/10/03 08:46:45 danielk1977 Exp $
+** $Id: mem2.c,v 1.15 2007/10/15 19:34:32 drh Exp $
*/
/*
#define FOREGUARD 0x80F5E153
#define REARGUARD 0xE4676B53
+/*
+** Number of malloc size increments to track.
+*/
+#define NCSIZE 500
+
/*
** All of the static variables used by this module are collected
** into a single structure named "mem". This is to keep the
** sqlite3MallocAllow() decrements it.
*/
int disallow; /* Do not allow memory allocation */
-
-
+
+ /*
+ ** Gather statistics on the sizes of memory allocations.
+ ** sizeCnt[i] is the number of allocation attempts of i*4
+ ** bytes. i==NCSIZE is the number of allocation attempts for
+ ** sizes more than NCSIZE*4 bytes.
+ */
+ int sizeCnt[NCSIZE];
+
} mem;
sqlite3MemsysAlarm(nByte);
}
nByte = (nByte+3)&~3;
+ if( nByte/8>NCSIZE-1 ){
+ mem.sizeCnt[NCSIZE-1]++;
+ }else{
+ mem.sizeCnt[nByte/8]++;
+ }
totalSize = nByte + sizeof(*pHdr) + sizeof(int) +
mem.nBacktrace*sizeof(void*) + mem.nTitle;
if( mem.iFail>0 ){
FILE *out;
struct MemBlockHdr *pHdr;
void **pBt;
+ int i;
out = fopen(zFilename, "w");
if( out==0 ){
fprintf(stderr, "** Unable to output memory debug output log: %s **\n",
fprintf(out, "\n");
}
}
+ fprintf(out, "COUNTS:\n");
+ for(i=0; i<NCSIZE-1; i++){
+ if( mem.sizeCnt[i] ){
+ fprintf(out, " %3d: %d\n", i*8+8, mem.sizeCnt[i]);
+ }
+ }
+ if( mem.sizeCnt[NCSIZE-1] ){
+ fprintf(out, " >%3d: %d\n", NCSIZE*8, mem.sizeCnt[NCSIZE-1]);
+ }
fclose(out);
}
# This file implements some common TCL routines used for regression
# testing the SQLite library
#
-# $Id: tester.tcl,v 1.91 2007/09/01 09:02:54 danielk1977 Exp $
+# $Id: tester.tcl,v 1.92 2007/10/15 19:34:32 drh Exp $
set tcl_precision 15
}
} else {
puts "All memory allocations freed - no leaks"
+ ifcapable memdebug {
+ sqlite3_memdebug_dump ./memusage.txt
+ }
}
puts "Maximum memory usage: [sqlite3_memory_highwater] bytes"
foreach f [glob -nocomplain test.db-*-journal] {