From: Tom Lane Date: Sun, 8 Oct 2006 17:15:34 +0000 (+0000) Subject: On Windows, we know the backend stack size limit because we have to X-Git-Tag: REL9_0_0~6865 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=c7611f99d63e316597b23720d5be354eb7438c72;p=pg-rex%2Fsyncrep.git On Windows, we know the backend stack size limit because we have to specify it explicitly in backend/Makefile. Arrange for this value to be known by get_stack_depth_rlimit() too. Per suggestion from Magnus. --- diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 4e55fe9bfd..820dfd5965 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -1,5 +1,5 @@ # -*-makefile-*- -# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.231 2006/10/03 22:18:22 tgl Exp $ +# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.232 2006/10/08 17:15:33 tgl Exp $ #------------------------------------------------------------------------------ # All PostgreSQL makefiles include this file and use the variables it sets, @@ -311,6 +311,9 @@ HAVE_POSIX_SIGNALS= @HAVE_POSIX_SIGNALS@ # systems now. May be applicable to other systems to? ELF_SYSTEM= @ELF_SYS@ +# Backend stack size limit has to be hard-wired on Windows (it's in bytes) +WIN32_STACK_RLIMIT=4194304 + # Pull in platform-specific magic include $(top_builddir)/src/Makefile.port diff --git a/src/backend/Makefile b/src/backend/Makefile index 3f3fe248d1..9329db0af3 100644 --- a/src/backend/Makefile +++ b/src/backend/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $PostgreSQL: pgsql/src/backend/Makefile,v 1.119 2006/09/09 03:15:40 tgl Exp $ +# $PostgreSQL: pgsql/src/backend/Makefile,v 1.120 2006/10/08 17:15:33 tgl Exp $ # #------------------------------------------------------------------------- @@ -52,7 +52,7 @@ postgres: $(OBJS) postgres.def libpostgres.a $(DLLTOOL) --dllname $@$(X) --output-exp $@.exp --def postgres.def $(CC) $(CFLAGS) $(LDFLAGS) -o $@$(X) -Wl,--base-file,$@.base $@.exp $(OBJS) $(LIBS) $(DLLTOOL) --dllname $@$(X) --base-file $@.base --output-exp $@.exp --def postgres.def - $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--stack,4194304 -o $@$(X) $@.exp $(OBJS) $(LIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--stack,$(WIN32_STACK_RLIMIT) -o $@$(X) $@.exp $(OBJS) $(LIBS) rm -f $@.exp $@.base postgres.def: $(OBJS) @@ -69,7 +69,7 @@ postgres: $(OBJS) postgres.def libpostgres.a $(WIN32RES) $(DLLTOOL) --dllname $@$(X) --output-exp $@.exp --def postgres.def $(CC) $(CFLAGS) $(LDFLAGS) -o $@$(X) -Wl,--base-file,$@.base $@.exp $(OBJS) $(WIN32RES) $(LIBS) $(DLLTOOL) --dllname $@$(X) --base-file $@.base --output-exp $@.exp --def postgres.def - $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--stack=4194304 -o $@$(X) $@.exp $(OBJS) $(WIN32RES) $(LIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--stack=$(WIN32_STACK_RLIMIT) -o $@$(X) $@.exp $(OBJS) $(WIN32RES) $(LIBS) rm -f $@.exp $@.base postgres.def: $(OBJS) diff --git a/src/backend/tcop/Makefile b/src/backend/tcop/Makefile index e90918716d..200cbad1b2 100644 --- a/src/backend/tcop/Makefile +++ b/src/backend/tcop/Makefile @@ -4,7 +4,7 @@ # Makefile for tcop # # IDENTIFICATION -# $PostgreSQL: pgsql/src/backend/tcop/Makefile,v 1.25 2003/11/29 19:51:57 pgsql Exp $ +# $PostgreSQL: pgsql/src/backend/tcop/Makefile,v 1.26 2006/10/08 17:15:34 tgl Exp $ # #------------------------------------------------------------------------- @@ -14,6 +14,8 @@ include $(top_builddir)/src/Makefile.global OBJS= dest.o fastpath.o postgres.o pquery.o utility.o +override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT) + all: SUBSYS.o SUBSYS.o: $(OBJS) diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index e22445b474..369b40d205 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.513 2006/10/07 20:16:57 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.514 2006/10/08 17:15:34 tgl Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -3678,8 +3678,13 @@ get_stack_depth_rlimit(void) } return val; #else /* no getrlimit */ +#if defined(WIN32) || defined(__CYGWIN__) + /* On Windows we set the backend stack size in src/backend/Makefile */ + return WIN32_STACK_RLIMIT; +#else /* not windows ... give up */ return -1; #endif +#endif }