On Mon, Mar 23, 2009 at 10:36:10AM +0000, Debian Bug Tracking System wrote:
> Processing commands for cont...@bugs.debian.org:
> 
> > clone 520713 -1
> Bug#520713: init script start hangs
> Bug 520713 cloned as bug 520889.
> 
> > reassign -1 libstdc++6
> Bug#520889: init script start hangs
> Bug reassigned from package `schroot' to `libstdc++6'.
> 
> > retitle -1 std::tr1::shared_ptr is broken on alpha unless code is compiled 
> > with -pthread
> Bug#520889: init script start hangs
> Changed Bug title to `std::tr1::shared_ptr is broken on alpha unless code is 
> compiled with -pthread' from `init script start hangs'.

Hi Debian GCC people,

I cloned and reassigned this to you because while I worked around this
bug in schroot, I do feel that this is fundamentally an issue in
libstdc++.

It appears from the bug investigation that the std::tr1::shared_ptr
type is using a pthread mutex for locking (which is using futexes
on the kernel side).  I'm surprised about this because I thought it
would just be using atomic increment/decrement (unless this is an
alpha-specific implementation detail), but this is not in itself
a problem.

What did surprise me is that
- my program is single threaded; it does not directly use any pthread-
  related stuff, just types from the ISO C++ Standard, and its TR1
  addendum.
- I did therefore not expect there would be a requirement to compile
  with -pthread in order to get a functional program.
- On all architectures I'm aware of other than alpha, the code works
  correctly.
- On alpha it crashes with a failed libc/libstdc++ assertion during
  object construction (where I am creating a new type instance which
  is returned contained within a shared_ptr).  The stack trace showed
  it failing in my object constructor called from my clone() method
  which returns a shared_ptr (the actual ctor is private), but the
  pthread failure subsequently points the blame at shared_ptr, since
  I'm not using any pthread stuff myself.
- One of the traces attached to the bug report shows a failure
  inside a Boost header; it's possible that it's an interaction
  between the boost and libstdc++ headers, but I can't be sure of
  that.

I have Cc'd weasel, who originally found this bug on alpha.
I don't have any alpha hardware myself, so you would probably need
to ask weasel or one of the alpha porters if you need any alpha-
specific expertise.


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.


-- 
To UNSUBSCRIBE, email to debian-gcc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to