All of lore.kernel.org
 help / color / mirror / Atom feed
* *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated
@ 2016-12-19 16:18 Markus Trippelsdorf
  2016-12-19 16:52 ` Markus Trippelsdorf
  0 siblings, 1 reply; 4+ messages in thread
From: Markus Trippelsdorf @ 2016-12-19 16:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: Arnaldo Carvalho de Melo, Ingo Molnar

Running the latest kernel git tree, I get buffer overflow warnings when
I try to run "perf top":

*** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated        

__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51      }
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff5f29cbb in __GI_abort () at abort.c:89
#2  0x00007ffff5f6f553 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7ffff6056455 "*** %s ***: %s terminated\n") at ../sysdeps/posix/libc_fatal.c:175
#3  0x00007ffff600d8c7 in __GI___fortify_fail (msg=msg@entry=0x7ffff60563ec "buffer overflow detected") at fortify_fail.c:30
#4  0x00007ffff600b790 in __GI___chk_fail () at chk_fail.c:28
#5  0x00007ffff600bc35 in __read_chk (fd=fd@entry=3, buf=buf@entry=0x7fffffff48f0, nbytes=nbytes@entry=1572864, buflen=buflen@entry=8192) at read_chk.c:30
#6  0x00000000004fafc4 in read (__nbytes=1572864, __buf=0x7fffffff48f0, __fd=3) at /usr/include/bits/unistd.h:39
#7  sysfs__read_build_id (filename=filename@entry=0x7fffffff6940 "/sys/kernel/notes", build_id=build_id@entry=0x1db5e34, size=size@entry=20) at util/symbol-elf.c:540
#8  0x00000000004a8c22 in dso__read_running_kernel_build_id (dso=dso@entry=0x1db5d70, machine=machine@entry=0x1db5ab8) at util/dso.c:1152
#9  0x00000000004b875a in machine__get_kernel (machine=machine@entry=0x1db5ab8) at util/machine.c:715
#10 0x00000000004ba0ab in machine__create_kernel_maps (machine=machine@entry=0x1db5ab8) at util/machine.c:1127
#11 0x00000000004bf169 in perf_session__create_kernel_maps (session=session@entry=0x1db59d0) at util/session.c:70
#12 0x00000000004bf43b in perf_session__new (file=file@entry=0x0, repipe=repipe@entry=false, tool=tool@entry=0x0) at util/session.c:154
#13 0x0000000000441eca in __cmd_top (top=0x7fffffff8a70) at builtin-top.c:925
#14 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1330
#15 0x0000000000487481 in run_builtin (p=p@entry=0x679d78 <commands+312>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe4c0) at perf.c:358
#16 0x0000000000487722 in handle_internal_command (argc=2, argv=0x7fffffffe4c0) at perf.c:420
#17 0x0000000000487982 in run_argv (argv=0x7fffffffe250, argcp=0x7fffffffe25c) at perf.c:466
#18 main (argc=<optimized out>, argv=<optimized out>) at perf.c:610

(gdb) up
#7  sysfs__read_build_id (filename=filename@entry=0x7fffffff6940 "/sys/kernel/notes", build_id=build_id@entry=0x1db5e34, size=size@entry=20) at util/symbol-elf.c:540
540                             if (read(fd, bf, n) != n)
(gdb) l
535                                     }
536                             } else if (read(fd, bf, descsz) != (ssize_t)descsz)
537                                     break;
538                     } else {
539                             int n = namesz + descsz;
540                             if (read(fd, bf, n) != n)
541                                     break;
542                     }
543             }
544             close(fd);

(gdb) p n
$4 = 1572864
(gdb) p BUFSIZ
$5 = 8192


-- 
Markus

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated
  2016-12-19 16:18 *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated Markus Trippelsdorf
@ 2016-12-19 16:52 ` Markus Trippelsdorf
  2016-12-19 17:28   ` Markus Trippelsdorf
  0 siblings, 1 reply; 4+ messages in thread
From: Markus Trippelsdorf @ 2016-12-19 16:52 UTC (permalink / raw)
  To: linux-kernel; +Cc: Arnaldo Carvalho de Melo, Ingo Molnar

On 2016.12.19 at 17:18 +0100, Markus Trippelsdorf wrote:
> Running the latest kernel git tree, I get buffer overflow warnings when
> I try to run "perf top":
> 
> *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated        
> 
> __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
> 51      }
> (gdb) bt
> #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
> #1  0x00007ffff5f29cbb in __GI_abort () at abort.c:89
> #2  0x00007ffff5f6f553 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7ffff6056455 "*** %s ***: %s terminated\n") at ../sysdeps/posix/libc_fatal.c:175
> #3  0x00007ffff600d8c7 in __GI___fortify_fail (msg=msg@entry=0x7ffff60563ec "buffer overflow detected") at fortify_fail.c:30
> #4  0x00007ffff600b790 in __GI___chk_fail () at chk_fail.c:28
> #5  0x00007ffff600bc35 in __read_chk (fd=fd@entry=3, buf=buf@entry=0x7fffffff48f0, nbytes=nbytes@entry=1572864, buflen=buflen@entry=8192) at read_chk.c:30
> #6  0x00000000004fafc4 in read (__nbytes=1572864, __buf=0x7fffffff48f0, __fd=3) at /usr/include/bits/unistd.h:39
> #7  sysfs__read_build_id (filename=filename@entry=0x7fffffff6940 "/sys/kernel/notes", build_id=build_id@entry=0x1db5e34, size=size@entry=20) at util/symbol-elf.c:540
> #8  0x00000000004a8c22 in dso__read_running_kernel_build_id (dso=dso@entry=0x1db5d70, machine=machine@entry=0x1db5ab8) at util/dso.c:1152
> #9  0x00000000004b875a in machine__get_kernel (machine=machine@entry=0x1db5ab8) at util/machine.c:715
> #10 0x00000000004ba0ab in machine__create_kernel_maps (machine=machine@entry=0x1db5ab8) at util/machine.c:1127
> #11 0x00000000004bf169 in perf_session__create_kernel_maps (session=session@entry=0x1db59d0) at util/session.c:70
> #12 0x00000000004bf43b in perf_session__new (file=file@entry=0x0, repipe=repipe@entry=false, tool=tool@entry=0x0) at util/session.c:154
> #13 0x0000000000441eca in __cmd_top (top=0x7fffffff8a70) at builtin-top.c:925
> #14 cmd_top (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-top.c:1330
> #15 0x0000000000487481 in run_builtin (p=p@entry=0x679d78 <commands+312>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe4c0) at perf.c:358
> #16 0x0000000000487722 in handle_internal_command (argc=2, argv=0x7fffffffe4c0) at perf.c:420
> #17 0x0000000000487982 in run_argv (argv=0x7fffffffe250, argcp=0x7fffffffe25c) at perf.c:466
> #18 main (argc=<optimized out>, argv=<optimized out>) at perf.c:610
> 
> (gdb) up
> #7  sysfs__read_build_id (filename=filename@entry=0x7fffffff6940 "/sys/kernel/notes", build_id=build_id@entry=0x1db5e34, size=size@entry=20) at util/symbol-elf.c:540
> 540                             if (read(fd, bf, n) != n)
> (gdb) l
> 535                                     }
> 536                             } else if (read(fd, bf, descsz) != (ssize_t)descsz)
> 537                                     break;
> 538                     } else {
> 539                             int n = namesz + descsz;
> 540                             if (read(fd, bf, n) != n)
> 541                                     break;
> 542                     }
> 543             }
> 544             close(fd);
> 
> (gdb) p n
> $4 = 1572864
> (gdb) p BUFSIZ
> $5 = 8192

It only happens when I link my kernel with gold.

(with ld.bfd)
markus@x4 linux % readelf -n vmlinux

Displaying notes found in: .notes
  Owner                 Data size       Description
  GNU                  0x00000014       NT_GNU_BUILD_ID (unique build ID bitstring)
    Build ID: 74b478c2194c0ba07481acf30f6f8781d4ffcdee

(with ld.gold)
markus@x4 linux % readelf -n vmlinux

Displaying notes found in: .note.gnu.build-id
  Owner                 Data size       Description
  GNU                  0x00000014       NT_GNU_BUILD_ID (unique build ID bitstring)
    Build ID: 017ef6e6f8ce3b44332d0baa0767526bb3a77bf8

Displaying notes found in: .note.gnu.gold-version
  Owner                 Data size       Description
  GNU                  0x00000009       NT_GNU_GOLD_VERSION (gold version)
    Version: gold 1.12

And perf than chokes when parsing /sys/kernel/notes.

-- 
Markus

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated
  2016-12-19 16:52 ` Markus Trippelsdorf
