Skip to content

Instantly share code, notes, and snippets.

@mcandre
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mcandre/3defd83204d737b132cb to your computer and use it in GitHub Desktop.
Save mcandre/3defd83204d737b132cb to your computer and use it in GitHub Desktop.
postgres 6.5 segfault traces on potato debian

Source:

https://github.com/mcandre/potatogresql/tree/a189aae36dae48befbec944e27e20b2c0fc0a47f

Trace:

$ make build
$ docker run --privileged --rm -it mcandre/potatogresql sh
sh-2.03# /postgres 
su[6]: + /0 root-postgres

PAM_unix[6]: (su) session opened for user postgres by (uid=0)
/postgres: line 5:     6 Segmentation fault      su postgres -c "/usr/lib/postgresql/bin/postgres -i -D $PGDATA -p template1"

strace:

# su postgres -c "strace -f /usr/lib/postgresql/bin/postgres -i -D $PGDATA -p template1"
su[13]: + /0 root-postgres

PAM_unix[13]: (su) session opened for user postgres by (uid=0)
execve("/usr/lib/postgresql/bin/postgres", ["/usr/lib/postgresql/bin/postgres", "-i", "-D", "/var/lib/postgres/data", "-p", "template1"], [/* 15 vars */]) = 0
brk(0)                                  = 0x8210000
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2836, ...}) = 0
old_mmap(NULL, 2836, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7fe6000
close(3)                                = 0
open("/lib/libcrypt.so.1", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=20436, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\16"..., 4096) = 4096
old_mmap(NULL, 183228, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf7fb9000
mprotect(0xf7fbe000, 162748, PROT_NONE) = 0
old_mmap(0xf7fbe000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x4000) = 0xf7fbe000
old_mmap(0xf7fbf000, 158652, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7fbf000
close(3)                                = 0
open("/lib/libnsl.so.1", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=76032, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0@\0\000"..., 4096) = 4096
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7fb8000
old_mmap(NULL, 88200, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf7fa2000
mprotect(0xf7fb4000, 14472, PROT_NONE)  = 0
old_mmap(0xf7fb4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x11000) = 0xf7fb4000
old_mmap(0xf7fb6000, 6280, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7fb6000
close(3)                                = 0
open("/lib/libdl.so.2", O_RDONLY)       = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=9452, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\330\34"..., 4096) = 4096
old_mmap(NULL, 12428, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf7f9e000
mprotect(0xf7fa0000, 4236, PROT_NONE)   = 0
old_mmap(0xf7fa0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1000) = 0xf7fa0000
close(3)                                = 0
open("/lib/libm.so.6", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=116336, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240F\0"..., 4096) = 4096
old_mmap(NULL, 117464, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf7f81000
mprotect(0xf7f9d000, 2776, PROT_NONE)   = 0
old_mmap(0xf7f9d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1b000) = 0xf7f9d000
close(3)                                = 0
open("/lib/libreadline.so.4", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=143336, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\237"..., 4096) = 4096
old_mmap(NULL, 147632, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf7f5c000
mprotect(0xf7f7b000, 20656, PROT_NONE)  = 0
old_mmap(0xf7f7b000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1e000) = 0xf7f7b000
old_mmap(0xf7f80000, 176, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7f80000
close(3)                                = 0
open("/lib/libhistory.so.4", O_RDONLY)  = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=21044, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\25"..., 4096) = 4096
old_mmap(NULL, 23384, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf7f56000
mprotect(0xf7f5b000, 2904, PROT_NONE)   = 0
old_mmap(0xf7f5b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x4000) = 0xf7f5b000
close(3)                                = 0
open("/lib/libncurses.so.5", O_RDONLY)  = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=233848, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\340"..., 4096) = 4096
old_mmap(NULL, 252364, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf7f18000
mprotect(0xf7f4a000, 47564, PROT_NONE)  = 0
old_mmap(0xf7f4a000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x31000) = 0xf7f4a000
old_mmap(0xf7f52000, 14796, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7f52000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=888064, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\244\213"..., 4096) = 4096
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7f17000
old_mmap(NULL, 902396, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf7e3a000
mprotect(0xf7f0f000, 29948, PROT_NONE)  = 0
old_mmap(0xf7f0f000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xd4000) = 0xf7f0f000
old_mmap(0xf7f13000, 13564, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7f13000
close(3)                                = 0
munmap(0xf7fe6000, 2836)                = 0
getpid()                                = 14
brk(0)                                  = 0x8210000
brk(0x8210038)                          = 0x8210038
brk(0x8211000)                          = 0x8211000
geteuid()                               = 31
open("/var/lib/postgres/data/pg_options", O_RDONLY) = -1 ENOENT (No such file or directory)
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++

gdb:

# su postgres -c "gdb /usr/lib/postgresql/bin/postgres"
su[17]: + /0 root-postgres

PAM_unix[17]: (su) session opened for user postgres by (uid=0)
GNU gdb 19990928
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...(no debugging symbols found)...
(gdb) run -i -D $PGDATA -p template1
Starting program: /usr/lib/postgresql/bin/postgres -i -D $PGDATA -p template1
(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...
(no debugging symbols found)...
Program received signal SIGSEGV, Segmentation fault.
0x80a4f06 in pq_flush ()

ldd:

# ldd /usr/lib/postgresql/bin/postgres
	libcrypt.so.1 => /lib/libcrypt.so.1 (0xf7fb9000)
	libnsl.so.1 => /lib/libnsl.so.1 (0xf7fa2000)
	libdl.so.2 => /lib/libdl.so.2 (0xf7f9e000)
	libm.so.6 => /lib/libm.so.6 (0xf7f81000)
	libreadline.so.4 => /lib/libreadline.so.4 (0xf7f5c000)
	libhistory.so.4 => /lib/libhistory.so.4 (0xf7f56000)
	libncurses.so.5 => /lib/libncurses.so.5 (0xf7f18000)
	libc.so.6 => /lib/libc.so.6 (0xf7e3a000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xf7fea000)

System:

  • postgresql 6.5.3-27
  • Debian 2.2 Potato
  • Docker client 1.4.1
  • Docker server 1.5.0
  • boot2docker 1.4.1
  • Vagrant 1.7.2
  • VirtualBox 4.3.24
  • Homebrew 0.9.5
  • Mac OS X 10.10.3 Yosemite
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment