On Fri, Apr 1, 2011 at 11:31 PM, Magnus Hagander <mag...@hagander.net>wrote:
> On Fri, Apr 1, 2011 at 16:56, Rushabh Lathia <rushabh.lat...@gmail.com> > wrote: > > > > > > On Fri, Apr 1, 2011 at 8:23 PM, Rushabh Lathia <rushabh.lat...@gmail.com > > > > wrote: > >> > >> > >> On Fri, Apr 1, 2011 at 6:51 PM, Magnus Hagander <mag...@hagander.net> > >> wrote: > >>> > >>> On Fri, Apr 1, 2011 at 15:14, Rushabh Lathia <rushabh.lat...@gmail.com > > > >>> wrote: > >>> > Problem: > >>> > ======== > >>> > > >>> > On windows when we run 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. > >>> > >>> What about the cases where we directly call write_console()? Do we > >>> know we are good there, or should the check perhaps be made inside > >>> write_console() instead of in the caller? > >> > >> Hmm, yes. It make more sense to add check for CurrentMemoryContext in > >> write_console(). > >> > >> PFA patch for the same. > > > > Oops missed the attachment. > > > > Here it is .. > > Thanks, applied with the addition of a comment. > Thanks Magnus. regards, Rushabh Lathia EnterpriseDB, The Enterprise PostgreSQL company.