On 2015.02.25 at 19:32 +0100, Martin Liška wrote: > 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)
I'm just using the defaults: GYP_DEFINES="ffmpeg_branding=Chrome use_kerberos=0 fastbuild=1 remove_webcore_debug_symbols=1 use_pulseaudio=0 use_gnome_keyring=0 use_linux_link_gnome_keyring=0 disable_nacl=1 clang=0 host_clang=0 linux_use_bundled_binutils=0 linux_use_bundled_gold=0 google_api_key=AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc google_default_client_id=329227923882.apps.googleusercontent.com google_default_client_secret=vgKG0NNv7GoDpbtoFNLxCUXu werror=" gclient sync and then "ninja chrome" to build. Program received signal SIGABRT, Aborted. 0x00007ffff78886f8 in raise () from /lib/libc.so.6 (gdb) bt #0 0x00007ffff78886f8 in raise () from /lib/libc.so.6 #1 0x00007ffff7889bbd in abort () from /lib/libc.so.6 #2 0x00007ffff78c7663 in __libc_message () from /lib/libc.so.6 #3 0x00007ffff78ccf1d in malloc_printerr () from /lib/libc.so.6 #4 0x00007ffff78cd74b in _int_free () from /lib/libc.so.6 #5 0x000000000045f5c1 in google::protobuf::DescriptorBuilder::BuildFieldOrExtension(google::protobuf::FieldDescriptorProto const&, google::protobuf::Descriptor const*, googl e::protobuf::FieldDescriptor*, bool) () #6 0x0000000000462c8f in google::protobuf::DescriptorBuilder::BuildMessage(google::protobuf::DescriptorProto const&, google::protobuf::Descriptor const*, google::protobuf::D escriptor*) () #7 0x0000000000462cfc in google::protobuf::DescriptorBuilder::BuildMessage(google::protobuf::DescriptorProto const&, google::protobuf::Descriptor const*, google::protobuf::D escriptor*) () #8 0x000000000046683c in google::protobuf::DescriptorBuilder::BuildFile(google::protobuf::FileDescriptorProto const&) () #9 0x00000000004677b5 in google::protobuf::DescriptorPool::BuildFileFromDatabase(google::protobuf::FileDescriptorProto const&) const () #10 0x00000000004679a3 in google::protobuf::DescriptorPool::TryFindFileInFallbackDatabase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > cons t&) const () #11 0x0000000000467af5 in google::protobuf::DescriptorPool::FindFileByName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const () #12 0x0000000000479d69 in google::protobuf::protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() () #13 0x00000000004aa038 in google::protobuf::GoogleOnceInitImpl(long*, google::protobuf::Closure*) () #14 0x00000000004aa08f in google::protobuf::GoogleOnceInit(long*, void (*)()) () #15 0x000000000046b1f7 in google::protobuf::FileOptions::GetMetadata() const () #16 0x00000000004a4812 in google::protobuf::compiler::Parser::ParseOption(google::protobuf::Message*, google::protobuf::compiler::Parser::LocationRecorder const&, google::pro tobuf::compiler::Parser::OptionStyle) () #17 0x00000000004a86af in google::protobuf::compiler::Parser::ParseTopLevelStatement(google::protobuf::FileDescriptorProto*, google::protobuf::compiler::Parser::LocationRecor der const&) () #18 0x00000000004a88ee in google::protobuf::compiler::Parser::Parse(google::protobuf::io::Tokenizer*, google::protobuf::FileDescriptorProto*) () #19 0x00000000004a0807 in google::protobuf::compiler::SourceTreeDescriptorDatabase::FindFileByName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<cha r> > const&, google::protobuf::FileDescriptorProto*) () #20 0x00000000004678dd in google::protobuf::DescriptorPool::TryFindFileInFallbackDatabase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > cons t&) const () #21 0x0000000000467af5 in google::protobuf::DescriptorPool::FindFileByName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const () #22 0x000000000040c906 in google::protobuf::compiler::CommandLineInterface::Run(int, char const* const*) () #23 0x0000000000403131 in main () I have tried to add -fno-ipa-icf when compiling various object files, whose symbols are in the backtrace, but without success thus far. -- Markus