Thread: postgresql 9.2.1 dumps core on SmartOS(solaris) when the OS is rebooted

postgresql 9.2.1 dumps core on SmartOS(solaris) when the OS is rebooted

From
Yunong Xiao
Date:
I've got postgres 9.2.1 32bit running in production on SmartOS(solaris) =
with synchronous remote-write replication enabled. At some point, both =
of the boxes were rebooted. Upon reboot, one of the postgres instances =
dumps core with the following stack trace:

Loading modules: [ libc.so.1 ld.so.1 ]
> $C
080479b8 libc.so.1`_lwp_kill+0x15(1, 6, a9, fef31000, fef31000, 16)
080479d8 libc.so.1`raise+0x2b(6, 0, 80479f0, fef31000, 0, 0)
08047a28 libc.so.1`abort+0x10e(856c760, 2f, 8047a78, 810034d, 0, =
84c4354)
08047a78 errfinish+0x1f7(0, 84c4354, 18a1, 83c789a, 0, fefca664)
08047bb8 StartupXLOG+0x2614(3, 856cbd4, 0, 8047c68, 8047c92, 8047c68)
08047bd8 StartupProcessMain+0x145(8126350, 0, 84c35c0, 84c35c0, 0, 2)
08047c38 AuxiliaryProcessMain+0x447(2, 8047c68, 84cd0ff, 2, 800000, 0)
08047cb8 StartChildProcess+0xec(853e828, 0, 0, 856eec8, 853e720, 40)
08047d28 PostmasterMain+0x7ce(3, 856de98, 0, 8516d50, 0, fefc36e0)
08047d68 main+0x412(3, 8047d8c, 8047d9c, 83c4ec0, 0, 0)
08047d80 _start+0x83(3, 8047e44, 8047fdb, 8047fdb, 0, 8047e70)

Here's the more detailed platform information:

[root@4bfe0103 (postgres) ~]$ uname -a
SunOS 4bfe0103-2a9c-42c7-bc51-b33f1a8f5589 5.11 joyent_20121119T091433Z =
i86pc i386 i86pc Solaris

If you are interested, I have uploaded the actual core file here: =
https://download.joyent.com/pub/postgres/core

Here's the config for the primary postgres instance:

listen_addresses =3D '0.0.0.0'   # what IP address(es) to listen on;
port =3D 5432        # (change requires restart)
max_connections =3D 100     # (change requires restart)
shared_buffers =3D 32MB     # min 128kB
wal_level =3D hot_standby # minimal, archive, or hot_standby
fsync =3D on       # turns forced synchronization on or off
synchronous_commit =3D remote_write
max_wal_senders =3D 15    # max number of walsender processes
wal_keep_segments =3D 1000    # in logfile segments, 16MB each; 0 =
disables
synchronous_standby_names =3D 'tcp://postgres@10.99.99.52:5432/postgres'
hot_standby =3D on # "on" allows queries during recovery
max_standby_archive_delay =3D 30s  # max delay before canceling queries
max_standby_streaming_delay =3D 30s  # max delay before canceling =
queries
wal_receiver_status_interval =3D 10s # send replies at least this often
hot_standby_feedback =3D off   # send info from standby to prevent
log_destination =3D 'stderr'   # Valid values are combinations of
logging_collector =3D on # Enable capturing of stderr and csvlog
log_directory =3D '/var/pg/'       # directory where log files are =
written,
log_filename =3D 'postgresql-%Y-%m-%d_%H%M%S.log'    # log file name =
pattern,
log_file_mode =3D 0600           # creation mode for log files,
log_truncate_on_rotation =3D on # If on, an existing log file with the
log_rotation_age =3D 1h          # Automatic rotation of logfiles will
log_rotation_size =3D 10MB       # Automatic rotation of logfiles will
log_min_messages =3D debug5 # values in order of decreasing detail:
log_line_prefix =3D '%m'     # special values:
log_timezone =3D 'UTC'
datestyle =3D 'iso, mdy'
timezone =3D 'UTC'
lc_messages =3D 'C'     # locale for system error message
lc_monetary =3D 'C'     # locale for monetary formatting
lc_numeric =3D 'C'      # locale for number formatting
lc_time =3D 'C'       # locale for time formatting
default_text_search_config =3D 'pg_catalog.english'

Here's the config for the standby:

listen_addresses =3D '0.0.0.0'   # what IP address(es) to listen on;
port =3D 5432        # (change requires restart)
max_connections =3D 100     # (change requires restart)
shared_buffers =3D 32MB     # min 128kB
wal_level =3D hot_standby # minimal, archive, or hot_standby
fsync =3D on       # turns forced synchronization on or off
synchronous_commit =3D off
max_wal_senders =3D 15    # max number of walsender processes
wal_keep_segments =3D 1000    # in logfile segments, 16MB each; 0 =
disables
synchronous_standby_names =3D '' # standby servers that provide sync rep
hot_standby =3D on # "on" allows queries during recovery
max_standby_archive_delay =3D 30s  # max delay before canceling queries
max_standby_streaming_delay =3D 30s  # max delay before canceling =
queries
wal_receiver_status_interval =3D 10s # send replies at least this often
hot_standby_feedback =3D off   # send info from standby to prevent
log_destination =3D 'stderr'   # Valid values are combinations of
logging_collector =3D on # Enable capturing of stderr and csvlog
log_directory =3D '/var/pg/'       # directory where log files are =
written,
log_filename =3D 'postgresql-%Y-%m-%d_%H%M%S.log'    # log file name =
pattern,
log_file_mode =3D 0600           # creation mode for log files,
log_truncate_on_rotation =3D on # If on, an existing log file with the
log_rotation_age =3D 1h          # Automatic rotation of logfiles will
log_rotation_size =3D 10MB       # Automatic rotation of logfiles will
log_min_messages =3D debug5 # values in order of decreasing detail:
log_line_prefix =3D '%m'     # special values:
log_timezone =3D 'UTC'
datestyle =3D 'iso, mdy'
timezone =3D 'UTC'
lc_messages =3D 'C'     # locale for system error message
lc_monetary =3D 'C'     # locale for monetary formatting
lc_numeric =3D 'C'      # locale for number formatting
lc_time =3D 'C'       # locale for time formatting
default_text_search_config =3D 'pg_catalog.english'

Here's the recovery.conf on the standby:

standby_mode =3D on
primary_conninfo =3D 'host=3D10.99.99.58 port=3D5432 user=3Dpostgres =
application_name=3Dtcp://postgres@10.99.99.52:5432/postgres'

Let me know if you require any further information.

-Yunong=