Re: [HACKERS] src/test/subscription/t/002_types.pl hanging onparticular environment
От | Andres Freund |
---|---|
Тема | Re: [HACKERS] src/test/subscription/t/002_types.pl hanging onparticular environment |
Дата | |
Msg-id | 20170919233830.mke36y3in5dbn7ah@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Re: [HACKERS] src/test/subscription/t/002_types.pl hanging on particular environment (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
On 2017-09-19 17:20:49 -0400, Tom Lane wrote: > Thomas Munro <thomas.munro@enterprisedb.com> writes: > > This type of violent shutdown seems to be associated with occasional > > corruption of .gcda files (the files output by GCC coverage builds). > > The symptoms are that if you use --enable-coverage and make > > check-world you'll very occasionally get a spurious TAP test failure > > like this: > > > # Failed test 'pg_ctl start: no stderr' > > # at /home/travis/build/postgresql-cfbot/postgresql/src/bin/pg_ctl/../../../src/test/perl/TestLib.pm > > line 301. > > # got: > > 'profiling:/home/travis/build/postgresql-cfbot/postgresql/src/backend/nodes/copyfuncs.gcda:Merge > > mismatch for function 94 > > # ' > > # expected: '' > > > I'm not sure of the exact mechanism though. GCC supplies a function > > __gcov_flush() that normally runs at exit or execve, so if you're > > killed without reaching those you don't get any .gcda data. Perhaps > > we are in exit (or fork/exec) partway through writing out coverage > > data in __gcov_flush(), and at that moment we are killed. Then a > > subsequent run of instrumented code will find the half-written file > > and print the "Merge mismatch" message. Note that newer gcc's (7+) have a feature to avoid such corruption, by renaming the files atomically. Possibly the fix here is to just upgrade to such a version... Greetings, Andres Freund -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
В списке pgsql-hackers по дате отправления: