简体   繁体   中英

Postgresql initdb - Segmentation fault (core dumped)

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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM