[PATCH] Report the query string that caused a memory error under Valgrind

Поиск
Список
Период
Сортировка
Искать
От
Onur Tirtir
Тема
[PATCH] Report the query string that caused a memory error under Valgrind
Дата
Msg-id
AM9PR83MB0498531E804DC8DF8CFF0E8FE9D09@AM9PR83MB0498.EURPRD83.prod.outlook.com
Список
Дерево обсуждения
[PATCH] Report the query string that caused a memory error under Valgrind Onur Tirtir <Onur.Tirtir@microsoft.com>
Re: [PATCH] Report the query string that caused a memory error under Valgrind Peter Eisentraut <peter.eisentraut@enterprisedb.com>
RE: [EXTERNAL] Re: [PATCH] Report the query string that caused a memory error under Valgrind Onur Tirtir <Onur.Tirtir@microsoft.com>
Re: [EXTERNAL] Re: [PATCH] Report the query string that caused a memory error under Valgrind Tom Lane <tgl@sss.pgh.pa.us>
RE: [EXTERNAL] Re: [PATCH] Report the query string that caused a memory error under Valgrind Onur Tirtir <Onur.Tirtir@microsoft.com>
Re: [EXTERNAL] Re: [PATCH] Report the query string that caused a memory error under Valgrind Tom Lane <tgl@sss.pgh.pa.us>

We use Valgrind --together with the suppression file provided in Postgres repo-- to test Citus extension against memory errors.

We replace /bin/postgres executable with a simple bash script that executes the original postgres executable under Valgrind and then we run our usual regression tests.

However, it is quite hard to understand which query caused a memory error in the stack traces that has been dumped into valgrind logfile.

 

For this reason, we propose the attached patch to allow Valgrind to report the query string that caused a memory error right after the relevant stack trace.

I belive this would not only be useful for Citus but also for Postgres and other extensions in their valgrind-testing process.

 

An example piece of valgrind test output for a memory error found in Citus is as follows:

 

==67222== VALGRINDERROR-BEGIN

==67222== Invalid write of size 8

==67222==    at 0x7A6F040: dlist_delete (home/pguser/postgres-installation/include/postgresql/server/lib/ilist.h:360)

==67222==    by 0x7A6F040: ResetRemoteTransaction (home/pguser/citus/src/backend/distributed/transaction/remote_transaction.c:872)

==67222==    by 0x79CF606: AfterXactHostConnectionHandling (home/pguser/citus/src/backend/distributed/connection/connection_management.c:1468)

==67222==    by 0x79CF65E: AfterXactConnectionHandling (home/pguser/citus/src/backend/distributed/connection/connection_management.c:175)

==67222==    by 0x7A6FEDA: CoordinatedTransactionCallback (home/pguser/citus/src/backend/distributed/transaction/transaction_management.c:309)

==67222==    by 0x544F30: CallXactCallbacks (home/pguser/postgres-source/postgresql-15.1/src/backend/access/transam/xact.c:3661)

==67222==    by 0x548E12: CommitTransaction (home/pguser/postgres-source/postgresql-15.1/src/backend/access/transam/xact.c:2298)

==67222==    by 0x549BBC: CommitTransactionCommand (home/pguser/postgres-source/postgresql-15.1/src/backend/access/transam/xact.c:3048)

==67222==    by 0x832C30: finish_xact_command (home/pguser/postgres-source/postgresql-15.1/src/backend/tcop/postgres.c:2750)

==67222==    by 0x8352AF: exec_simple_query (home/pguser/postgres-source/postgresql-15.1/src/backend/tcop/postgres.c:1279)

==67222==    by 0x837312: PostgresMain (home/pguser/postgres-source/postgresql-15.1/src/backend/tcop/postgres.c:4595)

==67222==    by 0x79F7B5: BackendRun (home/pguser/postgres-source/postgresql-15.1/src/backend/postmaster/postmaster.c:4504)

==67222==    by 0x7A24E6: BackendStartup (home/pguser/postgres-source/postgresql-15.1/src/backend/postmaster/postmaster.c:4232)

==67222==  Address 0x7486378 is 3,512 bytes inside a recently re-allocated block of size 8,192 alloc'd

==67222==    at 0x484486F: malloc (builddir/build/BUILD/valgrind-3.19.0/coregrind/m_replacemalloc/vg_replace_malloc.c:381)

==67222==    by 0x98B6EB: AllocSetContextCreateInternal (home/pguser/postgres-source/postgresql-15.1/src/backend/utils/mmgr/aset.c:469)

==67222==    by 0x79CEABA: InitializeConnectionManagement (home/pguser/citus/src/backend/distributed/connection/connection_management.c:107)

==67222==    by 0x799FE9F: _PG_init (home/pguser/citus/src/backend/distributed/shared_library_init.c:464)

==67222==    by 0x96AE6B: internal_load_library (home/pguser/postgres-source/postgresql-15.1/src/backend/utils/fmgr/dfmgr.c:289)

==67222==    by 0x96B09A: load_file (home/pguser/postgres-source/postgresql-15.1/src/backend/utils/fmgr/dfmgr.c:156)

==67222==    by 0x973122: load_libraries (home/pguser/postgres-source/postgresql-15.1/src/backend/utils/init/miscinit.c:1668)

==67222==    by 0x974680: process_shared_preload_libraries (home/pguser/postgres-source/postgresql-15.1/src/backend/utils/init/miscinit.c:1686)

==67222==    by 0x7A336A: PostmasterMain (home/pguser/postgres-source/postgresql-15.1/src/backend/postmaster/postmaster.c:1026)

==67222==    by 0x6F303C: main (home/pguser/postgres-source/postgresql-15.1/src/backend/main/main.c:202)

==67222==

==67222== VALGRINDERROR-END

**67222** The query for which valgrind reported a memory error was: REFRESH MATERIALIZED VIEW other_schema.mat_view;

В списке pgsql-hackers по дате отправления
От: Robert Haas
Дата:
От: Melanie Plageman
Дата:
FAQ