Skip to content

t/op/magic.t failing on AlmaLinux 8. #19690

@toddr

Description

@toddr

I built using:

./Configure -des -Dusedevel -Duseithreads -Doptimize="-O2 -pipe -fstack-protector -fno-strict-aliasing"

The verbose output is a little hard to read but...

t/op/magic ... 1..208
ok 1 - *SIG appears to be defined at the outset
ok 2 - *^OPEN appears to be defined at the outset
ok 3 - *^TAINT appears to be defined at the outset
...
ok 99 - Assigning $^I does not clobber $^O
ok 100 - test $^P = 0
ok 101 - test $^P = 1
ok 102 - Set process name through argv[0] ( 136098 pts/0    S+     0:00 Good Morning, Dave                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           )
ok 103 - Set process name through prctl() ( 136098 pts/0    S+     0:00 Good Morning, D)
ok 104 - compare $0 to UTF8-flagged
ok 105 - compare $0 to non-UTF8-flagged
# Failed test 106 - /proc cmdline shows as expected (compare to UTF8-flagged) at op/magic.t line 480
#      got "?\000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           "
not ok 106 - /proc cmdline shows as expected (compare to UTF8-flagged)
# expected "?"
# Failed test 107 - /proc cmdline shows as expected (compare to non-UTF8-flagged) at op/magic.t line 482
#      got "?\000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           "
# expected "?"
# Failed test 111 - .. and /proc cmdline shows that at op/magic.t line 504
#      got "hahaĀhoho\000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "
# expected "hahaĀhoho"
FAILED at test 106
Failed 1 test out of 1, 0.00% okay.
	op/magic.t
### Since not all tests were successful, you may want to run some of
### them individually and examine any diagnostic messages they produce.
### See the INSTALL document's section on "make test".
### You may have to set your dynamic library search path,
### LD_LIBRARY_PATH, to point to the build directory:
###   setenv LD_LIBRARY_PATH `pwd`:$LD_LIBRARY_PATH; cd t; ./perl harness
###   LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd t; ./perl harness
###   export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; cd t; ./perl harness
### for csh-style shells, like tcsh; or for traditional/modern
### Bourne-style shells, like bash, ksh, and zsh, respectively.
Elapsed: 3 sec
u=0.01  s=0.00  cu=0.18  cs=0.18  scripts=1  tests=208

I have bisected the failure to:

2d3b3561a39bb17fd6003fb262f52b3bc800770e is the first bad commit
commit 2d3b3561a39bb17fd6003fb262f52b3bc800770e
Author: Felipe Gasper <felipe@felipegasper.com>
Date:   Fri Jan 7 14:28:39 2022 -0500

    Properly handle UTF8-flagged strings when assigning to $0.
    
    Issue #19331: Use of SvPV_const and SvPV_force in S_set_dollarzero()
    wrote the PV internals directly to argv, which causes an improper UTF-8
    encode if the SV is UTF8-flagged/upgraded.
    
    This fixes that doing a downgrade prior to those SvPV* calls. If the
    string contains wide characters (and thus cannot be downgraded) a
    warning is thrown; this mirrors preexisting behavior with %ENV, print,
    and other output channels that convert Perl SVs to bytes.
    
    The relevant documentation is also updated.

 mg.c              | 10 +++++++
 pod/perldelta.pod |  7 +++++
 pod/perlvar.pod   |  4 +++
 t/op/magic.t      | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions