Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 1805 - Зависание процессов PostgreSQL   Make a simular bug
Summary: Зависание процессов PostgreSQL
Status: CLOSED FIXED
Alias: None
Product: Postgres@Etersoft
Classification: Продукты (Products)
Component: СУБД (show other bugs)
Version: не указана
Hardware: PC ALT Linux
: P3 critical
Target Milestone: ---
Assignee: Евгений Синельников
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 2213
Blocks: 1272 2054
  Show dependency treegraph
 
In work:
Reported: 2008-05-12 20:05 MSD by Boris Savelev
Modified: 2009-04-03 15:39 MSD (History)
5 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
Трассировка на 26 ядре (328.33 KB, text/plain)
2010-11-18 03:58 MSK, Шильников Андрей
Details
Лог odbcad32 на 26 ядре (69.07 KB, text/plain)
2010-11-18 03:58 MSK, Шильников Андрей
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Boris Savelev 2008-05-12 20:05:58 MSD
Запускаем POSTGRESQL
1)Запускаем 1с с логами сельты
1с "задумывается" на 
in_sql:
If exists (select * from sysobjects where id = object_id('_1SCONNECT') and sysstat & 0xf = 3) Drop table  _1SCONNECT
out_sql:
SELECT CASE WHEN EXISTS (SELECT * FROM pg_tables WHERE tablename='_1sconnect') THEN
exec_query('DROP TABLE _insert__1SCONNECT; DROP TABLE _1SCONNECT CASCADE; DELETE FROM pg_indexes_name WHERE tabname=''_1SCONNECT''') END

Закрываем 1с по ctrl+c
На сервере postgresql остается процесс с запросом
2)Открываем 1с еще раз
Вываливается с ошибкой "Доступ к базе возможен только из одного каталога"
В логах сельты
in_sql:
Select COUNT(*) from master..sysprocesses where dbid=DB_ID('etersoft') and program_name='1CV7'
out_sql:
SELECT COUNT(*) FROM pg_stat_activity WHERE client_port>0 AND datname='etersoft'

Второе можно понять, потому что висит процесс от предыдущего запуска и если его убить, то (1) снова повторится.
"Долгий" запрос также проявляется, если его выполнить в консоле.
Comment 1 Boris Savelev 2008-05-12 20:06:41 MSD
важное замечание: проблема у нас в офисе =)
Comment 2 Andrey Abramov 2008-05-12 23:15:04 MSD
Похоже что проблема в PostgreSQL: я попытался на buh создать новую базу, и на этапе создания все зависло, как уже было раньше на других машинах.
Зависание происходит в момент создания типа данных mchar, а так же при работе с ним (например тут: DELETE FROM pg_indexes_name).
Как эта проблема лечилась ранее? Исправляли же уже, кажется.
Что такое сделали на buh, что вывалилось это?
Comment 3 Boris Savelev 2008-05-13 15:51:48 MSD
на самом buh ничего не делали. обновили сельту по горячему, когда в базе был пользователь, саму базу из оболочки не обновили до новой версии. после этого все валится. раньше исправляли новой сборкой посгреса, щас что-то не очень помогает.
Comment 4 Boris Savelev 2008-05-13 20:19:03 MSD
проявляется только на ALTLinux сборке postgresql
Comment 5 Boris Savelev 2008-05-13 20:22:16 MSD
тест для 100% зависания

CREATE TYPE mchar;

