[Bug libstdc++/47354] [4.3/4.4/4.5/4.6 Regression] bitmap_allocator free_list::_M_get never locks mutex

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jan 19 03:31:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47354

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |4.1.2
            Summary|bitmap_allocator            |[4.3/4.4/4.5/4.6
                   |free_list::_M_get never     |Regression]
                   |locks mutex                 |bitmap_allocator
                   |                            |free_list::_M_get never
                   |                            |locks mutex

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-01-19 01:48:54 UTC ---
this is a regression in all active branches

rather than modifying the source to use an error-checking mutex, valgrind's drd
tool can be used to show it was ok in 4.1 and is wrong in gcc 4.2+

==6026== drd, a thread error detector
==6026== Copyright (C) 2006-2010, and GNU GPL'd, by Bart Van Assche.
==6026== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info
==6026== Command: ./a.out
==6026== 
==6026== The object at address 0x4f0f780 is not a mutex.
==6026==    at 0x4A11932: pthread_mutex_unlock (drd_pthread_intercepts.c:640)
==6026==    by 0x4C6F8BD: __gnu_cxx::free_list::_M_get(unsigned long)
(gthr-default.h:790)
==6026==    by 0x4021E0: __gnu_cxx::bitmap_allocator<int>::_S_refill_pool() (in
/dev/shm/a.out)
==6026==    by 0x401A38:
__gnu_cxx::bitmap_allocator<int>::_M_allocate_single_object() (in
/dev/shm/a.out)
==6026==    by 0x40178E: __gnu_cxx::bitmap_allocator<int>::allocate(unsigned
long) (in /dev/shm/a.out)
==6026==    by 0x400CDD: main (in /dev/shm/a.out)



More information about the Gcc-bugs mailing list