On Sat, Mar 14, 2009 at 12:38:09PM +0000, Neil Jerram wrote:
> Albert Chin <guile-de...@mlists.thewrittenword.com> writes:
> 
> > I've built guile-1.8.6 on HP-UX 11.23/IA and 11.31/IA:
> >   $ gtar zxf guile-1.8.6.tar.gz
> >   $ cd guile-1.8.6
> >   $ ./configure PTHREAD_CFLAGS="-mt" --disable-dependency-tracking
> >   ...
> >   $ gmake
> >   ...
> >   $ cd test-suite/standalone
> >   $ gmake check TESTS="test-num2integral test-conversion"
> >   ...
> >   ERROR: Stack overflow
> >   FAIL: test-num2integral
> >   ERROR: Stack overflow
> >   FAIL: test-conversion
> 
> A few questions:
> 
> 1. Do all of the standalone tests fail with a stack overflow, or just
> those two?

Unknown. Some of the tests fail to dlopen some modules:
  ERROR: In procedure dynamic-link:
  ERROR: file: "libguile-srfi-srfi-1-v-3", message: "can't open the module"
  FAIL: test-require-extension
  ...
  ERROR: In procedure dynamic-link:
  ERROR: file: "libtest-asmobs", message: "can't open the module"
  FAIL: test-asmobs

I haven't looked into why.

> 2. Can you send us your libguile/stack-limit-calibration.scm?

Attached.

> 3. Can you explain what the setting of PTHREAD_CFLAGS is for?

Because, without it, PTHREAD_CFLAGS is set to:
  s["PTHREAD_CFLAGS"]="-D_REENTRANT -mthreads"
which is incorrect.

-- 
albert chin (ch...@thewrittenword.com)
;; Stack limit calibration file.
;;
;; This file is automatically generated by Guile when it builds, in
;; order to set the stack limit to a value that reflects the stack
;; usage of the build platform (OS + compiler + compilation options),
;; specifically so that none of Guile's own tests (which are run by
;; `make check') fail because of a benign stack overflow condition.
;;
;; By a `benign' stack overflow condition, we mean one where the test
;; code is behaving correctly, but exceeds the configured stack limit
;; because the limit is set too low.  A non-benign stack overflow
;; condition would be if a piece of test code behaved significantly
;; differently on some platform to how it does normally, and as a
;; result consumed a lot more stack.  Although they seem pretty
;; unlikely, we would want to catch non-benign conditions like this,
;; and that is why we don't just do `(debug-set! stack 0)' when
;; running `make check'.
;;
;; Although the primary purpose of this file is to prevent `make
;; check' from failing without good reason, Guile developers and users
;; may also find the following information useful, when determining
;; what stack limit to configure for their own programs.

 (let (;; The stack high water mark measured when starting up the
       ;; standard Guile REPL on the current build platform.
       (top-repl-hwm-measured 28408)

       ;; The value of top-repl-hwm-measured that we get when building
       ;; Guile on an i686 PC GNU/Linux system, after configuring with
       ;; `./configure --enable-maintainer-mode --with-threads'.
       ;; (Hereafter referred to as the `canonical' build platform.)
       (top-repl-hwm-i686-pc-linux-gnu 9461)

       ;; Guile's default stack limit (i.e. the initial, C-coded value
       ;; of the 'stack debug option).  In the context of this file,
       ;; the important thing about this number is that we know that
       ;; it allows all of the `make check' tests to pass on the
       ;; canonical build platform.
       (default-stack-limit 20000)

       ;; Calibrated stack limit.  This is the default stack limit,
       ;; scaled by the factor between top-repl-hwm-i686-pc-linux-gnu
       ;; and top-repl-hwm-measured.
       (calibrated-stack-limit 60052))

   ;; Configure the calibrated stack limit.
   (debug-set! stack calibrated-stack-limit))

Reply via email to