This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: CVS 1.7.0 heap errors
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Thu, 19 Jul 2007 09:50:30 +0200
- Subject: Re: CVS 1.7.0 heap errors
- References: <Pine.CYG.4.58.0706060942220.2432@PC1163-8460-XP.flightsafety.com> <Pine.CYG.4.58.0706221208270.4400@PC1163-8460-XP.flightsafety.com> <20070627075842.GH7379@calimero.vinschen.de> <Pine.CYG.4.58.0706270916500.3924@PC1163-8460-XP.flightsafety.com> <20070627170744.GN7379@calimero.vinschen.de> <Pine.CYG.4.58.0707171447420.2512@PC1163-8460-XP.flightsafety.com> <20070718100457.GN20662@calimero.vinschen.de>
- Reply-to: cygwin at cygwin dot com
On Jul 18 12:04, Corinna Vinschen wrote:
> On Jul 17 14:54, Brian Ford wrote:
> > > > On Wed, 27 Jun 2007, Corinna Vinschen wrote:
> > > You could also try to eliminate any change from
> > > http://cygwin.com/ml/cygwin-cvs/2007-q1/msg00139.html which is not
> > > related to your problem, [...]
> >
> > You don't have any suggestions for how to best separate the patch into
> > pieces do you?
>
> Look into the ChangeLog for the patch. It can be divided into two
> different changes:
>
> - Changing the cygheap->shared_prefix handling.
> [...]
>
> - Changing the way the user privileges are set at process startup.
>
> Affects dcrt0.cc, sec_helper.cc and security.h.
>
> Stupidly glaring at this change, I'm wondering if this is the culprit.
> The change itself looks quite harmless. But the non-obvious result
> is that already very early in the process initialization functions from
> advapi32 are called. OTOH, Cygwin is load-time linked against advapi32.
> So that shouldn't have any negative effect. Hmm.
I found an actual bug in this patch. I moved the call to
set_cygwin_privileges (hProcToken); at process initialization to a point
at which hProcToken wasn't even initialized.
*hitting myself with a big stick*
Weird that it worked at all.
This *might* be the cause of the failing heap_init. The problem is that
the calls to AdjustTokenPrivileges in set_privilege fail and
debug_printf is called (too?) early in process initialization, which in
turn results in dynamically loading user32.dll or some other Windows
DLL. If this happens before the heap is initialized, there's a chance
that the Windows DLL reserves space which is needed for the heap.
What you could do to verify this: Apply the patch from
http://cygwin.com/ml/cygwin-cvs/2007-q3/msg00039.html
to Cygwin from right after the patch from
http://cygwin.com/ml/cygwin-cvs/2007-q1/msg00139.html
and try if the heap problem still occurs.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
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/