ipa-icf::merge TLC

Martin Liška mliska@suse.cz
Wed Feb 25 18:41:00 GMT 2015


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



More information about the Gcc-patches mailing list