On Fri, Sep 08, 2023 at 10:08:28AM +0900, Masato Asou wrote: > From: Masato Asou <a...@soum.co.jp> > Date: Fri, 08 Sep 2023 05:45:55 +0900 (JST) > > > There was a mistake in the diff. > > > > From: Masato Asou <a...@soum.co.jp> > > Date: Fri, 08 Sep 2023 05:33:23 +0900 (JST) > > > >> Hi, > >> > >> I have modified diff. comments, ok?
As wrtwarning() is only used #ifdef MALLOC_STATS, please put it inside those guards (e.g directly above putleakinfo()). -Otto > >> > >> $ MALLOC_OPTIONS=D ktrace -tu ./a.out 1073490000 > >> a.out(99781) in unknown(): putleakinfo(): Cannot allocate memory > >> -- > >> ASOU Masato > >> > >> Index: stdlib/malloc.c > >> =================================================================== > >> RCS file: /cvs/src/lib/libc/stdlib/malloc.c,v > >> retrieving revision 1.289 > >> diff -u -p -r1.289 malloc.c > >> --- stdlib/malloc.c 30 Jun 2023 06:24:58 -0000 1.289 > >> +++ stdlib/malloc.c 7 Sep 2023 20:30:01 -0000 > >> @@ -344,6 +344,22 @@ wrterror(struct dir_info *d, char *msg, > >> } > >> > >> static void > >> +wrtwarning(char *func, char *msg, ...) > >> +{ > >> + int saved_errno = errno; > >> + va_list ap; > >> + > >> + dprintf(STDERR_FILENO, "%s(%d) in %s(): ", __progname, > >> + getpid(), func == NULL ? func : "unknown"); > > > > func != NULL ? func : "unknown" > > > > I will take a break and re-create the diff. > > I have fixed the diff. > > $ MALLOC_OPTIONS=D ktrace -tu ./a.out 1073500000 > a.out(34886) in putleakinfo(): Cannot allocate memory > $ kdump -u malloc > ******** Start dump a.out ******* > M=8 I=1 F=0 U=0 J=1 R=0 X=0 C=0 cache=64 G=0 > Leak report: > f sum # avg > > ******** End dump a.out ******* > $ ls -l ktrace.out > -rw------- 1 asou asou 734 Sep 8 09:59 ktrace.out > > comments, ok? > -- > ASOU Masato > > Index: stdlib/malloc.c > =================================================================== > RCS file: /cvs/src/lib/libc/stdlib/malloc.c,v > retrieving revision 1.289 > diff -u -p -r1.289 malloc.c > --- stdlib/malloc.c 30 Jun 2023 06:24:58 -0000 1.289 > +++ stdlib/malloc.c 8 Sep 2023 00:55:13 -0000 > @@ -344,6 +344,22 @@ wrterror(struct dir_info *d, char *msg, > } > > static void > +wrtwarning(const char *func, char *msg, ...) > +{ > + int saved_errno = errno; > + va_list ap; > + > + dprintf(STDERR_FILENO, "%s(%d) in %s(): ", __progname, > + getpid(), func != NULL ? func : "unknown"); > + va_start(ap, msg); > + vdprintf(STDERR_FILENO, msg, ap); > + va_end(ap); > + dprintf(STDERR_FILENO, "\n"); > + > + errno = saved_errno; > +} > + > +static void > rbytes_init(struct dir_info *d) > { > arc4random_buf(d->rbytes, sizeof(d->rbytes)); > @@ -2353,8 +2369,10 @@ putleakinfo(struct leaktree *leaks, void > if (page == NULL || > used >= MALLOC_PAGESIZE / sizeof(struct leaknode)) { > page = MMAP(MALLOC_PAGESIZE, 0); > - if (page == MAP_FAILED) > + if (page == MAP_FAILED) { > + wrtwarning(__func__, strerror(errno)); > return; > + } > used = 0; > } > p = &page[used++];