delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/06/11/02:42:28

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Authentication-Warning: atacama.four-d.de: mail set sender to <tpfaff AT gmx DOT net> using -f
Message-ID: <3EE6CF20.7070005@gmx.net>
Date: Wed, 11 Jun 2003 08:41:36 +0200
From: Thomas Pfaff <tpfaff AT gmx DOT net>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030529
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Rasmus Hahn <rassahah AT neofonie DOT de>
CC: cygwin <cygwin AT cygwin DOT com>
Subject: Re: Problem w/ c++,threads,static initializers
References: <20030607142449 DOT A4909 AT hamburg DOT neofonie DOT local> <3EE587F7 DOT 9090405 AT gmx DOT net> <20030611080702 DOT A1768 AT hamburg DOT neofonie DOT local>
In-Reply-To: <20030611080702.A1768@hamburg.neofonie.local>

Rasmus Hahn wrote:
> 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.
> 

If your program only segfaults in the debugger than the problem is a
harmless IsBadWritePtr which is used to check for an already initialized
mutex.
You can ignore this one. Set a breakpoint at main and continue.
To avoid it you can set the mutex to PTHREAD_MUTEX_INITIALIZER before
you call pthread_mutex_init.

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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019