This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Test script for finding the top of the stack



Please download the following package and run it on as many different
platforms as you can.

ftp://ph.mit.edu/pub/scwm/guile-stacktest.tar.gz

After untarring the packge, please run ./configure and then send the
contents of `results' to me. If you have sendmail installed and
working normally at your site, you should be able to just run
./results and it will mail me the relevant data.

I have already run tests for the following platform/compiler
combinations (but don't be shy about sending duplicates, especially if
you have glibc-2.1 or anything else that may change test results).

i686-pc-linux-gnulibc1 gcc
sparc-sun-solaris2.6 gcc
sparc-sun-sunos4.1.4 gcc
mips-sgi-irix6.3 gcc
i586-pc-linux-gnu gcc
sparc-sun-solaris2.5.1 gcc
hppa1.1-hp-hpux10.20 gcc
mips-sgi-irix6.2 cc
alpha-dec-osf3.2 gcc
alpha-dec-osf3.2 cc
hppa1.1-hp-hpux9.05 gcc
powerpc-ibm-aix4.1.4.0 gcc


Platforms I am particulalry interested in seeing results for include:

*-*-freebsd*
*-*-netbsd*
*-*-oepnbsd*
*-*-gnu-hurd
arm-*-*
m68k-*-*
*-*-sco*
*-*-nextstep*
mips-dec-ultrix
*-*-cygwin32
*-*-mingw32

Or anything you have that is archaic or weird.


The configure script in this package tests the following ways of
finding an approximation of the top of the stack (anything above
main()'s stack frame is taken as good enough):

* Glibc 2.1's __libc_stack_end

* Looking at where environ points (appears to be on the stack on most unixen)

* Looking at where environ points* (appears to be on the stack on most
unixen, but may be less reliable than the above if someone has
setenv()d)

* Walking a page at a time opposite the direction of stack growth like
Boehm GC's HEURISTIC2 (my test code is only very roughly based on it
though).

Suggestions for other possible ways to get the top of the stack are
welcome, even if they are more platform-specifc. Boehm GC _does_ have
some methods for doing this on Win32, OS/2 and DOS which are pretty
gross (e.g. using system calls w/ highly unpredicatable semantics or
actually slogging through the in-core or on-disk executable header) so
I have omitted those for now. People wanting to port Guile to such
systems have bigger things on their plates.

After a resonable period (a week or so) for examining the results, I
will figure out a way to prioritize the different ways to find the top
of the stack and write code for the long-awaited gh_init()/scm_init(),
or possibly send out another round of tests if there are notable
failures or anyone comes up with clever new tests.

 - Maciej