This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: ipa-icf::merge TLC
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Markus Trippelsdorf <markus at trippelsdorf dot de>
- Cc: Jan Hubicka <hubicka at ucw dot cz>, gcc-patches at gcc dot gnu dot org, mliska at suse dot cz, jakub at redhat dot com
- Date: Wed, 25 Feb 2015 18:15:32 +0100
- Subject: Re: ipa-icf::merge TLC
- Authentication-results: sourceware.org; auth=none
- References: <20150225083810 dot GA86854 at kam dot mff dot cuni dot cz> <20150225130102 dot GC342 at x4>
> 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
>
> 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