CREATE FUNCTION mchar(mchar, integer, boolean)
RETURNS mchar
AS '$libdir/mchar'
LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
Comment 6 Boris Savelev 2008-05-13 20:25:24 MSD
виснет на futex
воспроизводится также на ядре 2.6.24.
проблема в glibc?
Comment 7 Boris Savelev 2008-05-13 20:56:59 MSD
не работает на новых glibc > 2.5-alt4 (не достоверно)
на glibc из 4.0 работает
Comment 8 Vitaly Lipatov 2008-06-02 18:52:25 MSD
Что-то похожее на
http://bugzilla.altlinux.org/show_bug.cgi?id=15356
Comment 9 Vitaly Lipatov 2008-06-02 19:38:11 MSD
Поступило предложение проверить на ядрах
rpm http://www.unsafe.ru/lakostis/RPMS/ALTLinux kernel-2.6.24/repo/i586 kernel
rpm http://www.unsafe.ru/lakostis/RPMS/ALTLinux kernel-2.6.26/repo/i586 kernel
Comment 10 Boris Savelev 2008-06-21 19:12:54 MSD
Андрей проверь, пожалуйста
Comment 11 Шильников Андрей 2008-06-23 14:16:59 MSD
(In reply to comment #9)
> Поступило предложение проверить на ядрах
> rpm http://www.unsafe.ru/lakostis/RPMS/ALTLinux kernel-2.6.24/repo/i586 kernel
> rpm http://www.unsafe.ru/lakostis/RPMS/ALTLinux kernel-2.6.26/repo/i586 kernel
> 

ни с одним ядром не работает, при инициализации зависает, а при попытке CREATE TYPE mchar;

CREATE FUNCTION mchar(mchar, integer, boolean)
RETURNS mchar
AS '$libdir/mchar'
LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
выпадает в ошибку
Comment 12 Boris Savelev 2008-06-23 15:18:01 MSD
(In reply to comment #11)
> ни с одним ядром не работает, при
> инициализации зависает, а при попытке CREATE
> TYPE mchar;
> 
> CREATE FUNCTION mchar(mchar, integer, boolean)
> RETURNS mchar
> AS '$libdir/mchar'
> LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
> выпадает в ошибку
> 

какую ошибку выдает?
Comment 13 Шильников Андрей 2008-07-01 12:07:49 MSD
(In reply to comment #12)
> (In reply to comment #11)
> > ни с одним ядром не работает, при
> > инициализации зависает, а при попытке CREATE
> > TYPE mchar;
> > 
> > CREATE FUNCTION mchar(mchar, integer, boolean)
> > RETURNS mchar
> > AS '$libdir/mchar'
> > LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
> > выпадает в ошибку
> > 
> 
> какую ошибку выдает?
> 

Вроде бы простую надпись Error.
Comment 14 Vitaly Lipatov 2008-07-01 18:19:54 MSD
Пишите пожалуйста сразу при тестировании, какая именно ошибка выдаётся. Нельзя же так, опосля по памяти что-то вписывать.
Comment 15 Шильников Андрей 2008-07-25 11:15:41 MSD
> rpm http://www.unsafe.ru/lakostis/RPMS/ALTLinux kernel-2.6.24/repo/i586 kernel
Linux version 2.6.24-wks-smp-alt2.4 (builder@yalt64.vps) (gcc version 4.1.2 20070626 (ALT Linux, build 4.1.2-alt2)) #1 SMP PREEMPT Wed May 21 01:22:44 MSD 2008
тест пройден: соединение, создание, инициализация, деинициализация и удаление базы - все удачно.

> rpm http://www.unsafe.ru/lakostis/RPMS/ALTLinux kernel-2.6.26/repo/i586 kernel
Linux version 2.6.26-wks-smp-alt0.4 (builder@yalt64.vps) (gcc version 4.1.2 20070626 (ALT Linux, build 4.1.2-alt2)) #1 SMP PREEMPT Mon Jun 2 10:19:09 MSD 2008
тест пройден: соединение, создание, инициализация, деинициализация и удаление базы - все удачно.
Comment 16 Boris Savelev 2008-07-25 12:47:57 MSD
а glibc какая?
Comment 17 Шильников Андрей 2008-07-25 12:53:40 MSD
таже самая, везде одна - 2,5
Comment 18 Шильников Андрей 2008-07-25 13:27:29 MSD
ап, продолжим изыскания
Comment 19 Vitaly Lipatov 2008-07-25 23:26:06 MSD
Пожалуйста, без намёков. Пишите какие действия планируется предпринять и что было неправильно в прежних.
Не надо писать "я понял" и "привет, как дела" в багах. В то же время не надо обмениваться информацией помимо баги. Не забывайте, что обсуждение в баге читают и другие, и они не должны терять нить.
Comment 20 Шильников Андрей 2008-07-30 17:46:52 MSD
на ядрах 24, 25, 26 - все работает. Тестировал в консоли постгреса так 

DROP TYPE mchar;
DROP FUNCTION mchar(mchar, integer, boolean);

CREATE TYPE mchar;
CREATE FUNCTION mchar(mchar, integer, boolean) RETURNS mchar AS '$libdir/mchar' LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
Comment 21 Boris Savelev 2008-07-30 17:48:32 MSD
rpm -qa | grep glibc ?
Comment 22 Boris Savelev 2008-07-30 18:00:03 MSD
надо проверять на glibc из сизифа
Comment 23 Шильников Андрей 2008-07-30 19:07:35 MSD
Ядро Linux version 2.6.26-wks-smp-alt0.4 
# rpm -qa | grep glibc
glibc-timezones-2.5.1-alt5
glibc-devel-2.5.1-alt5
glibc-preinstall-2.5.1-alt5
glibc-i18ndata-2.5.1-alt5
glibc-kernheaders-2.6.24-alt4
glibc-utils-2.5.1-alt5
glibc-locales-2.5.1-alt5
glibc-nss-2.5.1-alt5
glibc-core-2.5.1-alt5
glibc-gconv-modules-2.5.1-alt5
glibc-2.5.1-alt5

в консоли постгреса 
DROP TYPE mchar;
DROP FUNCTION mchar(mchar, integer, boolean);

CREATE TYPE mchar;
CREATE FUNCTION mchar(mchar, integer, boolean) RETURNS mchar AS '$libdir/mchar'
LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;

все удалялось и создавалось.

При инициализации через Сельту она висла.
Comment 24 Шильников Андрей 2008-07-30 19:08:29 MSD
Created attachment 628 [details]
Трассировка на 26 ядре
Comment 25 Шильников Андрей 2008-07-30 19:09:06 MSD
Created attachment 629 [details]
Лог odbcad32 на 26 ядре
Comment 26 Шильников Андрей 2008-08-05 19:40:26 MSD
Попытался выполнить вот такие запросы. Собственно по логам видно что на них зависал постгрес.
CREATE FUNCTION mchar_in(cstring) RETURNS mchar AS '$libdir/mchar' LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
CREATE FUNCTION mchar_out(mchar) RETURNS cstring AS '$libdir/mchar' LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
CREATE FUNCTION mchar_send(mchar) RETURNS bytea AS '$libdir/mchar' LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT;
CREATE FUNCTION mchar_recv(internal) RETURNS mchar AS '$libdir/mchar' LANGUAGE C IMMUTABLE RETURNS NULL ON NULL INPUT; 
CREATE TYPE mchar (INTERNALLENGTH = -1,INPUT = mchar_in,OUTPUT = mchar_out,RECEIVE = mchar_recv,SEND = mchar_send,STORAGE = extended);
Каждый 2й зависал. Приходилось принудительно выходить из консоли постгреса. НО! после повторной попытке проблемного запроса, запрос проходил.
В топе естественно висят процессы, которые по идеи должны убиваться после закрытия.

Есть какие идеи? или откладывать багу и пока жить на бранче?
Comment 27 Boris Savelev 2008-08-05 19:42:06 MSD
обновим Postges и проверим
Comment 28 Boris Savelev 2008-08-06 11:10:58 MSD
обновил. надо проверить сборку 8.2.9 и glibc из сизифа
Comment 29 Шильников Андрей 2008-08-06 12:31:46 MSD
(In reply to comment #28)
> обновил. надо проверить сборку 8.2.9 и glibc из
> сизифа
> 
Все также висит на инициализации, а в htop процесс CREATE FUNCTION
Comment 30 Boris Savelev 2008-09-22 20:31:42 MSD
проверь 8.3 с новой glibc
Comment 31 Шильников Андрей 2008-09-22 21:01:08 MSD
Как только исправлю ошибки даунгрейда на тестинге, так сразу проверю
Comment 32 Boris Savelev 2008-09-22 21:50:57 MSD
да можно и без иксов проверять-)
но делай как удобно
Comment 33 Шильников Андрей 2008-10-08 18:28:54 MSD
С новой сборкой от 22 сентября все то же самое.
ps ax | grep postgres
17741 ?        Ss     0:00 postgres: writer process
17742 ?        Ss     0:00 postgres: wal writer process
17743 ?        Ss     0:00 postgres: autovacuum launcher process
17744 ?        Ss     0:00 postgres: stats collector process
17800 ?        Ss     0:00 postgres: postgres temp 192.168.0.1(60025) CREATE FUNCTION
17854 pts/2    R+     0:00 grep postgres


Процесс виснет.
Comment 34 Vitaly Lipatov 2008-10-08 21:59:13 MSD
Не надо указывать дату сборки. Указывай название файла пакета с PG.
Comment 35 Шильников Андрей 2008-10-09 15:49:30 MSD
(In reply to comment #33)
> С новой сборкой от 22 сентября все то же
> самое.
> ps ax | grep postgres
> 17741 ?        Ss     0:00 postgres: writer process
> 17742 ?        Ss     0:00 postgres: wal writer process
> 17743 ?        Ss     0:00 postgres: autovacuum launcher process
> 17744 ?        Ss     0:00 postgres: stats collector process
> 17800 ?        Ss     0:00 postgres: postgres temp 192.168.0.1(60025) CREATE
> FUNCTION
> 17854 pts/2    R+     0:00 grep postgres
> 
> 
> Процесс виснет.
> 
Поправка:
версия PG 8.3.3
Comment 36 Vitaly Lipatov 2008-10-19 20:16:58 MSD
Нужно подумать как воспроизвести на обычном PostgreSQL, либо уточнить место проблемы.
Comment 37 Boris Savelev 2008-10-19 21:46:08 MSD
(In reply to comment #36)
> Нужно подумать как воспроизвести на
> обычном PostgreSQL, либо уточнить место
> проблемы.
> 

скопировать mchar и выполнить пару запросов.
Comment 38 Шильников Андрей 2008-10-23 17:15:43 MSD
Вот такая конфигурация 
glibc-2.8.90-alt1
postgresql8.2.1C-server-8.2.9-alt0.M41.1e1

Все отлично, нет зависания Сельты. "100% тест" работает.
Comment 39 Vitaly Lipatov 2008-10-23 17:38:58 MSD
(In reply to comment #38)
> Вот такая конфигурация 
> glibc-2.8.90-alt1
> postgresql8.2.1C-server-8.2.9-alt0.M41.1e1
Ни слова не написано про работу других версий postgresql с этим glibc.
Comment 40 Шильников Андрей 2008-11-01 14:05:19 MSK
8.2.4. тоже работает, но по причине того, что 8.2.9 поддерживается сельтой 1.0.4, считаю, что 8.2.9 является более актуальной.
Исходная причина вроде как решена, не вижу проблем к закрытию баги.
Comment 41 Vitaly Lipatov 2009-04-03 15:39:41 MSD
На glibc 2.5 от ALT с любым ядром PostgreSQL любой версии не работает.
Работает на glibc 2.4 или > 2.5