This is a bug report for perl from zefram@fysh.org, generated with the help of perlbug 1.43 running under perl 5.37.9. ----------------------------------------------------------------- <!--[Please describe your issue here]--> Combining the experimental core class system with experimental refaliasing\, here\'s an attempt to replace a field variable\: ``` $ perl5.37.9 -Mexperimental=refaliasing,class -lwe 'class Foo { field $aa; method bb { print \$aa; } method cc { print \$aa; \$aa = \(my$x); print \$aa; } } $x = Foo->new; $x->bb; $x->cc; $x->bb;' SCALAR(0x56013fda95f0) SCALAR(0x56013fda95f0) SCALAR(0x56013febfd80) UNKNOWN(0x56013fda95f0) zsh: segmentation fault perl5.37.9 -Mexperimental=refaliasing,class -lwe ``` How this ought to behave is up for debate\. Maybe the replacement operation should croak\, maybe it should affect the pad of the running method without affecting the field variable\, and maybe it should replace the field variable in the object representation\. But it certainly shouldn\'t do the above\, prematurely freeing an SV and then segfaulting\. It looks to me like this is doing a replacement in the pad but getting confused about the refcounting of the pad entry\. <!--[Please do not change anything below this line]--> <!------------------------------------------------------------------- --> --- **Flags** - category=core - severity=medium --- **Perl configuration** ``` Site configuration information for perl 5.37.9: Configured by zefram at Wed Mar 1 02:31:43 GMT 2023. Summary of my perl5 (revision 5 version 37 subversion 9) configuration: Platform: osname=linux osvers=5.10.0-21-amd64 archname=x86_64-linux-thread-multi uname='linux barba.rous.org 5.10.0-21-amd64 #1 smp debian 5.10.162-1 (2023-01-21) x86_64 gnulinux ' config_args='-des -Dprefix=/home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52 -Duselargefiles -Dusethreads -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dusedevel -Uversiononly -Ui_db' hint=recommended useposix=true d_sigaction=define useithreads=define usemultiplicity=define use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define Compiler: cc='cc' ccflags ='-D_REENTRANT -D_GNU_SOURCE -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='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include' ccversion='' gccversion='10.2.1 20210110' 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/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib libs=-lpthread -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc libc=libc-2.31.so so=so useshrplib=true libperl=libperl.so gnulibc_version='2.31' Dynamic Linking: dlsrc=dl_dlopen.xs dlext=so d_dlsymun=undef ccdlflags='-Wl,-E -Wl,-rpath,/home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/5.37.9/x86_64-linux-thread-multi/CORE' cccdlflags='-fPIC' lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong' --- @INC for perl 5.37.9: /home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/site_perl/5.37.9/x86_64-linux-thread-multi /home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/site_perl/5.37.9 /home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/5.37.9/x86_64-linux-thread-multi /home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/lib/5.37.9 --- Environment for perl 5.37.9: HOME=/home/zefram LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/zefram/usr/perl/perl_install/perl-5.37.9-i64-f52/bin:/home/zefram/usr/perl/util:/home/zefram/pub/x86_64-unknown-linux-gnu/bin:/home/zefram/pub/common/bin:/usr/bin:/bin:/usr/local/bin:/usr/games PERL_BADLANG (unset) SHELL=/usr/bin/zsh ```Thread Next