-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Am getting the subject error intermittently when running 'ninja install'. I've gotten the same error using both ninja 1.5.1 and ninja 1.7.1 (on Ubuntu based systems)
Here's the failure information
*** buffer overflow detected ***: /usr/bin/ninja terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f060dc0d7e5]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f060dcae56c]
/lib/x86_64-linux-gnu/libc.so.6(+0x116570)[0x7f060dcac570]
/lib/x86_64-linux-gnu/libc.so.6(__fread_chk+0x165)[0x7f060dcacc65]
/usr/bin/ninja(+0x11cf4)[0x55a62f3f6cf4]
/usr/bin/ninja(+0x3c5e)[0x55a62f3e8c5e]
/usr/bin/ninja(+0x5d83)[0x55a62f3ead83]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f060dbb6830]
/usr/bin/ninja(+0x34f9)[0x55a62f3e84f9]
======= Memory map: ========
55a62f3e5000-55a62f413000 r-xp 00000000 08:21 1579078 /usr/bin/ninja
55a62f613000-55a62f614000 r--p 0002e000 08:21 1579078 /usr/bin/ninja
55a62f614000-55a62f615000 rw-p 0002f000 08:21 1579078 /usr/bin/ninja
55a62fca4000-55a62fcd6000 rw-p 00000000 00:00 0 [heap]
7f060d677000-7f060d68d000 r-xp 00000000 08:21 7864339 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f060d68d000-7f060d88c000 ---p 00016000 08:21 7864339 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f060d88c000-7f060d88d000 rw-p 00015000 08:21 7864339 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f060d88d000-7f060d995000 r-xp 00000000 08:21 7865842 /lib/x86_64-linux-gnu/libm-2.23.so
7f060d995000-7f060db94000 ---p 00108000 08:21 7865842 /lib/x86_64-linux-gnu/libm-2.23.so
7f060db94000-7f060db95000 r--p 00107000 08:21 7865842 /lib/x86_64-linux-gnu/libm-2.23.so
7f060db95000-7f060db96000 rw-p 00108000 08:21 7865842 /lib/x86_64-linux-gnu/libm-2.23.so
7f060db96000-7f060dd55000 r-xp 00000000 08:21 7865832 /lib/x86_64-linux-gnu/libc-2.23.so
7f060dd55000-7f060df55000 ---p 001bf000 08:21 7865832 /lib/x86_64-linux-gnu/libc-2.23.so
7f060df55000-7f060df59000 r--p 001bf000 08:21 7865832 /lib/x86_64-linux-gnu/libc-2.23.so
7f060df59000-7f060df5b000 rw-p 001c3000 08:21 7865832 /lib/x86_64-linux-gnu/libc-2.23.so
7f060df5b000-7f060df5f000 rw-p 00000000 00:00 0
7f060df5f000-7f060e0d1000 r-xp 00000000 08:21 1582643 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f060e0d1000-7f060e2d1000 ---p 00172000 08:21 1582643 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f060e2d1000-7f060e2db000 r--p 00172000 08:21 1582643 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f060e2db000-7f060e2dd000 rw-p 0017c000 08:21 1582643 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f060e2dd000-7f060e2e1000 rw-p 00000000 00:00 0
7f060e2e1000-7f060e307000 r-xp 00000000 08:21 7865317 /lib/x86_64-linux-gnu/ld-2.23.so
7f060e4e1000-7f060e4e6000 rw-p 00000000 00:00 0
7f060e503000-7f060e506000 rw-p 00000000 00:00 0
7f060e506000-7f060e507000 r--p 00025000 08:21 7865317 /lib/x86_64-linux-gnu/ld-2.23.so
7f060e507000-7f060e508000 rw-p 00026000 08:21 7865317 /lib/x86_64-linux-gnu/ld-2.23.so
7f060e508000-7f060e509000 rw-p 00000000 00:00 0
7fff219d1000-7fff21a56000 rw-p 00000000 00:00 0 [stack]
7fff21aac000-7fff21aae000 r--p 00000000 00:00 0 [vvar]
7fff21aae000-7fff21ab0000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Child aborted
CMake Error: Generator: execution of make failed. Make command was: "/usr/bin/ninja" "install"
I attached gdb to the core and found the following backtrace:
(gdb) bt
#0 0x00007f060dbcb428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007f060dbcd02a in __GI_abort () at abort.c:89
#2 0x00007f060dc0d7ea in __libc_message (do_abort=do_abort@entry=2,
fmt=fmt@entry=0x7f060dd248a2 "*** %s ***: %s terminated\n") at ../sysdeps/posix/libc_fatal.c:175
#3 0x00007f060dcae56c in __GI___fortify_fail (msg=<optimized out>, msg@entry=0x7f060dd24833 "buffer overflow detected")
at fortify_fail.c:37
#4 0x00007f060dcac570 in __GI___chk_fail () at chk_fail.c:28
#5 0x00007f060dcacc65 in __fread_chk (ptr=ptr@entry=0x7fff219d2f10, ptrlen=ptrlen@entry=524288,
size=size@entry=1768824867, n=n@entry=1, stream=stream@entry=0x55a62fcba040) at fread_chk.c:39
#6 0x000055a62f3f6cf4 in fread (__stream=0x55a62fcba040, __n=1, __size=1768824867, __ptr=0x7fff219d2f10)
at /usr/include/x86_64-linux-gnu/bits/stdio2.h:290
#7 DepsLog::Load (this=0x7fff21a53380, path=".ninja_deps", state=0x7fff21a53228, err=0x7fff21a52fa0)
at src/deps_log.cc:212
#8 0x000055a62f3e8c5e in (anonymous namespace)::NinjaMain::OpenDepsLog (this=0x7fff21a53210,
recompact_only=<optimized out>) at src/ninja.cc:871
#9 0x000055a62f3ead83 in (anonymous namespace)::real_main (argc=<optimized out>, argv=<optimized out>)
at src/ninja.cc:1124
#10 0x00007f060dbb6830 in __libc_start_main (main=0x55a62f3e8240 <main(int, char**)>, argc=2, argv=0x7fff21a534e8,
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff21a534d8)
at ../csu/libc-start.c:291
#11 0x000055a62f3e84f9 in _start ()
Appears like frame 7 was where things went downhill.
(gdb) frame 7
#7 DepsLog::Load (this=0x7fff21a53380, path=".ninja_deps", state=0x7fff21a53228, err=0x7fff21a52fa0)
at src/deps_log.cc:212
212 if (fread(buf, size, 1, f) < 1 || size > kMaxRecordSize) {
fread() seems to not like the huge size value being passed
(gdb) p size
$1 = 1768824867
From a quick scan over the code, it appears that the code was trying to load a .ninja_deps file. All of the .ninja_deps files after the failure have the same contents:
00000000 23 20 6e 69 6e 6a 61 64 65 70 73 0a 03 00 00 00 |# ninjadeps.....|
00000010
The error doesn't happen every time (maybe 1 in 20), so I'm guessing it's a race condition. Any help towards what to do next would be greatly appreciated. Also, if more information is needed, please let me know.
thanks