Repository navigation
BBC: Blead Breaks IO::ExplicitHandle #23676
Copy link
Copy link
Closed
Labels
BBCBlead Breaks CPAN - changes in blead broke a cpan module(s)Blead Breaks CPAN - changes in blead broke a cpan module(s)Release Blockerbreaks-with-gcc-14CPAN breakage reported on perls compiled with gcc-14CPAN breakage reported on perls compiled with gcc-14
Description
This is a bug report for perl from "Carlos Guevara" carlos@carlosguevara.com,
generated with the help of perlbug 1.43 running under perl 5.43.3.
BBC: Blead Breaks IO::ExplicitHandle
Please see https://fast2-matrix.cpantesters.org/?dist=IO-ExplicitHandle-0.002
Flags
- category=core
- severity=low
Perl configuration
Site configuration information for perl 5.43.3:
Configured by cpan at Wed Sep 3 02:37:28 EDT 2025.
Summary of my perl5 (revision 5 version 43 subversion 3) configuration:
Commit id: bb13a224451c8fbf0b9600bbc3d58cad55b3aec9
Platform:
osname=linux
osvers=6.12.0-55.29.1.el10_0.x86_64
archname=x86_64-linux
uname='linux cjg-rhel10 6.12.0-55.29.1.el10_0.x86_64 #1 smp preempt_dynamic mon aug 18 05:37:24 edt 2025 x86_64 gnulinux '
config_args='-des -Dprefix=/home/cpan/bin/perl -Dscriptdir=/home/cpan/bin/perl/bin -Dusedevel -Duse64bitall'
hint=recommended
useposix=true
d_sigaction=define
useithreads=undef
usemultiplicity=undef
use64bitint=define
use64bitall=define
uselongdouble=undef
usemymalloc=n
default_inc_excludes_dot=define
Compiler:
cc='cc'
ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'
optimize='-O2'
cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
ccversion=''
gccversion='14.2.1 20250110 (Red Hat 14.2.1-7)'
gccosandvers=''
intsize=4
longsize=8
ptrsize=8
doublesize=8
byteorder=12345678
doublekind=3
d_longlong=define
longlongsize=8
d_longdbl=define
longdblsize=16
longdblkind=3
ivtype='long'
ivsize=8
nvtype='double'
nvsize=8
Off_t='off_t'
lseeksize=8
alignbytes=8
prototype=define
Linker and Libraries:
ld='cc'
ldflags =' -fstack-protector-strong -L/usr/local/lib'
libpth=/usr/local/lib /usr/lib /usr/lib64 /usr/local/lib64
libs=-lpthread -ldb -ldl -lm -lcrypt -lutil -lc
perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc
libc=/lib/../lib64/libc.so.6
so=so
useshrplib=false
libperl=libperl.a
gnulibc_version='2.39'
Dynamic Linking:
dlsrc=dl_dlopen.xs
dlext=so
d_dlsymun=undef
ccdlflags='-Wl,-E'
cccdlflags='-fPIC'
lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'
---
@INC for perl 5.43.3:
/home/cpan/bin/perl/lib/site_perl/5.43.3/x86_64-linux
/home/cpan/bin/perl/lib/site_perl/5.43.3
/home/cpan/bin/perl/lib/5.43.3/x86_64-linux
/home/cpan/bin/perl/lib/5.43.3
---
Environment for perl 5.43.3:
HOME=/home/cpan
LANG=en_US.UTF-8
LANGUAGE (unset)
LC_ALL=C
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/home/cpan/bin/perl/bin:/home/cpan/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
PERL_BADLANG (unset)
SHELL=/bin/bash
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
BBCBlead Breaks CPAN - changes in blead broke a cpan module(s)Blead Breaks CPAN - changes in blead broke a cpan module(s)Release Blockerbreaks-with-gcc-14CPAN breakage reported on perls compiled with gcc-14CPAN breakage reported on perls compiled with gcc-14
Activity
jkeenan commentedon Sep 3, 2025
@cjg-cguevara,
Just now I successfully installed IO::ExplicitHandle against blead ((v5.43.2-209-gbb13a22445) on both Linux and FreeBSD.
Looking at the matrix, these failures appear to be limited to certain Linux and Solaris rigs. I see 'void' in the hostname on one of your Linux failure reports. Is that "Void Linux" -- a platform which has given us problems before?
cjg-cguevara commentedon Sep 3, 2025
The failure only seems to appear when compiling with GCC 14.
jkeenan commentedon Sep 4, 2025
Hmm, I seem to recall previous bug reports that involved that specific version of
gcc.jkeenan commentedon Sep 4, 2025
I can't confirm the "only" but you're correct that it appears when compiling with gcc-14. See: https://www.cpantesters.org/cpan/report/62b4ddf0-8930-11f0-97d5-cf0c662e10e0
I have created a new label "breaks-with-gcc-14" to track such BBCs. I suspect that our response will simply be, "Don't compile with that version of
gcc.cjg-cguevara commentedon Sep 4, 2025
Probably related:
Devel-CallParser-0.002
jkeenan commentedon Sep 4, 2025
Probably so; I just attempted to install it against the same gcc-14-built perl I mentioned earlier and it failed. But I should note that Devel-CallParser has a very mixed history on CPANtesters so that I'm reluctant to attribute its current problems entirely to gcc-14.
cjg-cguevara commentedon Sep 5, 2025
Probably related:
Devel-GoFaster-0.001
Leont commentedon Sep 6, 2025
It's trying to use a non-API Perl function (
qerror), which is C23 is a bit more strict about because it no longer allows for calling undeclared functions.Different symbol (
op_clear), same sort of problem yes.tonycoz commentedon Oct 13, 2025
Also Sub::StrictDecl
tonycoz commentedon Oct 13, 2025
Should these functions be API?
Extended parsing and OP tree manipulation have been on CPAN for a very long time and both qerror() and op_clear() are both useful there.
Leont commentedon Mar 16, 2026
They've been out so long that we might as well, though I don't particularly like the name
qerror.Leont commentedon Mar 30, 2026
Do I understand this right that this is a gcc-breaks-cpan and not blead-breaks-cpan?
tonycoz commentedon Mar 30, 2026
It is "ignoring the API boundary" breaks CPAN.
PR #24335 exposes qerror() and op_clear() to the API which fixes IO::ExplicitHandle, Devel::GoFaster and Devel::CallParser and makes Data::Alias less sinful (it #defines PERL_CORE)
tonycoz commentedon Mar 30, 2026
Actually, there's a bit more to that,
proto.hunless you definePERL_EXTorPERL_COREjkeenan commentedon Mar 30, 2026
FWIW, I did some re-testing on this ticket. On Ubuntu Linux 24.04-LTS I configured an unthreaded build at today's HEAD (9c7db06) using
gcc-14as the C-compiler. (gcc-13is the default on this machine). I then attempted to install all the modules mentioned in this ticket so far.Data::Alias was the only one to succeed. Hence, Data::Alias should not be labeled "breaks-with-gcc-14."
gcc-14 Compilation:
IO::ExplicitHandle failed during
make:Devel::CallParser similarly failed during
make:Devel::GoFaster
Sub::StrictDecl
clang-18 Compilation
On the same machine I then compiled an unthreaded perl using
clang-18as the compiler. (This was done 1 commit earlier, which shouldn't make any difference with respect to the installation of these modules, as HEAD was a documentation-only commit.)IO::ExplicitHandle failed, albeit with slightly different error messages.
Devel::CallParser likewise.
Devel::GoFaster likewise.
Sub::StrictDecl likewise.
Data::Alias tested and installed successfully.
jkeenan commentedon Mar 30, 2026
To further confuse matters (and me), I then built an unthreaded perl at a recent commit using my default C-compiler on this machine,
gcc-13.All 5 modules cited built (albeit with warnings), then tested and installed successfully.
tonycoz commentedon Mar 31, 2026
Yeah, Data::Alias cheats, it claims to be part of core (it defines the PERL_CORE symbol.)
ap commentedon Apr 13, 2026
We didn’t break this ourselves, but nevertheless we don’t want to leave this broken any longer than we can help it.
jkeenan commentedon Apr 15, 2026
Just now I conducted some testing of @tonycoz's pull request addressing this issue: #24335 (comment). Results favorable. However, since this is a case where (IIUC) using specific versions of specific C-compilers was the ultimate source of the problem, we don't have clear criteria for evaluating the robustness of any pull request addressing the problem. I suspect we'll need some level of discussion of that before we can deem this ticket closable.