Thread

  1. 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.
    
  2. 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.
    >
    
  3. 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/
    
    
  4. 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.