neondatabase/neon · critical
aborting...
Error message
aborting...
What it means
The second line printed by ExceptionalCondition in the walproposer compat layer, emitted immediately before exit(1). It is not an independent failure: it always accompanies the preceding 'ExceptionalCondition: file:line: condition' line and only announces that the process is terminating because of it.
Source
Thrown at pgxn/neon/walproposer_compat.c:21
* This is needed to avoid linking to full postgres server installation. This file
* is compiled as a part of libwalproposer static library.
*/
#include "postgres.h"
#include <stdio.h>
#include "libpq/pqformat.h"
#include "miscadmin.h"
#include "utils/datetime.h"
#include "walproposer.h"
void
ExceptionalCondition(const char *conditionName,
const char *fileName, int lineNumber)
{
fprintf(stderr, "ExceptionalCondition: %s:%d: %s\n",
fileName, lineNumber, conditionName);
fprintf(stderr, "aborting...\n");
exit(1);
}
void
pq_copymsgbytes(StringInfo msg, char *buf, int datalen)
{
if (datalen < 0 || datalen > (msg->len - msg->cursor))
ExceptionalCondition("insufficient data left in message", __FILE__, __LINE__);
memcpy(buf, &msg->data[msg->cursor], datalen);
msg->cursor += datalen;
}
/* --------------------------------
* pq_getmsgint - get a binary integer from a message buffer
*
* Values are treated as unsigned.
* --------------------------------
*/View on GitHub (pinned to 8f60b04da4)
Solutions
- Locate the 'ExceptionalCondition:' line above this message and investigate that file:line
- Restart the process via its supervisor after fixing the underlying cause
- Check version compatibility between the walproposer peers and capture logs for a report
Example fix
# before: safekeeper run bare, dies silently after the assertion # after: supervised restart while the root cause is investigated [Service] Restart=on-failure RestartSec=5
Defensive patterns
Strategy: fallback
Prevention
- Run safekeepers under systemd or Kubernetes with restart policies
- Alert on the 'ExceptionalCondition' signature in logs before 'aborting...' appears
- Keep peers version-matched to avoid assertion paths
- Capture the file:line from the preceding log line in alert payloads
When it happens
Trigger: Always printed together with the ExceptionalCondition message when any assertion in the standalone walproposer fails, e.g. malformed WAL protocol input to pq_copymsgbytes or unsupported integer widths in pq_getmsgint.
Common situations: Safekeeper or walproposer processes found dead with 'aborting...' as the last log line; the actionable detail is on the line above it.
Related errors
- ExceptionalCondition: %s:%d: %s
- unsupported integer size %d
- safekeeper {sk_id} does not exist
- Failed to check node status: {e}
- Safekeeper set up for auth but no private key specified
AI-assisted analysis of neondatabase/neon@8f60b04da4 (2026-08-16).
Data as JSON: /api/errors/956609865ded8a80.
Report an issue: GitHub.