Bug 23053 - Fix -D_GLIBCXX_DEBUG gdb-add-index regression
Summary: Fix -D_GLIBCXX_DEBUG gdb-add-index regression
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: gdb (show other bugs)
Version: 8.1
: P2 normal
Target Milestone: 8.1.1
Assignee: Jan Kratochvil
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-04-12 17:53 UTC by Jan Kratochvil
Modified: 2018-04-12 20:39 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Kratochvil 2018-04-12 17:53:57 UTC
[patch+8.1] Fix -D_GLIBCXX_DEBUG gdb-add-index regression
https://sourceware.org/ml/gdb-patches/2018-02/msg00057.html
Message-ID: <20180204193754.GA29011@host1.jankratochvil.net>

PASS: gdb-8.0
FAIL: gdb-8.1
Comment 1 cvs-commit@gcc.gnu.org 2018-04-12 20:33:42 UTC
The master branch has been updated by Jan Kratochvil <jkratoch@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b4be9bfdabb57f40656e72a50a8466af4f7bd37d

commit b4be9bfdabb57f40656e72a50a8466af4f7bd37d
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Apr 12 22:31:39 2018 +0200

    Fix -D_GLIBCXX_DEBUG gdb-add-index regression
    
    Fedora Rawhide started to use -D_GLIBCXX_DEBUG which made gdb-add-index
    failing:
    	gdb: Out-of-bounds vector access while running gdb-add-index
    	https://bugzilla.redhat.com/show_bug.cgi?id=1540559
    
    /usr/include/c++/7/debug/safe_iterator.h:270:
    Error: attempt to dereference a past-the-end iterator.
    Objects involved in the operation:
        iterator "this" @ 0x0x7fffffffcb90 {
          type = __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<unsigned char*, std::__cxx1998::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > >, std::__debug::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > > (mutable iterator);
          state = past-the-end;
          references sequence with type 'std::__debug::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > >' @ 0x0x7fffffffcc50
        }
    
    /usr/include/c++/7/debug/vector:417:
    Error: attempt to subscript container with out-of-bounds index 556, but
    container only holds 556 elements.
    Objects involved in the operation:
        sequence "this" @ 0x0x2e87af8 {
          type = std::__debug::vector<partial_symbol*, std::allocator<partial_symbol*> >;
        }
    
    The two -D_GLIBCXX_DEBUG regressions were made by:
    
    commit bc8f2430e08cc2a520db49a42686e0529be4a3bc
    Author: Jan Kratochvil <jan.kratochvil@redhat.com>
    Date:   Mon Jun 12 16:29:53 2017 +0100
        Code cleanup: C++ify .gdb_index producer
    
    commit af5bf4ada48ff65b6658be1fab8f9c8f8ab5f319
    Author: Simon Marchi <simon.marchi@ericsson.com>
    Date:   Sat Oct 14 08:06:29 2017 -0400
        Replace psymbol_allocation_list with std::vector
    
    gdb/ChangeLog
    2018-04-12  Jan Kratochvil  <jan.kratochvil@redhat.com>
    
    	PR gdb/23053
    	* dwarf-index-write.c (data_buf::grow) (write_one_signatured_type)
    	(recursively_write_psymbols) (debug_names::recursively_write_psymbols)
    	(debug_names::write_one_signatured_type): Fix -D_GLIBCXX_DEBUG
    	regression.
Comment 2 cvs-commit@gcc.gnu.org 2018-04-12 20:38:28 UTC
The gdb-8.1-branch branch has been updated by Jan Kratochvil <jkratoch@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=55404da3795df1b5eff514ce9d0377b6a78e5904

commit 55404da3795df1b5eff514ce9d0377b6a78e5904
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Apr 12 22:31:39 2018 +0200

    Fix -D_GLIBCXX_DEBUG gdb-add-index regression
    
    Fedora Rawhide started to use -D_GLIBCXX_DEBUG which made gdb-add-index
    failing:
    	gdb: Out-of-bounds vector access while running gdb-add-index
    	https://bugzilla.redhat.com/show_bug.cgi?id=1540559
    
    /usr/include/c++/7/debug/safe_iterator.h:270:
    Error: attempt to dereference a past-the-end iterator.
    Objects involved in the operation:
        iterator "this" @ 0x0x7fffffffcb90 {
          type = __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<unsigned char*, std::__cxx1998::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > >, std::__debug::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > > (mutable iterator);
          state = past-the-end;
          references sequence with type 'std::__debug::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > >' @ 0x0x7fffffffcc50
        }
    
    /usr/include/c++/7/debug/vector:417:
    Error: attempt to subscript container with out-of-bounds index 556, but
    container only holds 556 elements.
    Objects involved in the operation:
        sequence "this" @ 0x0x2e87af8 {
          type = std::__debug::vector<partial_symbol*, std::allocator<partial_symbol*> >;
        }
    
    The two -D_GLIBCXX_DEBUG regressions were made by:
    
    commit bc8f2430e08cc2a520db49a42686e0529be4a3bc
    Author: Jan Kratochvil <jan.kratochvil@redhat.com>
    Date:   Mon Jun 12 16:29:53 2017 +0100
        Code cleanup: C++ify .gdb_index producer
    
    commit af5bf4ada48ff65b6658be1fab8f9c8f8ab5f319
    Author: Simon Marchi <simon.marchi@ericsson.com>
    Date:   Sat Oct 14 08:06:29 2017 -0400
        Replace psymbol_allocation_list with std::vector
    
    gdb/ChangeLog
    2018-04-12  Jan Kratochvil  <jan.kratochvil@redhat.com>
    
    	PR gdb/23053
    	* dwarf2read.c (data_buf::grow) (write_one_signatured_type)
    	(recursively_write_psymbols) (debug_names::recursively_write_psymbols)
    	(debug_names::write_one_signatured_type): Fix -D_GLIBCXX_DEBUG
    	regression.
Comment 3 Jan Kratochvil 2018-04-12 20:39:27 UTC
Fixed.