Nikolay Sivov (@nsivov) commented about dlls/combase/roapi.c:
- /* RO_ERROR_REPORTING_FORCEEXCEPTIONS overrides RO_ERROR_REPORTING_SUPPRESSEXCEPTIONS */
 - raise_exception = (IsDebuggerPresent() && !(flags & RO_ERROR_REPORTING_SUPPRESSEXCEPTIONS)) ||
 (flags & RO_ERROR_REPORTING_FORCEEXCEPTIONS);- /* No need to do anything if:
 * No debugger is attached, and no error reporting flags are set, or* A debugger is attached, but SetErrorInfo and exceptions are disabled. */- if (!set_error && !raise_exception) return TRUE;
 - if (!(len_desc = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, 0, desc, ARRAY_SIZE(desc), NULL)))
 len_desc = LoadStringW(hProxyDll, IDS_FALLBACK_HRESULT_MESSAGE, desc, ARRAY_SIZE(desc));- if (message)
 - {
 /* Find the terminating NUL, and truncate the string to 512 characters. */max_len = max_len ? min(max_len, 512) : 512;for (len_msg = 0; len_msg < max_len && message[len_msg]; len_msg++) /* nothing */;
Is that some arbitrary length limit?