unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: Andy Wingo <wingo@pobox.com>
Cc: Neil Jerram <neil@ossau.uklinux.net>, guile-devel <guile-devel@gnu.org>
Subject: Re: autocompilation support in master
Date: Wed, 10 Jun 2009 00:29:24 -0400	[thread overview]
Message-ID: <20090610042924.GB1796@fibril.netris.org> (raw)
In-Reply-To: <20090610041117.GA1796@fibril.netris.org>

Apologies for sending so many emails in so short a time, but I've put
together the final pieces of this puzzle.

GNU Make 3.81, the version in Debian lenny, sets the stack soft limit
to match the hard limit "so that alloca does not fail".  On my system,
the default stack hard limit is infinite, so Make sets the soft limit
to be infinite as well.

When both the hard and soft limits are infinite, Guile's
init_stack_limit() function in debug.c leaves the internal stack limit
at the initial value of 40000 words, i.e. 160 kilobytes, as set in
eval.c.

On my system, I need somewhere between 384-512 kilobytes to compile
the ecmascript code.  512k succeeds, and 384k fails.

That's all.  Time for sleep now :)

    Mark


> I wrote:
> > > (show-file-name #t stack 40000 debug backtrace depth 100 maxdepth 1000 frames 3 indent 10 width 79 procnames cheap)
> > 
> > Notice the "stack 40000", which means that the stack limit (as far as
> > guile is concerned) is only 40000 words, i.e. 160 kilobytes.  Other
> > times, I see much larger numbers there, which are close to the actual
> > stack resource limit (as set by setrlimit), and in those cases the
> > stack doesn't overflow.
> 
> It turns out that 40000 is the initial value of guile's internal stack
> limit, as part of the definition of scm_debug_opts[] in eval.c.  That
> value is supposed to be overwritten by init_stack_limit() in debug.c,
> but it will be left unchanged if getrlimit() fails, or if both the
> hard and soft stack limits are set to infinity.
> 
> I suggest increasing the initial value of 40000 to something more
> reasonable, perhaps 128000 words (which is approximately what my
> system needs to successfully compile the ecmascript code), and
> printing an error message if getrlimit fails.
> 
>      Mark
> 




  reply	other threads:[~2009-06-10  4:29 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-03 22:07 autocompilation support in master Andy Wingo
2009-06-05 22:12 ` Neil Jerram
2009-06-05 22:15   ` Neil Jerram
2009-06-08 23:24   ` Neil Jerram
2009-06-09  0:52     ` Mark H Weaver
2009-06-09  7:27       ` Andy Wingo
2009-06-09 18:47         ` Mark H Weaver
2009-06-09 21:39           ` Andy Wingo
2009-06-10  2:39             ` Mark H Weaver
2009-06-11 21:50             ` Neil Jerram
2009-06-10  3:39           ` Mark H Weaver
2009-06-10  4:11             ` Mark H Weaver
2009-06-10  4:29               ` Mark H Weaver [this message]
2009-06-11 22:23                 ` Neil Jerram
2009-06-09 10:31       ` dsmich
2009-06-06 13:19 ` Ludovic Courtès
2009-06-06 23:43   ` Andy Wingo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090610042924.GB1796@fibril.netris.org \
    --to=mhw@netris.org \
    --cc=guile-devel@gnu.org \
    --cc=neil@ossau.uklinux.net \
    --cc=wingo@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).