I did some changes of pgsql source code, such as adding a new system catalog. Then I wanted to init the database by using initdb -D PG_DATA_PATH
. But it came to this problem:
The files belonging to this database system will be owned by user "pguser".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
creating directory /home/pguser/Desktop/postgres/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... America/Los_Angeles
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... Segmentation fault (core dumped)
child process exited with exit code 139
initdb: removing data directory "/home/pguser/Desktop/postgres/data"
There is NO errors or warnings when I executed make
and make install
. Also, I used gdb to backtrace the execution of initdb:
Program received signal SIGPIPE, Broken pipe.
0x00007ffff7475224 in __GI___libc_write (fd=4, buf=0x555555838910, nbytes=71)
at ../sysdeps/unix/sysv/linux/write.c:27
27 ../sysdeps/unix/sysv/linux/write.c: No such file or directory.
(gdb) bt
#0 0x00007ffff7475224 in __GI___libc_write (fd=4, buf=0x555555838910,
nbytes=71) at ../sysdeps/unix/sysv/linux/write.c:27
#1 0x00007ffff73f028d in _IO_new_file_write (f=0x555555828040,
data=0x555555838910, n=71) at fileops.c:1203
#2 0x00007ffff73f2021 in new_do_write (to_do=71,
data=0x555555838910 " * string literal (including a function body!) or a multiline comment.\n\n\n\nguage';\nge';\n;\n;\nrministic, collencoding, collcollate, collctype)VALUES (pg_nextoid('pg_catalog.pg_collation', 'oid', 'pg_cata"...,
fp=0x555555828040) at fileops.c:457
#3 _IO_new_do_write (fp=0x555555828040,
data=0x555555838910 " * string literal (including a function body!) or a multiline comment.\n\n\n\nguage';\nge';\n;\n;\nrministic, collencoding, collcollate, collctype)VALUES (pg_nextoid('pg_catalog.pg_collation', 'oid', 'pg_cata"...,
to_do=71) at fileops.c:433
#4 0x00007ffff73ef858 in _IO_new_file_sync (fp=0x555555828040)
at fileops.c:813
#5 0x00007ffff73e395d in __GI__IO_fflush (fp=0x555555828040) at iofflush.c:40
#6 0x000055555555d5ec in setup_dictionary (cmdfd=0x555555828040)
at initdb.c:1675
#7 0x000055555555f838 in initialize_data_directory () at initdb.c:2909
#8 0x0000555555560234 in main (argc=3, argv=0x7fffffffded8) at initdb.c:3228
What's the potential cause of this fault???? SIGPIPE signal??? I'm hoping for someone to help me!!!Thank you.
You have a core dump from the wrong process.
initdb
starts the PostgreSQL server in stand-alone mode and pipes the catalog contents to it. Now something in the data you are writing is bad, and the stand alone backend exits. Then initdb
gets a SIGPIPE if it writes to the pipe and crashes.
You want to debug the PostgreSQL server, not initdb
.