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?
>> 
>> $ 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++];

Reply via email to