[Bug libstdc++/62023] [4.10 regression] 30_threads/condition_variable_any/50862.cc FAILs

2014-08-05 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62023

Rainer Orth  changed:

   What|Removed |Added

   Target Milestone|--- |4.10.0


[Bug libstdc++/62023] [4.10 regression] 30_threads/condition_variable_any/50862.cc FAILs

2014-08-05 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62023

--- Comment #1 from Jonathan Wakely  ---
That exception comes from here in src/c++11/thread.cc

  void
  thread::_M_start_thread(__shared_base_type __b)
  {
if (!__gthread_active_p())
#if __EXCEPTIONS
  throw system_error(make_error_code(errc::operation_not_permitted),
 "Enable multithreading to use std::thread");

Which means the __gthread_active_p() function in libgcc/gthr-posix.h is
returning false (I think the "Not owner" part is a red herring, due to the
errc::operation_not_permitted enum having the wrong value on Solaris)


[Bug libstdc++/62023] [4.10 regression] 30_threads/condition_variable_any/50862.cc FAILs

2014-08-06 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62023

Rainer Orth  changed:

   What|Removed |Added

 CC||jason at gcc dot gnu.org

--- Comment #2 from Rainer Orth  ---
A reghunt revealed that this was caused by this patch:

2014-07-30  Jason Merrill  

PR lto/53808
PR c++/61659
* pt.c (push_template_decl_real): Set DECL_COMDAT on templates.
(check_explicit_specialization): Clear it on specializations.
* decl.c (duplicate_decls, start_decl): Likewise.
(grokmethod, grokfndecl): Set DECL_COMDAT on inlines.
* method.c (implicitly_declare_fn): Set DECL_COMDAT.  Determine
linkage after setting the appropriate flags.
* tree.c (decl_linkage): Don't check DECL_COMDAT.
* decl2.c (mark_needed): Mark clones.
(import_export_decl): Not here.

I've not yet checked what exactly is going wrong here.

  Rainer


[Bug libstdc++/62023] [4.10 regression] 30_threads/condition_variable_any/50862.cc FAILs

2014-08-06 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62023

--- Comment #3 from Jason Merrill  ---
(In reply to Jonathan Wakely from comment #1)
> Which means the __gthread_active_p() function in libgcc/gthr-posix.h is
> returning false

Looks like there's a Solaris-specific version of __gthread_active_p, but I
can't think why marking it as DECL_COMDAT would break things.  Let me know what
you find.