@ 2016-12-19 17:28   ` Markus Trippelsdorf
  2016-12-19 18:37     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 4+ messages in thread
From: Markus Trippelsdorf @ 2016-12-19 17:28 UTC (permalink / raw)
  To: linux-kernel; +Cc: Arnaldo Carvalho de Melo, Ingo Molnar

On 2016.12.19 at 17:52 +0100, Markus Trippelsdorf wrote:
> On 2016.12.19 at 17:18 +0100, Markus Trippelsdorf wrote:
> > Running the latest kernel git tree, I get buffer overflow warnings when
> > I try to run "perf top":
> > 
> > *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated        
> 
> It only happens when I link my kernel with gold.
> 
> (with ld.bfd)
> markus@x4 linux % readelf -n vmlinux
> 
> Displaying notes found in: .notes
>   Owner                 Data size       Description
>   GNU                  0x00000014       NT_GNU_BUILD_ID (unique build ID bitstring)
>     Build ID: 74b478c2194c0ba07481acf30f6f8781d4ffcdee
> 
> (with ld.gold)
> markus@x4 linux % readelf -n vmlinux
> 
> Displaying notes found in: .note.gnu.build-id
>   Owner                 Data size       Description
>   GNU                  0x00000014       NT_GNU_BUILD_ID (unique build ID bitstring)
>     Build ID: 017ef6e6f8ce3b44332d0baa0767526bb3a77bf8
> 
> Displaying notes found in: .note.gnu.gold-version
>   Owner                 Data size       Description
>   GNU                  0x00000009       NT_GNU_GOLD_VERSION (gold version)
>     Version: gold 1.12
> 
> And perf than chokes when parsing /sys/kernel/notes.

Started with gold commit:

 commit bfbf34de2f27672282d4fa4c0916cc41890dcc6c
 Author: Cary Coutant <ccoutant@gmail.com>
 Date:   Mon Dec 12 18:51:29 2016 -0800

    When using linker scripts, place linker-generated sections by the output section name.

I've opened a gold bug:
https://sourceware.org/bugzilla/show_bug.cgi?id=20983

-- 
Markus

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated
  2016-12-19 17:28   ` Markus Trippelsdorf
