Subject: Re: Problem w/ c++,threads,static initializers
From: Rasmus Hahn <[email-masked]>
To: Thomas Pfaff <[email-masked]>
Cc: cygwin <[email-masked]>
Date: Wed, 11 Jun 2003 08:07:03 +0200

On Tue, Jun 10, 2003 at 09:25:43AM +0200, Thomas Pfaff wrote:
> Rasmus Hahn wrote:
> 
> > Hello,
> > 
> > i am using cygwin on my Windows2000 and my c++ program segfaults
> > when using pthread-mutexes. In particular i am using a lot of
> > mutexes from within constructors of static objects. These constructors
> > are called at a very early time of execution of the program and do
> > calls of pthread_mutex_init, pthread_mutex_lock and such. Taken a glance
> > at the cygwin source i noticed that the static initializers (constructors
> > of static objects) are run _before_ some user_data->threadinterface is
> > initialized (look at dll_crt0_1 () in winsup/cygwin/dcrt0.cc). Isnt it 
> > possible to use thread-functions from static initializers?
> > BTW i am using cygwin snapshot 20030602 compiled with gcc-3.3 since the
> > out-of-the-box gcc from the cygwin-package is a prerelease and definitely
> > contains bugs that do not allow it to compile my code.
> > 
> 
> Could you provide a test case ?

  No, i cannot. As it turned out the initializers are run at least but i
  dont know if before or after cygwin-initialization. Only when run with
  gdb the program behaves differently (crash in constructors). That makes
  reproduction & location of errors a little harder.

> 
> I have done some tests and my constructors are run from
> do_global_ctors if they are in the executable and from
> dll_list::init if they are in a dll.
> In both cases they are run when the cygwin dll is completely initialized.
> 
> Thomas
> 
> 

-- 

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/