https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67791

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Crash using std::thread and |[8/9/10/11 Regression]
                   |iostream with dynamic       |Crash using std::thread and
                   |loading of a shared library |iostream with dynamic
                   |                            |loading of a shared library
      Known to work|                            |4.9.4
           Assignee|unassigned at gcc dot gnu.org      |redi at gcc dot gnu.org
             Status|NEW                         |ASSIGNED
      Known to fail|                            |10.2.0, 11.0, 5.1.0, 8.4.0,
                   |                            |9.3.0
   Target Milestone|---                         |8.5

--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #7)
> (In reply to nexyon from comment #4)
> > In any case std::thread should not
> > crash I guess, so just to fix that it would be necessary to check whether
> > the standard library was inizialized without threads.
> 
> We used to check for the pthread_create weak symbol, and throw an exception
> instead of crashing. Since the fix for PR libstdc++/61841 we don't check it,
> and crash instead of throwing. That should be fixed.

Marking as a regression, because GCC 4.9 printed this error instead of
crashing:

terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted
Aborted (core dumped)

That's better than segfaulting with no explanation.

I incorrectly assumed that the use of &pthread_create added for PR 61841 would
make checking __gthread_active_p unnecessary. As the examples here show, that's
not true. The program calls __gthread_active_p() before main() runs, and at
that time libpthread.so is not loaded. When libpthread.so is loaded later, it's
too late for __gthread_active_p to notice.
  • [Bug libstdc++/67791] [8/9/10/1... redi at gcc dot gnu.org via Gcc-bugs

Reply via email to