Problem:
========
On windows when we run edb-postgres.exe without any command line args, its
getting crash or its showing error into Application logs of Event Viewer.
Analysis:
==========
For any stderr we call the write_stderr() and write_stderr() calls the
write_console() for stderr. Now here write_console() using the palloc()
internally, which require the CurrentMemoryContext.
At the startup CurrentMemoryContext will be NULL, so palloc again calling
write_stderr(). So recursion has been started and its ending up with
exception.
Call stack for palloc() is:
main() -> check_root() -> write_stderr() -> write_console() ->
pgwin32_toUTF16() -> palloc()
Fix:
=====
Earlier we used to call vfprintf() for windows stderr, which is now
replaced with write_console().
So to avoid the exception now, I added condition for CurrentMemoryContext
into write_stderr().
PFA patch to fix the same.
Regards,
Rushabh Lathia
EnterpriseDB <http://www.enterprisedb.com/>, The Enterprise
PostgreSQL<http://www.enterprisedb.com/>
company.
Index: src/backend/utils/error/elog.c
===================================================================
RCS file: /repositories/postgreshome/cvs/pgsql/src/backend/utils/error/elog.c,v
retrieving revision 1.226
diff -c -p -r1.226 elog.c
*** src/backend/utils/error/elog.c 19 Aug 2010 22:55:01 -0000 1.226
--- src/backend/utils/error/elog.c 1 Apr 2011 14:08:38 -0000
*************** write_stderr(const char *fmt,...)
*** 2759,2766 ****
}
else
{
! /* Not running as service, write to stderr */
! write_console(errbuf, strlen(errbuf));
fflush(stderr);
}
#endif
--- 2759,2773 ----
}
else
{
! /*
! * To use the write_console we need memoryContext as its using palloc
! * internally. When we don't have CurrentMemoryContext directly throw
! * error at stderr.
! */
! if (CurrentMemoryContext)
! write_console(errbuf, strlen(errbuf));
! else
! vfprintf(stderr, fmt, ap);
fflush(stderr);
}
#endif
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers