edb-postgres.exe has encountered a problem on windows
Rushabh Lathia <rushabh.lathia@gmail.com>
From: Rushabh Lathia <rushabh.lathia@gmail.com>
To: pgsql-hackers@postgresql.org
Cc: Rushabh Lathia <rushabh.lathia@enterprisedb.com>, Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
Date: 2011-04-01T13:14:33Z
Lists: pgsql-hackers
Attachments
- win_crash_fix.patch (text/x-diff) patch
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.