Portál AbcLinuxu, 12. května 2025 16:48

Dotaz: postgresql segfault

9.2.2010 08:22 kokoska.rokoska
postgresql segfault
Přečteno: 405×
Odpovědět | Admin
Dobry den vespolek!

Objevil se mi docela zavazny problem s PostgreSQL 8.1 bezici na CentOS 5.4 (postgresql.x86_64, 8.1.18-2.el5_4.1). Pri trivilanim INSERTu:

INSERT INTO table1 SELECT a,b,c FROM table2 WHERE table2.id=123

mi Postgres zkolabuje (bez ohledu na to, jaky radek se snazim zkopirovat) - vypise chybu o ukonceni konexe - a to tak, ze vzdy :-)

V logach najdu toto:

/var/log/messages:
Feb 9 07:40:05 host kernel: postmaster[14726]: segfault at ffffffffd498de00 rip 0000003fdea7be82 rsp 00007fffce996c68 error 4

/var/lib/pgsql/data/pg_log/postgresql-Tue.log:
LOG: server process (PID 14726) was terminated by signal 11
LOG: terminating any other active server processes
WARNING: terminating connection because of crash of another server process
DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT: In a moment you should be able to reconnect to the database and repeat your command.

Tento INSERT probiha docela casto a doposud s nim nebyl problem. Probelm se objevil jiz vcera a po reindexaci zase vymizel (ale to mohla byt shoda nahod). Nyni nepomaha nic (reindex, restart postgresu...) :-)

Mate nekdo nejaky smysluplny napad, co s tim? Snad krome toho reportovat bug a doufat, ze ho nekdo-nekdy opravi?...

Diky moc a hezky den!

kokoska.rokoska
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.2.2010 08:26 cronin | skóre: 49
Rozbalit Rozbalit vše Re: postgresql segfault
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chybna RAMka? Skus memtest.
okbob avatar 9.2.2010 08:58 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: postgresql segfault
Odpovědět | | Sbalit | Link | Blokovat | Admin
Může být nabořená tabulka table2 nebo indexy nad touto tabulkou.

SELECT * FROM table2 projde?

Je otázkou proč došlo k naboření? Nejčastější bývají problémy s pamětí nebo sběrnicí (nevylučuji ani chybu PostgreSQL).
9.2.2010 09:59 kokoska.rokoska
Rozbalit Rozbalit vše Re: postgresql segfault
Diky moc za info, panove!

Obavam se, ze RAMka je OK - memtest dopadl dobre: pred instalaci severu bezel dobre cca 40 hodin (pred par mesici) a nyni behem 1hodinoveho testu take problem nenasel.

SELECT/INSERT/UPDATE nad table2 (stejne jako nad vsemi ostatnimi tabulkami) funguje dobre.
SELECT nad table1 funguje take. INSERT/UPDATE nikoliv.

Mezitim jsem zjistil, ze docasnou opravu lze udelat dostatecne dlouhym cekanim :-)
Aneb, po hodine-dvou lze zase par INSERTu (nekdy 10, nekdy 1000) udelat.

BTW: Jak lze, prosim, "opravit" indexy nad tabulkami? Reindex nepomaha. Mam je zkusit "dropnout" a vytvorit znovu?

Za jakekoliv rady budu vdecny, protoze jsem v ponekud neprijemne situaci :-)
Data sice lze cist bez problemu, ale uzivatele (nevim proc) chteji data take zapisovat...

Diky moc a hzeky den!
9.2.2010 15:32 Radim Kolář | skóre: 11
Rozbalit Rozbalit vše Re: postgresql segfault
Tohle se mi stalo uz nekolikrat. Musi se prekompilovat pgsql znovu.
9.2.2010 20:22 kokoska.rokoska
Rozbalit Rozbalit vše Re: postgresql segfault
Mno, Postgresql byla instalovana z oficialnich repozitaru Centos 5, takze jsem nic nekompiloval a proto - uprime receno - se mi do toho moc nechce :-)

Presto diky moc za radu a dulezite infromace, pane kolego Radime Kolari!

kokoska.rokoska
9.2.2010 11:26 kokoska.rokoska
Rozbalit Rozbalit vše Re: postgresql segfault
Tak jsem zjistil dalsi info:

Nastartoval jsem si novy server (na uplne jinem HW), nainstaloval stejnou verzi Postgresql, pomoci pg_dump a pg_restore jsem "presunul" databazi, zkusil INSERT SELECT a dopadlo to uplne stejne jako na "ostrem stroji" => segfault.

