X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Mon, 30 Aug 2010 16:45:44 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: Uninitialized variable usage in cygthread? Message-ID: <20100830144544.GO6726@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <4C7BBFA1 DOT 1020506 AT sidefx DOT com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <4C7BBFA1.1020506@sidefx.com> User-Agent: Mutt/1.5.20 (2009-06-14) Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On Aug 30 10:26, Edward Lam wrote: > Hi, > > In looking at slowdown problem on x64 systems by Sagi Ben-Akiva, I > found some puzzling code that perhaps someone could enlighten me on. > I must be reading it wrong. > > Here's the code path that I'm tracing using cygwin-src-20100829.tar.bz2: > > - In dcrt0.cc, if dynamically_loaded is true, then we call sigproc_init(). > > - In sigproc.cc, sigproc_init() creates a new thread: > hwait_sig = new cygthread (wait_sig, 0, cygself, "sig"); > > - This calls the cygthread constructor for LPTHREAD_START_ROUTINE. > (Actually, this doesn't really matter because the constructor for > LPVOID_START_ROUTINE looks like it has the same problem.) > > - The cygthread constructor calls create(). But prior to this, the > following class members are initialized: > __name, func, arglen, arg, notify_detached > > - The following class members are NOT initialized (assuming that the > macro DEBUGGING is NOT set): > inuse, id, h, ev, thread_sync, stack_ptr, is_freerange > > - Ok, now the cygthread constructor calls cygthread::create() > > - In cygthread.cc, cygthread::create() immediately checks the value > of the variable "h". But as mentioned previously, this is a variable > that has not been initialized yet. > > > What am I missing? cygthread::operator new(size_t) Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple