Description
Здравствуйте!
Извините, за баг с малым количеством инфы.
Конфигурация Red hat 6 + postgres 9.6.6 обычный + pg_pathman 1.4.9
Несколько десятков тестовых и уже десяток боевых серверов, на каждом каждую ночь создаётся по 3 партиции на 15 таблиц.
За полгода ошибка вылезла всего два раза, в messages появляется такая запись
May 4 00:00:11 tm-VMware-4224334ca kernel: postmaster[4561] general protection ip:7f5540531c66 sp:7fff05119e20 error:0 in pg_pathman.so[7f554051f000+31000]
или такая
Aug 22 00:01:25 iwtm kernel: postmaster[11377] general protection ip:7f5fbdb14c66 sp:7ffffd3facf0 error:0 in pg_pathman.so[7f5fbdb02000+31000]
в логе постгреса при этом такая ошибка
< 2018-05-04 00:00:11.779 MSK > LOG: server process (PID 4561) was terminated by signal 11: Segmentation fault
< 2018-05-04 00:00:11.779 MSK > DETAIL: Failed process was running: DEALLOCATE pdo_stmt_00059b49
или такая
< 2018-08-22 00:02:50.511 MSK > LOG: server process (PID 11377) was terminated by signal 11: Segmentation fault
< 2018-08-22 00:02:50.511 MSK > DETAIL: Failed process was running: SELECT 1
Ошибка похоже возникает не в сессии, которая добавляет партиции, а в другой, но после добавления партиций.
Но падает весь постгрес, к сожалению.
Партиции добавляются с помощью кода
execute format('ALTER TABLE %s ADD CONSTRAINT %s CHECK (%s)',
a_dummy_table,
public.build_check_constraint_name(v_dummy_oid),
public.build_range_condition(v_dummy_oid, 'tbs_id', a_tbs_id, a_tbs_id + 1));
Потом дёргается обновление списка партиций в кэше с помощью
public.set_enable_parent(v_table.oid, false);
Скорее всего после этого, либо после коммита этой сессии возникает ошибка.
Вопросы:
- Может быть эта ошибка уже исправлена Вами в ходе:
Fixed incorrect usage of memcpy() in start_bgworker(); ?
Мы, к сожалению, не тестировали версию 1.4.11 и выше и не можем сказать исправлена она там или нет. - Если это не поправлено, то достаточно ли Вам предоствленной информации? Или нужны более подробные дампы?
Как их собрать, возможно ли это без ущерба производительности? Баг очень редкий и его вопроизвести в тестовой среде не получится.
С уважением, Николай.