@ 2016-12-19 18:37     ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-12-19 18:37 UTC (permalink / raw)
  To: Markus Trippelsdorf; +Cc: linux-kernel, Ingo Molnar

Em Mon, Dec 19, 2016 at 06:28:42PM +0100, Markus Trippelsdorf escreveu:
> On 2016.12.19 at 17:52 +0100, Markus Trippelsdorf wrote:
> > On 2016.12.19 at 17:18 +0100, Markus Trippelsdorf wrote:
> > > Running the latest kernel git tree, I get buffer overflow warnings when
> > > I try to run "perf top":
> > > 
> > > *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated        
> > 
> > It only happens when I link my kernel with gold.
<SNIP>
> > And perf than chokes when parsing /sys/kernel/notes.
> 
> Started with gold commit:
> 
>  commit bfbf34de2f27672282d4fa4c0916cc41890dcc6c
>  Author: Cary Coutant <ccoutant@gmail.com>
>  Date:   Mon Dec 12 18:51:29 2016 -0800
> 
>     When using linker scripts, place linker-generated sections by the output section name.
> 
> I've opened a gold bug:
> https://sourceware.org/bugzilla/show_bug.cgi?id=20983

I guess we need something along the lines of below, but I think the max
should be set to the filesize, have to spend some more time here, using
stat() in such case, etc, wdyt?

- Arnaldo

diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 99400b0e8f2a..adbc6c02c3aa 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -537,6 +537,12 @@ int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
 				break;
 		} else {
 			int n = namesz + descsz;
+
+			if (n > (int)sizeof(bf)) {
+				n = sizeof(bf);
+				pr_debug("%s: truncating reading of build id in sysfs file %s: n_namesz=%u, n_descsz=%u.\n",
+					 __func__, filename, nhdr.n_namesz, nhdr.n_descsz);
+			}
 			if (read(fd, bf, n) != n)
 				break;
 		}

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-12-19 18:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-19 16:18 *** buffer overflow detected ***: /usr/src/linux/tools/perf/perf terminated Markus Trippelsdorf
2016-12-19 16:52 ` Markus Trippelsdorf
2016-12-19 17:28   ` Markus Trippelsdorf
2016-12-19 18:37     ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.