Z toho mi vyplyva nasledujici (ale rad se budu mylit):
1. Chybou RAM to nebude (neverim, ze bych nasel dva uplne ruzne stroje se stejne blbou RAMkou :-)
2. Bud je chyba v Postgresql, nebo pg_dump/pg_restore uspesne "prekopiroval" chybna data z jednoho stroje na druhy...

Nebyl by nejaky napad, jak postupovat dal?

Diky moc a hezky den!

kokoska.rokoska
okbob avatar 9.2.2010 12:13 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: postgresql segfault
Pokud to padá i na zkopírovaných datech skrze pg_dump, tak to bude chyba PostgreSQL.

Muzete mi poslat ten pg_dump? Pripadne mi poslete testovaci data a dotaz na kterem to pada.
9.2.2010 13:13 kokoska.rokoska
Rozbalit Rozbalit vše Re: postgresql segfault
Diky moc, pane kolego okbobe, za nabidku pomoci!

Blby je, ze to jsou "ostra data" z DB serveru, z nichz nemala cast je docela citliva :-)

Zkusim vymyslet, jak je alespon castecne anonymizovat, a dam vedet.

BTW: Pokusne jsem nainstaloval na ten testovaci stroj Postresql 8.4.2 z pgdg-centos a obnovil data. INSERTy mi zatim funguji, ale mozna se raduji predcasne (jeste to budu zkouset, na 8.1 to bezelo taky skoro pul roku v pohode).
A tak me tak napada: Mam se bat pouzit 8.4.2? Je to velke riziko, nebo jsem jediny, kdo pouziva prehistorickou, byt na CentOS 5 jedinou podporovanou, verzi 8.1?

Jeste jednou diky moc a hezky den!

kokoska.rokoska
okbob avatar 9.2.2010 13:18 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: postgresql segfault
8.4 by uz mela byt v pohode. Vim o par firmach, ktere ji pouzivaji v produkci.

9.2.2010 16:20 cronin | skóre: 49
Rozbalit Rozbalit vše Re: postgresql segfault
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ako bol ten PostgreSQL a jeho zavislosti instalovane? Neboli nejakym sposobom osidene kniznice (LD_LIBRARY_PATH, ln -s) alebo nieco podobne?
9.2.2010 20:24 kokoska.rokoska
Rozbalit Rozbalit vše Re: postgresql segfault
Postresqgl byla instalovana z oficialnich CentOS repozitaru (binarni rpmka) a nikoliv kompilovana. A skoro pul roku v phode bezela (ale to zrejme vubec nic neznamena :-)

Hezky den!

kokoska.rokoska
10.2.2010 06:10 cronin | skóre: 49
Rozbalit Rozbalit vše Re: postgresql segfault
Patrajte, co sa zmenilo [tesne] predtym, ako zacala padat. Pocitace su s pravdepodobnostou hraniciacou s istotou deterministicke - i ked zlozite - stroje, takze i nahla zmena stability vasej databazy bude mat svoju zrejmu - i ked zatial neznamu - pricinu.
10.2.2010 08:21 kokoska.rokoska
Rozbalit Rozbalit vše Re: postgresql segfault
Rozumim a dekuji Vam, pane kolego cronine, za radu!

Bohuzel jsem jiz timto smerem napinal sve usili, ale bez viditelneho uspechu. Zadna vedoma zmena na serveru neprobehla (krome neustavajicich INSERTu do te nestastne tabulky) a ani zadny z logu neobsahoval nic uzitecneho (vcetne logu HW komponent - RAID, RSA...).

Jinak to, ze jsou pocitace deterministicke stroje, nam tvrdili jiz v osmdesatych letech na zakladni skole a uz tehda jsem jim - doubajic sroubovakem do ZX81 - neveril :-)

Jeste jednou diky moc za hezky den!

kokoska.rokoska
9.2.2010 17:20 Zdenek Kotala
Rozbalit Rozbalit vše Re: postgresql segfault
Odpovědět | | Sbalit | Link | Blokovat | Admin
A stacktrace by nebyl? Docela zajimave by bylo vedet kde to padlo. Nejsou tam nejake trigry?
9.2.2010 20:54 kokoska.rokoska
Rozbalit Rozbalit vše Re: postgresql segfault
1. stack trace by, bohuzel, nebyl :-)
Ale, pokud mi poradite, pane kolego Zdenku Kotalo, jak donutim Postgresql aby vyrobyla core dump a napovite mi, kde ho mam hledat, pokusim se stack trace vyrobit.

2. Trigery tam jsou. Lepe receno, je tam jeden trivialni BEFORE UPDATE trigger, ktery meni sloupec s timestamp.
Tak-trochu predpokladam, ze u INSERTu "neprijde k duhu" :-)

Hezky den!

kokoska.rokoska

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.