内核 - libc-2 中的 postgres 段错误 15。19.so
kernel - postgres segfault error 15 in libc-2.19.so
昨天我们在 Debian 8 (Linux xxxxxx 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10- 03) x86_64 GNU/Linux) - 分段错误。数据库关闭所有连接并重新初始化自身,在恢复模式下停留约 1 分钟。
PostgreSQL 日志:
2018-10-xx xx:xx:xx UTC [580-2] LOG: server process (PID 16461) was
terminated by signal 11: Segmentation fault
kern.log:
Oct xx xx:xx:xx xxxxxxxx kernel: [117977.301353] postgres[16461]:
segfault at 7efd3237db90 ip 00007efd3237db90 sp 00007ffd26826678 error
15 in libc-2.19.so[7efd322a2000+1a1000]
根据 libc 文档 (https://support.novell.com/docs/Tids/Solutions/10100304.html),错误代码 15 表示:
NX_EDEADLK 15 resource deadlock would occur
- 这并没有告诉我太多。
你能告诉我我们将来是否可以做些什么来避免这个问题吗?因为这个服务器当然是生产服务器。
当前所有软件包都是最新的。不幸的是,升级 PG 不是一种选择。服务器在 Google Compute Engine 上运行。
error code 15 means: NX_EDEADLK 15
不,不是那个意思。 This answer 在这里解释如何解释 15。
设置位 0、1、2、3 => 保护故障、写访问、用户模式、保留位的使用。您的 postgress
进程很可能试图写入某个野指针。
if we can do something to avoid this problem in the future?
唯一你能做的就是找到错误并修复它,或者升级到 postgress
已经修复错误的版本(并希望没有引入新的)。
要了解错误可能出在哪里,您应该检查是否生成了 core
转储(如果没有,请启用它们)。如果您有 core
,请使用 gdb /path/to/postgress /path/to/core
,然后使用 where
GDB 命令。这将为您提供崩溃堆栈跟踪,这可能会让您找到类似的错误报告。
昨天我们在 Debian 8 (Linux xxxxxx 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10- 03) x86_64 GNU/Linux) - 分段错误。数据库关闭所有连接并重新初始化自身,在恢复模式下停留约 1 分钟。
PostgreSQL 日志:
2018-10-xx xx:xx:xx UTC [580-2] LOG: server process (PID 16461) was terminated by signal 11: Segmentation fault
kern.log:
Oct xx xx:xx:xx xxxxxxxx kernel: [117977.301353] postgres[16461]: segfault at 7efd3237db90 ip 00007efd3237db90 sp 00007ffd26826678 error 15 in libc-2.19.so[7efd322a2000+1a1000]
根据 libc 文档 (https://support.novell.com/docs/Tids/Solutions/10100304.html),错误代码 15 表示:
NX_EDEADLK 15 resource deadlock would occur
- 这并没有告诉我太多。
你能告诉我我们将来是否可以做些什么来避免这个问题吗?因为这个服务器当然是生产服务器。 当前所有软件包都是最新的。不幸的是,升级 PG 不是一种选择。服务器在 Google Compute Engine 上运行。
error code 15 means: NX_EDEADLK 15
不,不是那个意思。 This answer 在这里解释如何解释 15。
设置位 0、1、2、3 => 保护故障、写访问、用户模式、保留位的使用。您的 postgress
进程很可能试图写入某个野指针。
if we can do something to avoid this problem in the future?
唯一你能做的就是找到错误并修复它,或者升级到 postgress
已经修复错误的版本(并希望没有引入新的)。
要了解错误可能出在哪里,您应该检查是否生成了 core
转储(如果没有,请启用它们)。如果您有 core
,请使用 gdb /path/to/postgress /path/to/core
,然后使用 where
GDB 命令。这将为您提供崩溃堆栈跟踪,这可能会让您找到类似的错误报告。