On 02/25/2015 06:15 PM, Jan Hubicka wrote:
On 2015.02.25 at 09:38 +0100, Jan Hubicka wrote:
this patch reorganize sem_function::merge and sem_variable::merge.
I read the code in detail and found several issues that are fixed in the
following patch.
I gave your patch a quick spin. It breaks Chromium. Its protocol buffer
compiler gets miscompiled:
I see (I remember running into simiarly looking ICE last time I tried Chromium).
Is there any chance you can look into what gets wrong? I added enough of
sanity checking
code so I do not see how merging itself can lead to wrong codes without ICEing,
but the patch makes considerably more merging to happen (old code had bug where
it
tried to merge but didn't), so we may run into another previously latent issue.
Martin has 3 correctness ipa-icf patches in a way, so perhaps one of them ;)
Honza
Hello.
I've just updated chromium to latest version, but unfortunately I cannot
reproduce the memory corruption.
Which build flags do you use Markus for Chromium? Can you please run valgrind
to spot the problematic function?
Moreover, I would appreciate if you will be able to find corresponding merge
operation (-fdump-ipa-icf)
Thank you,
Martin
RULE Generating C++ and Python code from copresence/proto/enums.proto
FAILED: cd ../../components; python ../tools/protoc_wrapper/protoc_wrapper.py --include
"" --protobuf
"../out/Release/gen/protoc_out/components/copresence/proto/enums.pb.h" -
-proto-in-dir copresence/proto --proto-in-file "enums.proto"
"--use-system-protobuf=0" -- ../out/Release/protoc --cpp_out
../out/Release/gen/protoc_out/components/copresence/
proto --python_out ../out/Release/pyproto/components/copresence/proto
*** Error in `../out/Release/protoc': double free or corruption (out):
0x00007ffd966468b0 ***
======= Backtrace: =========
/lib/libc.so.6(+0x7265e)[0x7fe09058065e]
/lib/libc.so.6(+0x77f1d)[0x7fe090585f1d]
/lib/libc.so.6(+0x7874b)[0x7fe09058674b]
../out/Release/protoc[0x45f5e1]
../out/Release/protoc[0x462caf]
../out/Release/protoc[0x462d1c]
../out/Release/protoc[0x46685c]
../out/Release/protoc[0x4677d5]
../out/Release/protoc[0x4679c3]
../out/Release/protoc[0x467b15]
../out/Release/protoc[0x479d89]
../out/Release/protoc[0x4aa058]
../out/Release/protoc[0x4aa0af]
../out/Release/protoc[0x46b217]
../out/Release/protoc[0x4a4832]
../out/Release/protoc[0x4a86cf]
../out/Release/protoc[0x4a890e]
../out/Release/protoc[0x4a0827]
../out/Release/protoc[0x4678fd]
../out/Release/protoc[0x467b15]
../out/Release/protoc[0x40c926]
../out/Release/protoc[0x403131]
/lib/libc.so.6(__libc_start_main+0xf0)[0x7fe09052e6d0]
../out/Release/protoc[0x4037f9]
======= Memory map: ========
00400000-004eb000 r-xp 00000000 00:13 36244132
/var/tmp/chromium/src/out/Release/protoc
004ec000-004ef000 r--p 000eb000 00:13 36244132
/var/tmp/chromium/src/out/Release/protoc
004ef000-004f0000 rw-p 000ee000 00:13 36244132
/var/tmp/chromium/src/out/Release/protoc
01ab0000-01b03000 rw-p 00000000 00:00 0 [heap]
7fe09027f000-7fe09030d000 r-xp 00000000 00:0f 2540736
/lib64/libm-2.21.90.so
7fe09030d000-7fe09050c000 ---p 0008e000 00:0f 2540736
/lib64/libm-2.21.90.so
7fe09050c000-7fe09050d000 r--p 0008d000 00:0f 2540736
/lib64/libm-2.21.90.so
7fe09050d000-7fe09050e000 rw-p 0008e000 00:0f 2540736
/lib64/libm-2.21.90.so
7fe09050e000-7fe09066e000 r-xp 00000000 00:0f 2541268
/lib64/libc-2.21.90.so
7fe09066e000-7fe09086d000 ---p 00160000 00:0f 2541268
/lib64/libc-2.21.90.so
7fe09086d000-7fe090871000 r--p 0015f000 00:0f 2541268
/lib64/libc-2.21.90.so
7fe090871000-7fe090873000 rw-p 00163000 00:0f 2541268
/lib64/libc-2.21.90.so
7fe090873000-7fe090877000 rw-p 00000000 00:00 0
7fe090877000-7fe09088f000 r-xp 00000000 00:0f 2541131
/lib64/libpthread-2.21.90.so
7fe09088f000-7fe090a8e000 ---p 00018000 00:0f 2541131
/lib64/libpthread-2.21.90.so
7fe090a8e000-7fe090a8f000 r--p 00017000 00:0f 2541131
/lib64/libpthread-2.21.90.so
7fe090a8f000-7fe090a90000 rw-p 00018000 00:0f 2541131
/lib64/libpthread-2.21.90.so
7fe090a90000-7fe090a94000 rw-p 00000000 00:00 0
7fe090a94000-7fe090ab6000 r-xp 00000000 00:0f 2541267
/lib64/ld-2.21.90.so
7fe090ad2000-7fe090ad7000 rw-p 00000000 00:00 0
7fe090ad7000-7fe090aee000 r-xp 00000000 00:0f 72800
/lib64/libgcc_s.so.1
7fe090aee000-7fe090aef000 rw-p 00016000 00:0f 72800
/lib64/libgcc_s.so.1
7fe090aef000-7fe090af0000 rw-p 00000000 00:00 0
7fe090af0000-7fe090c7b000 r-xp 00000000 00:0f 3018239
/usr/lib64/gcc/x86_64-pc-linux-gnu/5.0.0/libstdc++.so.6.0.21
7fe090c7b000-7fe090c7c000 ---p 0018b000 00:0f 3018239
/usr/lib64/gcc/x86_64-pc-linux-gnu/5.0.0/libstdc++.so.6.0.21
7fe090c7c000-7fe090c86000 r--p 0018b000 00:0f 3018239
/usr/lib64/gcc/x86_64-pc-linux-gnu/5.0.0/libstdc++.so.6.0.21
7fe090c86000-7fe090c8a000 rw-p 00195000 00:0f 3018239
/usr/lib64/gcc/x86_64-pc-linux-gnu/5.0.0/libstdc++.so.6.0.21
7fe090c8a000-7fe090c8d000 rw-p 00000000 00:00 0
7fe090cb3000-7fe090cb5000 rw-p 00000000 00:00 0
7fe090cb5000-7fe090cb6000 r--p 00021000 00:0f 2541267
/lib64/ld-2.21.90.so
7fe090cb6000-7fe090cb7000 rw-p 00022000 00:0f 2541267
/lib64/ld-2.21.90.so
7fe090cb7000-7fe090cb8000 rw-p 00000000 00:00 0
7ffd96628000-7ffd96649000 rw-p 00000000 00:00 0 [stack]
7ffd967e4000-7ffd967e6000 r--p 00000000 00:00 0 [vvar]
7ffd967e6000-7ffd967e8000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]
--
Markus