RE: [bug fix] Produce a crash dump before main() on Windows
От | Tsunakawa, Takayuki |
---|---|
Тема | RE: [bug fix] Produce a crash dump before main() on Windows |
Дата | |
Msg-id | 0A3221C70F24FB45833433255569204D1F8D6B1B@G01JPEXMBYT05 обсуждение исходный текст |
Ответ на | Re: [bug fix] Produce a crash dump before main() on Windows (Craig Ringer <craig@2ndquadrant.com>) |
Ответы |
RE: [bug fix] Produce a crash dump before main() on Windows
Re: [bug fix] Produce a crash dump before main() on Windows Re: [bug fix] Produce a crash dump before main() on Windows |
Список | pgsql-hackers |
From: Craig Ringer [mailto:craig@2ndquadrant.com] > The patch proposed here means that early crashes will invoke WER. If we're > going to allow WER we should probably just do so unconditionally. > > I'd be in favour of leaving WER on when we find out we're in a noninteractive > service too, but that'd be a separate patch for pg11+ only. As for PG11+, I agree that we want to always leave WER on. That is, call SetErrorMode(SEM_FAILCRITICALERRORS) but not specifySEM_NOGPFAULTERRORBOX. The problem with the current specification of PostgreSQL is that the user can only get crashdumps in a fixed folder $PGDATA\crashdumps. That location is bad because the crash dumps will be backed up togetherwith the database cluster without the user noticing it. What's worse, the crash dumps are large. With WER, theuser can control the location and size of crash dumps. > I suggest changing this to a command line flag or environment variable test > that suppresses Pg's default disabling of WER. A GUC probably doesn't make > sense; it's too niche, and too early. As for the past major releases, it's burdensome for the user to have to specify a new flag or an environment variable whenhe has to get crash dumps to investigate a rare crash before main(). It's not necessary to disable WER for crashes aftermain() is called, because PG installs an exception handler at the beginning of main(), which works fine. So can wego with the current patch? Another idea to add to the current patch is to move the call to SetErrorMode() to the below function, which is called firstin main(). How about this? void pgwin32_install_crashdump_handler(void) { SetUnhandledExceptionFilter(crashDumpHandler); } Regards Takayuki Tsunakawa
В списке pgsql-hackers по дате отправления: