Thread
-
Re: postgres.exe has encountered a problem on windows
Rushabh Lathia <rushabh.lathia@gmail.com> — 2011-04-01T14:53:08Z
On Fri, Apr 1, 2011 at 6:51 PM, Magnus Hagander <magnus@hagander.net> wrote: > On Fri, Apr 1, 2011 at 15:14, Rushabh Lathia <rushabh.lathia@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. Regards, Rushabh Lathia EnterpriseDB, The Enterprise PostgreSQL company.
-
Re: postgres.exe has encountered a problem on windows
Rushabh Lathia <rushabh.lathia@gmail.com> — 2011-04-01T14:56:16Z
On Fri, Apr 1, 2011 at 8:23 PM, Rushabh Lathia <rushabh.lathia@gmail.com>wrote: > > > On Fri, Apr 1, 2011 at 6:51 PM, Magnus Hagander <magnus@hagander.net>wrote: > >> On Fri, Apr 1, 2011 at 15:14, Rushabh Lathia <rushabh.lathia@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 .. > > > Regards, > Rushabh Lathia > EnterpriseDB, The Enterprise PostgreSQL company. >
-
Re: postgres.exe has encountered a problem on windows
Magnus Hagander <magnus@hagander.net> — 2011-04-01T18:01:37Z
On Fri, Apr 1, 2011 at 16:56, Rushabh Lathia <rushabh.lathia@gmail.com> wrote: > > > On Fri, Apr 1, 2011 at 8:23 PM, Rushabh Lathia <rushabh.lathia@gmail.com> > wrote: >> >> >> On Fri, Apr 1, 2011 at 6:51 PM, Magnus Hagander <magnus@hagander.net> >> wrote: >>> >>> On Fri, Apr 1, 2011 at 15:14, Rushabh Lathia <rushabh.lathia@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. -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/
-
Re: postgres.exe has encountered a problem on windows
Rushabh Lathia <rushabh.lathia@gmail.com> — 2011-04-02T05:53:27Z
On Fri, Apr 1, 2011 at 11:31 PM, Magnus Hagander <magnus@hagander.net>wrote: > On Fri, Apr 1, 2011 at 16:56, Rushabh Lathia <rushabh.lathia@gmail.com> > wrote: > > > > > > On Fri, Apr 1, 2011 at 8:23 PM, Rushabh Lathia <rushabh.lathia@gmail.com > > > > wrote: > >> > >> > >> On Fri, Apr 1, 2011 at 6:51 PM, Magnus Hagander <magnus@hagander.net> > >> wrote: > >>> > >>> On Fri, Apr 1, 2011 at 15:14, Rushabh Lathia <rushabh.lathia@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.