Greetings, and thank you so much for bringing up this report! You apparently have the first system I've run across which loads the shared libraries way up just beneath the stack.
> checking for shared library/C stack ceiling to heap... 0xb75eb000 This is the 'holy grail' we've been looking for for quite a while, as it allows a contiguous heap up to 2.7Gb on 32bit Linux, even using shared libraries. I'm separately working on a static compilation option which should produce the same result on 'generic Linux', which you apparently do not have, but you clearly will have the first opportunity to test big heap on 32bit, and avoid all the bugs I'll no doubt introduce in early static linking versions. It would be most helpful if you could describe in as much detail as possible your system configuration -- even the kernel patches which enable this behavior. I had heard that some flavor of redhat did this by default, but I don't yet know how. When I do, I'd like to upload a kernel-patch package into the Debian archive achieving the same, to extend this ability to Debian based users. If you have a support contract with Redhat and could give them a call requesting a minimal kernel-patch, which must be GPL'el by definition, that would be fantastic! As this is a new and as yet untested configuration which is not accessible to me, let me suggest a patch to try. Perhaps you can provide feedback and we can converge via email. Normally I'd test on my own system before suggesting anything. ============================================================================= Index: configure.in =================================================================== RCS file: /cvsroot/gcl/gcl/configure.in,v retrieving revision 1.190 diff -u -r1.190 configure.in --- configure.in 18 Jun 2005 22:09:26 -0000 1.190 +++ configure.in 15 Jul 2005 20:31:54 -0000 @@ -1355,7 +1355,7 @@ j=((unsigned long)$enable_maxpage <<$PAGEWIDTH) + $dbegin; j=$heap_ceiling && j>$heap_ceiling ? $heap_ceiling : j; j-=$dbegin; - for (i=1;i<=j;i<<=1); + for (i=1;i<<1 && i<=j;i<<=1); if (i>j) i>>=1; fprintf(fp,"%ld",i>>$PAGEWIDTH); fclose(fp); Index: configure =================================================================== RCS file: /cvsroot/gcl/gcl/configure,v retrieving revision 1.184 diff -u -r1.184 configure --- configure 18 Jun 2005 22:09:26 -0000 1.184 +++ configure 15 Jul 2005 20:31:55 -0000 @@ -4710,7 +4710,7 @@ j=((unsigned long)$enable_maxpage <<$PAGEWIDTH) + $dbegin; j=$heap_ceiling && j>$heap_ceiling ? $heap_ceiling : j; j-=$dbegin; - for (i=1;i<=j;i<<=1); + for (i=1;i<<1 && i<=j;i<<=1); if (i>j) i>>=1; fprintf(fp,"%ld",i>>$PAGEWIDTH); fclose(fp); ============================================================================= At first, this should limit the heap to 2Gb, even though you could go higher. I'll have to rework the constraints on heap size being a power of two separately. Take care, <[EMAIL PROTECTED]> writes: > Camm Maguire wrote: > > OK, I cannot reproduce with 524288, but can see how there could > > possibly be a problem here. Perhaps you could post your full > > configure log before the hang. Here is the program doing the test -- > > I need the values of the shell variables prefixed by $ especially: > > > > main() > > { > > char *b; > > unsigned long i,j; > > FILE *fp = fopen("conftest1","w"); > > j=((unsigned long)$enable_maxpage <<$PAGEWIDTH) + $dbegin; > > j=$heap_ceiling && j>$heap_ceiling ? $heap_ceiling : j; > > j-=$dbegin; > > for (i=1;i<=j;i<<=1); > > if (i>j) i>>=1; > > fprintf(fp,"%ld",i>>$PAGEWIDTH); > > fclose(fp); > > return 0; > > }],tmp_maxpage=`cat conftest1`,tmp_maxpage=0,tmp_maxpage=0) > > > OK, here is the complete output from the failed configure. I don't have the > config.log from that build anymore, but I can > recreate it if need be. > > ./configure --enable-maxpage=524288 > loading cache ./config.cache > checking host system type... i686-pc-linux-gnu > host=i686-pc-linux-gnu > enable_machine= > use=386-linux > checking for gcc... (cached) gcc > checking whether the C compiler (gcc ) works... yes > checking whether the C compiler (gcc ) is a cross-compiler... no > checking whether we are using GNU C... (cached) yes > checking whether gcc accepts -g... (cached) yes > checking how to run the C preprocessor... (cached) gcc -E > checking for gawk... (cached) gawk > checking system version (for dynamic loading)... checking for makeinfo... > (cached) makeinfo > Linux-2.4.21-4.ELsmp > checking for unistd.h... (cached) yes > checking for sysconf in -lc... (cached) yes > checking for _SC_CLK_TCK... 100 > checking for gmp.h... (cached) yes > checking for __gmpz_init in -lgmp... (cached) yes > checking for external gmp version... checking for leading underscore in > object symbols... no > checking for GNU ld option -Map... yes > checking for size of gmp limbs... 4 > checking _SHORT_LIMB... no > checking _LONG_LONG_LIMB... no > checking for X... (cached) no > checking for main in -lXmu... (cached) no > checking for main in -lXt... (cached) no > checking for main in -lXext... (cached) no > checking for main in -lXaw... (cached) no > checking for main in -lX11... (cached) no > missing x libraries -- cannot compile xgcl > checking for bfd.h... (cached) yes > checking for bfd_init in -lbfd... (cached) yes > checking if need to define CONST for bfd... no > checking for useable bfd_boolean... yes > checking size of long... (cached) 4 > checking size of int... (cached) 4 > checking size of short... (cached) 2 > checking size of char... (cached) 1 > checking for number of bits in char... 8 > checking for endian.h... (cached) yes > checking endianness... little > checking for sbrk... yes > checking for randomized sbrk... no > checking for required object alignment... 8 > checking for C extension variable alignment... __attribute__ ((aligned (8))) > checking TYPE_BITS macro... 0xff09 > checking sizeof struct contblock... 8 > checking DBEGIN... 0x8000000 > checking for pagewidth... 12 > checking CSTACK_ADDRESS... 0xbfffffff > checking NEG_CSTACK_ADDRESS... yes > checking finding CSTACK_ALIGNMENT... 16 > checking CSTACK_DIRECTION... -1 > checking finding default linker script... got it > checking trying to lower heap start... checking linker script... done > checking revised DBEGIN... 0x0 > checking for shared library/C stack ceiling to heap... 0xb75eb000 > checking for maxpage revision... > Thanks in advance, > David Hardin > _______________________________________________ > Gcl-devel mailing list > Gcl-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/gcl-devel -- Camm Maguire [EMAIL PROTECTED] ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah _______________________________________________ Gcl-devel mailing list Gcl-devel@gnu.org http://lists.gnu.org/mailman/listinfo/gcl-devel