On 2019-Mar-26, Alvaro Herrera wrote: > > 2019-03-26 00:49:02.208 EDT [5c99ae9e.20cc:6] LOG: server process (PID > > 8368) was terminated by exception 0xC0000028 > > 0xC0000028 is STATUS_BAD_STACK, per > https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55 > Not sure how credible/useful a stack trace is going to be.
BTW I think we should update our message to use this URL instead of ambiguously pointing to "ntstatus.h". Also, all the URLs in win32_port.h (except the wine one) are dead. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c index f84f882c4cb..549c82ea627 100644 --- a/src/backend/postmaster/pgarch.c +++ b/src/backend/postmaster/pgarch.c @@ -647,7 +647,8 @@ pgarch_archiveXlog(char *xlog) ereport(lev, (errmsg("archive command was terminated by exception 0x%X", WTERMSIG(rc)), - errhint("See C include file \"ntstatus.h\" for a description of the hexadecimal value."), + errhint("See \"%s\" for a description of the hexadecimal value.", + "https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55"), errdetail("The failed archive command was: %s", xlogarchcmd))); #else diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index fe599632d3d..a540d51d79a 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -3630,7 +3630,8 @@ LogChildExit(int lev, const char *procname, int pid, int exitstatus) "server process" */ (errmsg("%s (PID %d) was terminated by exception 0x%X", procname, pid, WTERMSIG(exitstatus)), - errhint("See C include file \"ntstatus.h\" for a description of the hexadecimal value."), + errhint("See \"%s\" for a description of the hexadecimal value.", + "https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55"), activity ? errdetail("Failed process was running: %s", activity) : 0)); #else ereport(lev, diff --git a/src/include/port/win32_port.h b/src/include/port/win32_port.h index f4841fb3975..12abd08cda4 100644 --- a/src/include/port/win32_port.h +++ b/src/include/port/win32_port.h @@ -107,7 +107,7 @@ * similar to a unix-style signal exit (think SIGSEGV == * STATUS_ACCESS_VIOLATION). Return values are broken up into groups: * - * http://msdn2.microsoft.com/en-gb/library/aa489609.aspx + * https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/87fba13e-bf06-450e-83b1-9241dc81e781 * * NT_SUCCESS 0 - 0x3FFFFFFF * NT_INFORMATION 0x40000000 - 0x7FFFFFFF @@ -119,24 +119,10 @@ * by the system, and it seems values >= 0x100 are system-generated. * See this URL for a list of WIN32 STATUS_* values: * - * Wine (URL used in our error messages) - + * https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55 + * + * Wine - * http://source.winehq.org/source/include/ntstatus.h - * Descriptions - http://www.comp.nus.edu.sg/~wuyongzh/my_doc/ntstatus.txt - * MS SDK - http://www.nologs.com/ntstatus.html - * - * It seems the exception lists are in both ntstatus.h and winnt.h, but - * ntstatus.h has a more comprehensive list, and it only contains - * exception values, rather than winnt, which contains lots of other - * things: - * - * http://www.microsoft.com/msj/0197/exception/exception.aspx - * - * The ExceptionCode parameter is the number that the operating system - * assigned to the exception. You can see a list of various exception codes - * in WINNT.H by searching for #defines that start with "STATUS_". For - * example, the code for the all-too-familiar STATUS_ACCESS_VIOLATION is - * 0xC0000005. A more complete set of exception codes can be found in - * NTSTATUS.H from the Windows NT DDK. * * Some day we might want to print descriptions for the most common * exceptions, rather than printing an include file name. We could use