Perl 5.18 breaks pl/perl regression tests?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-hackers(at)postgreSQL(dot)org
Subject: Perl 5.18 breaks pl/perl regression tests?
Date: 2013-06-03 02:29:12
Message-ID: 2825.1370226552@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Buildfarm member anchovy has been failing the pl/perl regression tests
for the last 11 days. Since configure is helpful enough to print the
version number of the Perl it finds, we can see that anchovy's Perl
version was 5.16.3 in its last successful run, but it's been using
5.18.0 in all the failed runs. The output differences are:

*** /home/pgfarm/build/HEAD/pgsql.702/src/pl/plperl/expected/plperl.out Thu May 23 00:23:22 2013
--- /home/pgfarm/build/HEAD/pgsql.702/src/pl/plperl/results/plperl.out Thu May 23 00:36:31 2013
***************
*** 627,633 ****
CONTEXT: PL/Perl anonymous code block
-- check that eval is allowed and eval'd restricted ops are caught
DO $$ eval q{chdir '.'}; warn "Caught: $@"; $$ LANGUAGE plperl;
! WARNING: Caught: 'chdir' trapped by operation mask at line 2.
CONTEXT: PL/Perl anonymous code block
-- check that compiling do (dofile opcode) is allowed
-- but that executing it for a file not already loaded (via require) dies
--- 627,633 ----
CONTEXT: PL/Perl anonymous code block
-- check that eval is allowed and eval'd restricted ops are caught
DO $$ eval q{chdir '.'}; warn "Caught: $@"; $$ LANGUAGE plperl;
! WARNING: Caught: 'chdir' trapped by operation mask at line 1.
CONTEXT: PL/Perl anonymous code block
-- check that compiling do (dofile opcode) is allowed
-- but that executing it for a file not already loaded (via require) dies

======================================================================

*** /home/pgfarm/build/HEAD/pgsql.702/src/pl/plperl/expected/plperl_init.out Thu May 23 00:23:22 2013
--- /home/pgfarm/build/HEAD/pgsql.702/src/pl/plperl/results/plperl_init.out Thu May 23 00:36:32 2013
***************
*** 9,14 ****
(1 row)

DO $$ warn 42 $$ language plperl;
! ERROR: 'system' trapped by operation mask at line 2.
CONTEXT: while executing plperl.on_plperl_init
PL/Perl anonymous code block
--- 9,14 ----
(1 row)

DO $$ warn 42 $$ language plperl;
! ERROR: 'system' trapped by operation mask at line 1.
CONTEXT: while executing plperl.on_plperl_init
PL/Perl anonymous code block

Now, maybe I'm missing something, but the actual outputs look saner than
the expected outputs --- surely, by any reasonable counting method,
those error locations are indeed in line 1 of the plperl code blocks.
So why do we have "line 2" in the expected output, and why are all the
other machines happy with that?

Can anyone else replicate this change of behavior? Is there anything
about it in the Perl release notes?

It looks quite a bit like somebody's fixed a line-counting bug inside
Perl, which may mean that we'll have to maintain two expected-output
files or else remove these particular test cases. Which would be
annoying.

regards, tom lane

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2013-06-03 04:55:25 Re: Perl 5.18 breaks pl/perl regression tests?
Previous Message Robert Haas 2013-06-02 22:20:30 Re: Vacuum, Freeze and Analyze: the big picture