Postgresql

Postgresql - 分段錯誤(核心轉儲)

  • March 18, 2021

我正在研究 postgresql 程式碼(伺服器端)。我按照官方教程從原始碼安裝了一個版本: http ://www.postgresql.org/docs/8.4/interactive/install-short.html

我對程式碼做了同樣的修改,所以我需要再次安裝 postgresql,但這次是我的版本。

我在*/usr/local/pgsql2/中重命名了**/usr/local/pgsql* /並且我做到了:

make distclean
./configure
make
sudo make install
sudo mkdir /usr/local/pgsql/data
sudo chown darkcoffeelinux /usr/local/pgsql/data

直到現在一切都很順利,但是有了命令

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/

我收到了這個錯誤:

The files belonging to this database system will be owned by user "darkcoffeelinux".
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".

fixing permissions on existing directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 24MB
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... ok
initializing pg_authid ... Segmentation fault (core dumped)
child process exited with exit code 139
initdb: removing contents of data directory "/usr/local/pgsql/data"

附加資訊:我使用的是 kubuntu,postgresql 8.4.15

我認為權限是正確的,否則您將不會到達這裡。

我的猜測是您所做的修改導致了問題。鑑於這是一個分段錯誤,情況尤其如此。您真正需要做的是查看轉儲核心時的呼叫堆棧,看看您是否可以隔離程式碼中發生這種情況的位置,然後回溯以查看您所做的修改可能導致了這種情況。鑑於您已經修改了程式碼,第一步是檢查您是否可以像 kgrittn 所說的那樣重現,但我敢打賭,這只會出現在您修改後的程式碼中。

下一步可能是在調試器中執行 initdb 並查看崩潰時的情況。在這一點上,標準的 C 調試實踐確實是您最好的選擇。

引用自:https://dba.stackexchange.com/questions/34481