5.8.3 RC1

3 views
Skip to first unread message

Nicholas Clark

unread,
Jan 7, 2004, 1:18:32 PM1/7/04
to perl5-...@perl.org
There may be trouble ahead,
But while there's music and moonlight,
And love and romance,
Let's face the music and dance.

Before the fiddlers have fled,
Before they ask us to pay the bill,
And while we still have that chance,
Let's face the music and dance.

Soon, we'll be without the moon,
Humming a different tune, and then,

There may be teardrops to shed,
So while there's music and moonlight,
And love and romance,
Let's face the music and dance.

Irving Berlin


Please test it thoroughly and find all the discords so that we can resolve
them before the public performance. Currently it's at

http://www.ccl4.org/~nick/P/perl-5.8.3-RC1.tar.bz2

(or s/bz2$/gz/ if you really want a 25% larger download.) Please don't
publicise that URL outside p5p - instead

ftp://ftp.cpan.org/pub/CPAN/authors/id/N/NW/NWCLARK/perl-5.8.3-RC1.tar.bz2

Once it's propagated round the CPAN mirrors I'll make an announcement
on use.perl

I'm interested in confirmation of binary compatibility between 5.8.3 and
modules compiled under previous 5.8.x releases, and anything which is a new
bug in 5.8.3, particularly if it breaks current modules on CPAN.

rsync ftp.linux.activestate.com::perl-5.8.x/

will be at RC1 for the next 16 hours or so.

If the only reports are of music, sweet music then I hope to release the
real thing in about 10 days.

Nicholas Clark

H.Merijn Brand

unread,
Jan 7, 2004, 2:53:55 PM1/7/04
to Nicholas Clark, Perl 5 Porters
On Wed 07 Jan 2004 19:18, Nicholas Clark <ni...@ccl4.org> wrote:
> Please test it thoroughly and find all the discords so that we can resolve
> them before the public performance. Currently it's at
>
> http://www.ccl4.org/~nick/P/perl-5.8.3-RC1.tar.bz2
>
> (or s/bz2$/gz/ if you really want a 25% larger download.) Please don't
> publicise that URL outside p5p - instead
>
> ftp://ftp.cpan.org/pub/CPAN/authors/id/N/NW/NWCLARK/perl-5.8.3-RC1.tar.bz2

ftp://ftp.cpan.org/pub/CPAN/authors/id/H/HM/HMBRAND/dor-5.8.3-rc1.diff

for matching defined-or patches (once PAUSE has uploaded the file)

Enjoy, Have FUN!

--
H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.8.0, & 5.9.x, and 806 on HP-UX 10.20 & 11.00, 11i,
AIX 4.3, SuSE 8.2, and Win2k. http://www.cmve.net/~merijn/
http://archives.develooper.com/daily...@perl.org/ per...@perl.org
send smoke reports to: smokers...@perl.org, QA: http://qa.perl.org

Robin Barker

unread,
Jan 7, 2004, 2:57:07 PM1/7/04
to Nicholas Clark, perl5-...@perl.org

All tests successful.
u=17.72 s=3.19 cu=1042.61 cs=88.31 scripts=777 tests=74019

I get the following warnings (with -Wall -Wno-unused):
the first isn't new, the second is.

Robin

Making MIME::Base64 (dynamic)
Writing Makefile for MIME::Base64
cp QuotedPrint.pm ../../../lib/MIME/QuotedPrint.pm
cp Base64.pm ../../../lib/MIME/Base64.pm
../../../miniperl "-I../../../lib" "-I../../../lib" \
../../../lib/ExtUtils/xsubpp -typemap
../../../lib/ExtUtils/typemap \
Base64.xs > Base64.xsc && mv Base64.xsc Base64.c
/opt/gcc/bin/gcc -c -fno-strict-aliasing -I/usr/local/include \
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wno-unused \
-DVERSION=\"2.21\" -DXS_VERSION=\"2.21\" -fPIC "-I../../.."
Base64.c
Base64.xs: In function `XS_MIME__QuotedPrint_encode_qp':
Base64.xs:298: warning: suggest parentheses around && within ||
Base64.xs: In function `XS_MIME__QuotedPrint_decode_qp':
Base64.xs:402: warning: subscript has type `char'
Base64.xs:402: warning: subscript has type `char'

Making Storable (dynamic)
Checking if your kit is complete...
Warning: the following files are missing in your kit:
t/Test/Builder.pm
t/Test/More.pm
t/Test/Simple.pm
Please inform the author.
Writing Makefile for Storable

-----Original Message-----
From: Nicholas Clark [mailto:ni...@ccl4.org]
Sent: 07 January 2004 18:19
To: perl5-...@perl.org
Subject: 5.8.3 RC1


There may be trouble ahead,
But while there's music and moonlight,
And love and romance,
Let's face the music and dance.

Before the fiddlers have fled,
Before they ask us to pay the bill,
And while we still have that chance,
Let's face the music and dance.

Soon, we'll be without the moon,
Humming a different tune, and then,

There may be teardrops to shed,
So while there's music and moonlight,
And love and romance,
Let's face the music and dance.

Irving Berlin


Please test it thoroughly and find all the discords so that we can
resolve
them before the public performance. Currently it's at

http://www.ccl4.org/~nick/P/perl-5.8.3-RC1.tar.bz2

(or s/bz2$/gz/ if you really want a 25% larger download.) Please don't
publicise that URL outside p5p - instead


ftp://ftp.cpan.org/pub/CPAN/authors/id/N/NW/NWCLARK/perl-5.8.3-RC1.tar.b
z2

Once it's propagated round the CPAN mirrors I'll make an announcement
on use.perl

I'm interested in confirmation of binary compatibility between 5.8.3 and
modules compiled under previous 5.8.x releases, and anything which is a
new
bug in 5.8.3, particularly if it breaks current modules on CPAN.

rsync ftp.linux.activestate.com::perl-5.8.x/

will be at RC1 for the next 16 hours or so.

If the only reports are of music, sweet music then I hope to release the
real thing in about 10 days.

Nicholas Clark

-------------------------------------------------------------------
This e-mail and any attachments may contain confidential and/or
privileged material; it is for the intended addressee(s) only.
If you are not a named addressee, you must not use, retain or
disclose such information.

NPL Management Ltd cannot guarantee that the e-mail or any
attachments are free from viruses.

NPL Management Ltd. Registered in England and Wales. No: 2937881
Registered Office: Teddington, Middlesex, United Kingdom TW11 0LW.
-------------------------------------------------------------------

Abe Timmerman

unread,
Jan 7, 2004, 3:13:27 PM1/7/04
to Nicholas Clark, perl5-...@perl.org
Op een druilerige winterdag (Wednesday 07 January 2004 19:18), schreef
Nicholas Clark:

> rsync ftp.linux.activestate.com::perl-5.8.x/
>
> will be at RC1 for the next 16 hours or so.
>
> If the only reports are of music, sweet music then I hope to release the
> real thing in about 10 days.

change 22080 doesn't do what it's supposed to and now "dmake utils" (required
by "make test") doesn't work anymore.

patch is on the way, (also for 22079 in blead)

Good luck,

Abe
--
We might as well document that in future sort() in scalar context *may*
make flying pigs in pink tutus spring forth from one's nostrils, too :-)
For 5.8.0 I'm happy just to document the current behaviour.
-- Jarkko Hietaniemi on p5p @ 2002-06-12

Alberto Manuel Brandão simões

unread,
Jan 7, 2004, 3:47:21 PM1/7/04
to Nicholas Clark, Perl 5 porters
All tests successful.
u=5.43 s=1.2 cu=223.43 cs=97.5 scripts=796 tests=78272

It seems not to have compiled DB_File, but that is, almost sure, my
fault :)

Best,
Alberto

Enache Adrian

unread,
Jan 7, 2004, 3:38:22 PM1/7/04
to perl5-...@perl.org
I'm confused: the 5.8.x Changes file seems to repeat itself.

$ grep -n 21982 Changes
498:[ 21982] By: nicholas on 2003/12/27 21:10:07
920:[ 21982] By: nicholas on 2003/12/27 21:10:07

Paul Green

unread,
Jan 7, 2004, 5:31:02 PM1/7/04
to Nicholas Clark, perl5-...@perl.org
Is this bad? Seen on the initial build from sources:

Making Storable (static)


Checking if your kit is complete...
Warning: the following files are missing in your kit:
t/Test/Builder.pm
t/Test/More.pm
t/Test/Simple.pm
Please inform the author.
Writing Makefile for Storable

...

but the build kept on going...


Thanks
PG
--
Paul Green, Senior Technical Consultant, Stratus Technologies.
Voice: +1 978-461-7557; FAX: +1 978-461-3610; Video on request.

Elizabeth Mattijsen

unread,
Jan 7, 2004, 6:03:06 PM1/7/04
to Nicholas Clark, perl5-...@perl.org
At 18:18 +0000 1/7/04, Nicholas Clark wrote:
>Please test it thoroughly and find all the discords so that we can resolve
>them before the public performance.

Bad news, I'm afraid.

ext/threads/shared/t/wait hangs on my Linux test box. It seems to be
related to the cond_timedwait test. Testing it seperately, I get:

# ./perl -Ilib ext/threads/shared/t/wait.t
1..90
ok 1 - cond_wait() present
ok 2 - cond_wait() prototype '\[$@%];\[$@%]'
ok 3 - cond_timedwait() present
ok 4 - cond_timedwait() prototype '\[$@%]$;\[$@%]'
ok 5 - Shared synchronization tests preparation
ok 6 - cond_wait [simple]: obtained initial lock
ok 7 - cond_wait [simple]: child before lock
ok 8 - cond_wait [simple]: child obtained lock
ok 9 - cond_wait [simple]: child signalled condition
ok 10 - cond_wait [simple]: condition obtained
ok 11 - cond_wait [repeat]: obtained initial lock
ok 12 - cond_wait [repeat]: child before lock
ok 13 - cond_wait [repeat]: child obtained lock
ok 14 - cond_wait [repeat]: child signalled condition
ok 15 - cond_wait [repeat]: condition obtained
ok 16 - cond_wait [twain]: obtained initial lock
ok 17 - cond_wait [twain]: child before lock
ok 18 - cond_wait [twain]: child obtained lock
ok 19 - cond_wait [twain]: child signalled condition
ok 20 - cond_wait [twain]: condition obtained
ok 21 - cond_timedwait [simple]: obtained initial lock
ok 22 - cond_timedwait [simple]: child before lock
ok 23 - cond_timedwait [simple]: child obtained lock
*hangs*

$ uname -a
Linux localhost 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686
i386 GNU/Linux

$ ./perl -Ilib -V
Summary of my perl5 (revision 5.0 version 8 subversion 3) configuration:
Platform:
osname=linux, osvers=2.4.20-8, archname=i686-linux-thread-multi
uname='linux cadier.hsyndicate.com 2.4.20-8 #1 thu mar 13
17:54:28 est 2003 i686 i686 i386 gnulinux '
config_args='-de -Dusethreads'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
optimize='-O3',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-fno-strict-aliasing -I/usr/local/include -I/usr/include/gdbm'
ccversion='', gccversion='3.2.2 20030222 (Red Hat Linux
3.2.2-5)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8,
Off_t='off_t', lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.3.2.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.3.2'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'


Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES
PERL_IMPLICIT_CONTEXT
Locally applied patches:
RC1
Built under linux
Compiled at Jan 7 2004 23:40:40
@INC:
lib
/usr/local/lib/perl5/5.8.3/i686-linux-thread-multi
/usr/local/lib/perl5/5.8.3
/usr/local/lib/perl5/site_perl/5.8.3/i686-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.8.3
/usr/local/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.8.2
/usr/local/lib/perl5/site_perl/5.8.1/i686-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.8.1
/usr/local/lib/perl5/site_perl/5.8.0/i686-linux-thread-multi
/usr/local/lib/perl5/site_perl/5.8.0
/usr/local/lib/perl5/site_perl/5.6.2
/usr/local/lib/perl5/site_perl

Liz

Abe Timmerman

unread,
Jan 7, 2004, 6:20:37 PM1/7/04
to Nicholas Clark, perl5-...@perl.org
Op een druilerige winterdag (Wednesday 07 January 2004 21:13), schreef Abe
Timmerman:

> Op een druilerige winterdag (Wednesday 07 January 2004 19:18), schreef

> change 22080 doesn't do what it's supposed to and now "dmake utils"


> (required by "make test") doesn't work anymore.
>
> patch is on the way, (also for 22079 in blead)

now attached (tested only for 5.8.3-RC1)


Good luck,

Abe
--
I'm not convinced. By setting up mock-ups you are not testing the
real thing: you are testing mock-ups. It's really emptying shotguns
at decoys and concluding that yup, we are eating duck tonight.
-- Jarkko Hietaniemi on p5p @ 2001-10-20

makefile.mk.patch58x
makefile.mk.patch59x

Nicholas Clark

unread,
Jan 7, 2004, 6:23:13 PM1/7/04
to Abe Timmerman, perl5-...@perl.org
On Thu, Jan 08, 2004 at 12:20:37AM +0100, Abe Timmerman wrote:
> Op een druilerige winterdag (Wednesday 07 January 2004 21:13), schreef Abe
> Timmerman:
>
> > Op een druilerige winterdag (Wednesday 07 January 2004 19:18), schreef
>
> > change 22080 doesn't do what it's supposed to and now "dmake utils"
> > (required by "make test") doesn't work anymore.
> >
> > patch is on the way, (also for 22079 in blead)
>
> now attached (tested only for 5.8.3-RC1)

Why didn't the version as was work?
To make that patch "work" you're going to need to patch pod/buildtoc to
understand the other format, or explain why I need to.
[I wanted those lines to be identical in the two Window makefiles]

Nicholas Clark

Elizabeth Mattijsen

unread,
Jan 7, 2004, 6:49:52 PM1/7/04
to Nicholas Clark, perl5-...@perl.org
At 18:18 +0000 1/7/04, Nicholas Clark wrote:
>Please test it thoroughly and find all the discords so that we can resolve
>them before the public performance.

This may be too thoroughly: during make install, I see this come by:

:
/usr/local/share/man/man1/h2xs.1
no documentation in utils/instmodsh
/usr/local/share/man/man1/libnetcfg.1
:

Liz

Elizabeth Mattijsen

unread,
Jan 7, 2004, 7:14:27 PM1/7/04
to Nicholas Clark, perl5-...@perl.org
At 18:18 +0000 1/7/04, Nicholas Clark wrote:
>Please test it thoroughly and find all the discords so that we can resolve
>them before the public performance.

Even still more bad news, I'm afraid:

Thread::Bless 0.05 test-suite crashes with 5.8.3-RC1. The valgrind traceback

$ valgrind perl5.8.3-threaded-debug -Ilib t/Bless03.t
==14814== Memcheck, a.k.a. Valgrind, a memory error detector for x86-linux.
==14814== Copyright (C) 2002-2003, and GNU GPL'd, by Julian Seward.
==14814== Using valgrind-2.0.0, a program supervision framework for x86-linux.
==14814== Copyright (C) 2000-2003, and GNU GPL'd, by Julian Seward.
==14814== Estimated CPU clock rate is 2816 MHz
==14814== For more details, rerun with: -v
==14814==
==14814== valgrind's libpthread.so: KLUDGED call to: pthread_cond_destroy
==14814== valgrind's libpthread.so: KLUDGED call to: pthread_cond_destroy
1..14
==14814== valgrind's libpthread.so: KLUDGED call to: siglongjmp
(cleanup handlers are ignored)
ok 1 - Without object going out of scope:
ok 2 - Check \# of destroys of WithoutDestroy
ok 3 - NoBless object going out of scope:
ok 4 - Check \# of destroys of NoBless
ok 5 - Threads with NoBless object:
ok 6 - Check \# of destroys of NoBless, with threads
ok 7 - WithDestroy object going out of scope:
ok 8 - Check \# of destroys of WithDestroy
ok 9 - Threads with WithDestroy object:
ok 10 - Check \# of destroys of WithDestroy, with threads
ok 11 - WithDestroyAll object going out of scope:
ok 12 - Check \# of destroys of WithDestroyAll
==14814== Invalid read of size 4
==14814== at 0x8116679: Perl_die_where (pp_ctl.c:1338)
==14814== by 0x80BECE6: Perl_vcroak (util.c:1195)
==14814== by 0x80BEE2E: Perl_croak (util.c:1243)
==14814== by 0x80E8BE0: S_sv_del_backref (sv.c:4921)
==14814== Address 0x0 is not stack'd, malloc'd or free'd
Segmentation fault


Adapting the relevant part of the test to:

=======================================================
$count = 0;
eval {
my $object = WithDestroyAll->new;
foreach (1..5) {
warn "start thread\n";
my $thread = threads->new( sub {warn "in thread\n"; 1} );
warn "thread started\n";
$thread->join;
warn "thread joined\n";
}
# threads->new( sub {warn "in thread\n"; 1} )->join foreach 1..5;
warn "threads started\n";
};
=======================================================

I get the following output:

=======================================================
start thread
in thread
thread started
thread joined
Segmentation fault
=======================================================

so I it looks like the problem occurs when the next iteration of the
foreach is taken.

This could well be the same / related to the bug that Dave Mitchell
described involving closures and threads.

Liz

Abe Timmerman

unread,
Jan 7, 2004, 7:56:01 PM1/7/04
to Nicholas Clark, perl5-...@perl.org
Op een druilerige winterdag (Thursday 08 January 2004 00:23), schreef Nicholas
Clark:

> On Thu, Jan 08, 2004 at 12:20:37AM +0100, Abe Timmerman wrote:
> > Op een druilerige winterdag (Wednesday 07 January 2004 21:13), schreef
> > Abe
> >
> > Timmerman:
> > > Op een druilerige winterdag (Wednesday 07 January 2004 19:18), schreef
> > >
> > > change 22080 doesn't do what it's supposed to and now "dmake utils"
> > > (required by "make test") doesn't work anymore.
> > >
> > > patch is on the way, (also for 22079 in blead)
> >
> > now attached (tested only for 5.8.3-RC1)
>
> Why didn't the version as was work?

Hmmm, dmake != nmake ?
it turnes out that the "cd ..\pod" didn't extend to the list of copy commands
that followed it (all lines in a "recipe" are executed on their own no
relation).

> To make that patch "work" you're going to need to patch pod/buildtoc to
> understand the other format, or explain why I need to.
> [I wanted those lines to be identical in the two Window makefiles]

Thank you for making me read the dmake manpages :-(
Grouped recipe-lines (with the square brackets) are fed as a block to a shell
so I hope your readmepods generating thing in pod/buildtoc will be happy
again:

This patch seems to work, but perhaps some more eyes should look at this...
(it's way past bedtime)

--- win32/makefile.mk.orig Wed Jan 7 22:57:51 2004
+++ win32/makefile.mk Thu Jan 8 01:35:53 2004
@@ -1126,6 +1126,7 @@
--libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse

utils: $(PERLEXE) $(X2P)
+[
cd ..\utils && $(MAKE) PERL=$(MINIPERL)
cd ..\pod
copy ..\vms\perlvms.pod ..\pod\perlvms.pod
@@ -1168,7 +1169,8 @@
copy perl583delta.pod perldelta.pod
$(MAKE) -f ..\win32\pod.mak converters
cd ..\lib && $(PERLEXE) lib_pm.PL
- $(PERLEXE) $(PL2BAT) $(UTILS)
+ cd ..\win32 &&$(PERLEXE) $(PL2BAT) $(UTILS)
+]

distclean: clean
-del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \

Good luck,

Abe
--
Rafael> Actually you're thinking aloud, here ?
Yes?
No?
Maybe?
-- Jarkko Hietaniemi on p5p @ 2003-02-17

Paul Green

unread,
Jan 7, 2004, 10:15:44 PM1/7/04
to Nicholas Clark, Perl 5 Porters (perl5-porters@perl.org)
I have built perl-5.8.3 RC1 on Stratus VOS Release 14.7.dev.dj. This is a
pre-release copy of the next release of VOS. I built it using the full
native build procedure (Configure and gmake). I also need to build it on a
few other VOS releases; I'll do that next.

This version of perl works pretty well. I see no reason to hold things up.

Perl 5.8.x (where x > 0) has been failing a few tests for a while now, but I
don't have the time to look into them. I'll try to look into this before we
get to 5.8.4. For the record, the failing tests are:

t/io/dup.............................FAILED at test 2
t/io/tell............................FAILED at test 28
t/op/pack............................FAILED at test 0
ext/Devel/Peek/t/Peek................FAILED at test 1
ext/Encode/t/enc_module..............FAILED at test 1
ext/IO/t/io_dup......................FAILED at test 2
lib/Net/Ping/t/450_service...........FAILED at test 8

Some, perhaps most, of these failures will no doubt turn out to be VOS POSIX
issues. The last time I delved deeply into similar problems, almost all of
them were our issues (this was in the weeks leading up to the release of
5.8.0).

Thanks
PG
--
Paul Green, Senior Technical Consultant,

Stratus Technologies, Maynard, MA USA

Nicholas Clark

unread,
Jan 8, 2004, 7:55:26 AM1/8/04
to Abe Timmerman, perl5-...@perl.org
On Thu, Jan 08, 2004 at 01:56:01AM +0100, Abe Timmerman wrote:
> Op een druilerige winterdag (Thursday 08 January 2004 00:23), schreef Nicholas
> Clark:
>
> > On Thu, Jan 08, 2004 at 12:20:37AM +0100, Abe Timmerman wrote:

> > > now attached (tested only for 5.8.3-RC1)
> >
> > Why didn't the version as was work?
>
> Hmmm, dmake != nmake ?
> it turnes out that the "cd ..\pod" didn't extend to the list of copy commands
> that followed it (all lines in a "recipe" are executed on their own no
> relation).

Whereas I guess that in nmake it does.

> > To make that patch "work" you're going to need to patch pod/buildtoc to
> > understand the other format, or explain why I need to.
> > [I wanted those lines to be identical in the two Window makefiles]

I can see another way of doing it - having copy ..\README... ..\pod\perl...
in both. This would work because in the nmake makefile the cwd at that point
is pod, so ..\pod is still the same directory. :-)

> Thank you for making me read the dmake manpages :-(

Sorry

> Grouped recipe-lines (with the square brackets) are fed as a block to a shell
> so I hope your readmepods generating thing in pod/buildtoc will be happy
> again:

They are happy with it.

> This patch seems to work, but perhaps some more eyes should look at this...
> (it's way past bedtime)

I've applied it as 22092
We have a few days to change our minds

Nicholas Clark

Gisle Aas

unread,
Jan 8, 2004, 8:29:22 AM1/8/04
to Robin Barker, Nicholas Clark, perl5-...@perl.org
Robin Barker <Robin....@npl.co.uk> writes:

> I get the following warnings (with -Wall -Wno-unused):
> the first isn't new, the second is.

I was not able to reproduce the "subscript has type `char'" warning
here but I still think this patch should fix it. This patch can be
applied in the perl tree with:

(cd ext/MIME/Base64 && patch -p4) <file

MIME-Base64-2.22 has been uploaded to CPAN as well.

Regards,
Gisle

> ../../../lib/ExtUtils/typemap \
> Base64.xs > Base64.xsc && mv Base64.xsc Base64.c
> /opt/gcc/bin/gcc -c -fno-strict-aliasing -I/usr/local/include \
> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wno-unused \
> -DVERSION=\"2.21\" -DXS_VERSION=\"2.21\" -fPIC "-I../../.."
> Base64.c
> Base64.xs: In function `XS_MIME__QuotedPrint_encode_qp':
> Base64.xs:298: warning: suggest parentheses around && within ||
> Base64.xs: In function `XS_MIME__QuotedPrint_decode_qp':
> Base64.xs:402: warning: subscript has type `char'
> Base64.xs:402: warning: subscript has type `char'

diff -u -r /tmp/tardiff-3931-1/MIME-Base64-2.21/ /tmp/tardiff-3931-2/MIME-Base64-2.22/
diff -u -r /tmp/tardiff-3931-1/MIME-Base64-2.21/Base64.pm /tmp/tardiff-3931-2/MIME-Base64-2.22/Base64.pm
--- /tmp/tardiff-3931-1/MIME-Base64-2.21/Base64.pm 2003-10-09 21:15:42.000000000 +0200
+++ /tmp/tardiff-3931-2/MIME-Base64-2.22/Base64.pm 2004-01-08 14:16:33.000000000 +0100
@@ -1,5 +1,5 @@
#
-# $Id: Base64.pm,v 2.34 2003/10/09 19:15:42 gisle Exp $
+# $Id: Base64.pm,v 2.35 2004/01/08 13:16:33 gisle Exp $

package MIME::Base64;

@@ -141,7 +141,7 @@
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw(encode_base64 decode_base64);

-$VERSION = '2.21';
+$VERSION = '2.22';

eval { bootstrap MIME::Base64 $VERSION; };
if ($@) {
diff -u -r /tmp/tardiff-3931-1/MIME-Base64-2.21/Base64.xs /tmp/tardiff-3931-2/MIME-Base64-2.22/Base64.xs
--- /tmp/tardiff-3931-1/MIME-Base64-2.21/Base64.xs 2003-10-09 21:16:32.000000000 +0200
+++ /tmp/tardiff-3931-2/MIME-Base64-2.22/Base64.xs 2004-01-08 14:15:06.000000000 +0100
@@ -1,4 +1,4 @@
-/* $Id: Base64.xs,v 1.38 2003/10/09 11:26:12 gisle Exp $
+/* $Id: Base64.xs,v 1.40 2004/01/08 13:15:06 gisle Exp $

Copyright 1997-2003 Gisle Aas

@@ -253,7 +253,7 @@

MODULE = MIME::Base64 PACKAGE = MIME::QuotedPrint

-#define qp_isplain(c) ((c) == '\t' || ((c) >= ' ' && (c) <= '~') && (c) != '=')
+#define qp_isplain(c) ((c) == '\t' || (((c) >= ' ' && (c) <= '~') && (c) != '='))

SV*
encode_qp(sv,...)
@@ -399,7 +399,7 @@
whitespace = 0;
}
if (*str == '=') {
- if ((str + 2) < end && isxdigit(str[1]) && isxdigit(str[2])) {
+ if ((str + 2) < end && isXDIGIT(str[1]) && isXDIGIT(str[2])) {
char buf[3];
str++;
buf[0] = *str++;
diff -u -r /tmp/tardiff-3931-1/MIME-Base64-2.21/Changes /tmp/tardiff-3931-2/MIME-Base64-2.22/Changes
--- /tmp/tardiff-3931-1/MIME-Base64-2.21/Changes 2003-10-09 21:07:22.000000000 +0200
+++ /tmp/tardiff-3931-2/MIME-Base64-2.22/Changes 2004-01-08 14:15:47.000000000 +0100
@@ -1,3 +1,11 @@
+2004-01-08 Gisle Aas <gi...@ActiveState.com>
+
+ Release 2.22
+
+ Fix 'gcc -Wall' complaints.
+
+
+
2003-10-09 Gisle Aas <gi...@ActiveState.com>

Release 2.21

Nicholas Clark

unread,
Jan 8, 2004, 8:32:27 AM1/8/04
to perl5-...@perl.org

You're quite correct - it does. Now fixed. Thanks for spotting this.
This seems to be a mistake on my part during my continued arguments with
Jarkko's updateChanges script.

Nicholas Clark

Paul Green

unread,
Jan 8, 2004, 8:48:57 AM1/8/04
to Nicholas Clark, Perl 5 Porters (perl5-porters@perl.org)
OK, here's an interesting bug that our VOS Standard C compiler caught. I
have seen this before; it is an errror that GCC passes over without comment.
No patch b/c I don't know which way is correct here... (I think it is also
possible that I've messed up my copy of config.h in the vos subdir. I only
see this when using the non-configure way of building things. But it used
to work...)

cc: hv.c
1984** 373: The function "S_hv_fetch_common" has been declared as internal
to
this program (i.e. static), yet defined as external; it will be
treated as though it were defined static.
1984** 874: The function "S_hv_delete_common" has been declared as internal
to
this program (i.e. static), yet defined as external; it will be
treated as though it were defined static.

Line 373 of hv.c:
HE *
S_hv_fetch_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
int flags, int action, SV *val, register U32 hash)
{

Line 874 of hv.c:
SV *
S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
int k_flags, I32 d_flags, U32 hash)
{

Line 1359 of proto.h:
STATIC SV* S_hv_delete_common(pTHX_ HV* tb, SV* key_sv, const char*
key, STRLEN klen, int k_flags, I32 d_flags, U32 hash);
STATIC HE* S_hv_fetch_common(pTHX_ HV* tb, SV* key_sv, const char* key,
STRLEN klen, int flags, int action, SV* val, U32 hash);

Gisle Aas

unread,
Jan 8, 2004, 9:20:18 AM1/8/04
to Robin Barker, Nicholas Clark, perl5-...@perl.org
Gisle Aas <gi...@ActiveState.com> writes:

> MIME-Base64-2.22 has been uploaded to CPAN as well.

Just as I uploaded 2.22 to CPAN I received a doc patch from Paul
Croome that I just to had to get out. So, I have now uploaded
MIME-Base64-2.23 to CPAN as well.

Included here is the patch to make perl's MIME-Base64 v2.23.

--Gisle


diff -u -r /tmp/tardiff-4151-1/MIME-Base64-2.21/ /tmp/tardiff-4151-2/MIME-Base64-2.23/
diff -u -r /tmp/tardiff-4151-1/MIME-Base64-2.21/Base64.pm /tmp/tardiff-4151-2/MIME-Base64-2.23/Base64.pm
--- /tmp/tardiff-4151-1/MIME-Base64-2.21/Base64.pm 2003-10-09 21:15:42.000000000 +0200
+++ /tmp/tardiff-4151-2/MIME-Base64-2.23/Base64.pm 2004-01-08 15:07:26.000000000 +0100


@@ -1,5 +1,5 @@
#
-# $Id: Base64.pm,v 2.34 2003/10/09 19:15:42 gisle Exp $

+# $Id: Base64.pm,v 2.37 2004/01/08 14:07:26 gisle Exp $

package MIME::Base64;

@@ -16,9 +16,9 @@

=head1 DESCRIPTION

-This module provides functions to encode and decode strings into the
-Base64 encoding specified in RFC 2045 - I<MIME (Multipurpose Internet
-Mail Extensions)>. The Base64 encoding is designed to represent
+This module provides functions to encode and decode strings into and from the
+base64 encoding specified in RFC 2045 - I<MIME (Multipurpose Internet
+Mail Extensions)>. The base64 encoding is designed to represent
arbitrary sequences of octets in a form that need not be humanly
readable. A 65-character subset ([A-Za-z0-9+/=]) of US-ASCII is used,
enabling 6 bits to be represented per printable character.
@@ -32,12 +32,12 @@
=item encode_base64($str, $eol);

Encode data by calling the encode_base64() function. The first
-argument is the string to encode. The second argument is the line
-ending sequence to use. It is optional and defaults to "\n". The
+argument is the string to encode. The second argument is the
+line-ending sequence to use. It is optional and defaults to "\n". The
returned encoded string is broken into lines of no more than 76
characters each and it will end with $eol unless it is empty. Pass an
empty string as second argument if you do not want the encoded string
-broken into lines.
+to be broken into lines.

=item decode_base64($str)

@@ -45,17 +45,17 @@
function takes a single argument which is the string to decode and
returns the decoded data.

-Any character not part of the 65-character base64 subset set is
-silently ignored. Characters occuring after a '=' padding character
+Any character not part of the 65-character base64 subset is
+silently ignored. Characters occurring after a '=' padding character
are never decoded.

If the length of the string to decode, after ignoring
-non-base64 chars, is not a multiple of 4 or padding occurs too early,
+non-base64 chars, is not a multiple of 4 or if padding occurs too early,
then a warning is generated if perl is running under C<-w>.

=back

-If you prefer not to import these routines into your namespace you can
+If you prefer not to import these routines into your namespace, you can
call them as:

use MIME::Base64 ();
@@ -64,7 +64,7 @@

=head1 DIAGNOSTICS

-The following warnings might be generated if perl is invoked with the
+The following warnings can be generated if perl is invoked with the
C<-w> switch:

=over 4
@@ -107,14 +107,14 @@

perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' <file

-Decoding does not need slurp mode if all the lines contains a multiple
-of 4 base64 chars:
+Decoding does not need slurp mode if every line contains a multiple
+of four base64 chars:

perl -MMIME::Base64 -ne 'print decode_base64($_)' <file

=head1 COPYRIGHT

-Copyright 1995-1999, 2001-2003 Gisle Aas.
+Copyright 1995-1999, 2001-2004 Gisle Aas.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -124,7 +124,7 @@
code posted to comp.lang.perl <3pd2lp$6...@wsinti07.win.tue.nl> by Hans
Mulder <ha...@wsinti07.win.tue.nl>

-The XS implementation use code from metamail. Copyright 1991 Bell
+The XS implementation uses code from metamail. Copyright 1991 Bell
Communications Research, Inc. (Bellcore)

=head1 SEE ALSO


@@ -141,7 +141,7 @@
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw(encode_base64 decode_base64);

-$VERSION = '2.21';

+$VERSION = '2.23';



eval { bootstrap MIME::Base64 $VERSION; };
if ($@) {

diff -u -r /tmp/tardiff-4151-1/MIME-Base64-2.21/Base64.xs /tmp/tardiff-4151-2/MIME-Base64-2.23/Base64.xs
--- /tmp/tardiff-4151-1/MIME-Base64-2.21/Base64.xs 2003-10-09 21:16:32.000000000 +0200
+++ /tmp/tardiff-4151-2/MIME-Base64-2.23/Base64.xs 2004-01-08 15:07:26.000000000 +0100
@@ -1,6 +1,6 @@


-/* $Id: Base64.xs,v 1.38 2003/10/09 11:26:12 gisle Exp $

+/* $Id: Base64.xs,v 1.41 2004/01/08 14:07:26 gisle Exp $

-Copyright 1997-2003 Gisle Aas
+Copyright 1997-2004 Gisle Aas

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.


@@ -253,7 +253,7 @@

MODULE = MIME::Base64 PACKAGE = MIME::QuotedPrint

-#define qp_isplain(c) ((c) == '\t' || ((c) >= ' ' && (c) <= '~') && (c) != '=')
+#define qp_isplain(c) ((c) == '\t' || (((c) >= ' ' && (c) <= '~') && (c) != '='))

SV*
encode_qp(sv,...)
@@ -399,7 +399,7 @@
whitespace = 0;
}
if (*str == '=') {
- if ((str + 2) < end && isxdigit(str[1]) && isxdigit(str[2])) {
+ if ((str + 2) < end && isXDIGIT(str[1]) && isXDIGIT(str[2])) {
char buf[3];
str++;
buf[0] = *str++;

diff -u -r /tmp/tardiff-4151-1/MIME-Base64-2.21/Changes /tmp/tardiff-4151-2/MIME-Base64-2.23/Changes
--- /tmp/tardiff-4151-1/MIME-Base64-2.21/Changes 2003-10-09 21:07:22.000000000 +0200
+++ /tmp/tardiff-4151-2/MIME-Base64-2.23/Changes 2004-01-08 15:05:52.000000000 +0100
@@ -1,3 +1,19 @@


+2004-01-08 Gisle Aas <gi...@ActiveState.com>
+

+ Release 2.23
+
+ Documentation fixes by Paul Croome <Paul....@softwareag.com>.
+
+
+


+2004-01-08 Gisle Aas <gi...@ActiveState.com>
+
+ Release 2.22
+
+ Fix 'gcc -Wall' complaints.
+
+
+
2003-10-09 Gisle Aas <gi...@ActiveState.com>

Release 2.21

diff -u -r /tmp/tardiff-4151-1/MIME-Base64-2.21/QuotedPrint.pm /tmp/tardiff-4151-2/MIME-Base64-2.23/QuotedPrint.pm
--- /tmp/tardiff-4151-1/MIME-Base64-2.21/QuotedPrint.pm 2003-10-09 21:04:29.000000000 +0200
+++ /tmp/tardiff-4151-2/MIME-Base64-2.23/QuotedPrint.pm 2004-01-08 15:07:26.000000000 +0100


@@ -1,5 +1,5 @@
#

-# $Id: QuotedPrint.pm,v 2.17 2003/10/09 19:04:29 gisle Exp $
+# $Id: QuotedPrint.pm,v 2.19 2004/01/08 14:07:26 gisle Exp $

package MIME::QuotedPrint;

@@ -16,12 +16,12 @@

=head1 DESCRIPTION

-This module provides functions to encode and decode strings into the
-Quoted-Printable encoding specified in RFC 2045 - I<MIME (Multipurpose
-Internet Mail Extensions)>. The Quoted-Printable encoding is intended
+This module provides functions to encode and decode strings into and from the
+quoted-printable encoding specified in RFC 2045 - I<MIME (Multipurpose
+Internet Mail Extensions)>. The quoted-printable encoding is intended
to represent data that largely consists of bytes that correspond to
-printable characters in the ASCII character set. Non-printable
-characters (as defined by english americans) are represented by a
+printable characters in the ASCII character set. Each non-printable
+character (as defined by English Americans) is represented by a
triplet consisting of the character "=" followed by two hexadecimal
digits.

@@ -33,30 +33,30 @@

=item encode_qp($str, $eol)

-This function will return an encoded version of the string given as
+This function returns an encoded version of the string given as
argument.

-The second argument is the line ending sequence to use. It is
-optional and defaults to "\n". Every occurence of "\n" will be
-replaced with this string and it will also be used for additional
+The second argument is the line-ending sequence to use. It is
+optional and defaults to "\n". Every occurrence of "\n" is
+replaced with this string, and it is also used for additional
"soft line breaks" to ensure that no line is longer than 76
characters. You might want to pass it as "\015\012" to produce data
-suitable external consumption. The string "\r\n" will produce the
+suitable for external consumption. The string "\r\n" produces the
same result on many platforms, but not all.

-An $eol of "" special. If passed no "soft line breaks" are introduced
+An $eol of "" (the empty string) is special. In this case, no "soft line breaks" are introduced
and any literal "\n" in the original data is encoded as well.

=item decode_qp($str);

-This function will return the plain text version of the string given
-as argument. The lines of the result will be "\n" terminated even it
+This function returns the plain text version of the string given
+as argument. The lines of the result are "\n" terminated, even if
the $str argument contains "\r\n" terminated lines.

=back


-If you prefer not to import these routines into your namespace you can
+If you prefer not to import these routines into your namespace, you can
call them as:

use MIME::QuotedPrint ();
@@ -64,8 +64,8 @@
$decoded = MIME::QuotedPrint::decode($encoded);

Perl v5.6 and better allow extended Unicode characters in strings.
-Such strings cannot be encoded directly as the quoted-printable
-encoding is only defined for bytes. The solution is to use the Encode
+Such strings cannot be encoded directly, as the quoted-printable
+encoding is only defined for single-byte characters. The solution is to use the Encode
module to select the byte encoding you want. For example:

use MIME::QuotedPrint qw(encode_qp);
@@ -76,7 +76,7 @@

=head1 COPYRIGHT

-Copyright 1995-1997,2002-2003 Gisle Aas.
+Copyright 1995-1997,2002-2004 Gisle Aas.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff -u -r /tmp/tardiff-4151-1/MIME-Base64-2.21/README /tmp/tardiff-4151-2/MIME-Base64-2.23/README
--- /tmp/tardiff-4151-1/MIME-Base64-2.21/README 2003-10-09 11:47:46.000000000 +0200
+++ /tmp/tardiff-4151-2/MIME-Base64-2.23/README 2004-01-08 15:02:54.000000000 +0100
@@ -2,14 +2,14 @@
encoder/decoder. These encoding methods are specified in RFC 2045 -
MIME (Multipurpose Internet Mail Extensions).

-The Base64 encoding is designed to represent arbitrary sequences of
+The base64 encoding is designed to represent arbitrary sequences of
octets in a form that need not be humanly readable. A 65-character
subset ([A-Za-z0-9+/=]) of US-ASCII is used, enabling 6 bits to be
represented per printable character.

The quoted-printable encoding is intended to represent data that
largely consists of bytes that correspond to printable characters in
-the ASCII character set. Non-printable characters are represented by
+the ASCII character set. Each non-printable character is represented by
a triplet consisting of the character "=" followed by two hexadecimal
digits.

@@ -26,7 +26,7 @@
file before running 'perl Makefile.PL' and everything should work the same,
although encoding and decoding will be much slower.

-Copyright 1995-1999,2001-2003 Gisle Aas <gi...@ActiveState.com>
+Copyright 1995-1999,2001-2004 Gisle Aas <gi...@ActiveState.com>

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

Nicholas Clark

unread,
Jan 8, 2004, 11:03:32 AM1/8/04
to Elizabeth Mattijsen, perl5-...@perl.org

I can't replicate this on x86 Linux (Debian)
[which you have to be using, given that you give a valgrind run]
What am I doing wrong?
I take it that this is new bug with 5.8.3, and isn't present with 5.8.2?

Nicholas Clark

Elizabeth Mattijsen

unread,
Jan 8, 2004, 11:13:43 AM1/8/04
to Nicholas Clark, perl5-...@perl.org
At 16:03 +0000 1/8/04, Nicholas Clark wrote:
>I can't replicate this on x86 Linux (Debian)

I'm on RedHat, I think 9 (what's the best way to check this?)


>[which you have to be using, given that you give a valgrind run]
>What am I doing wrong?
>I take it that this is new bug with 5.8.3, and isn't present with 5.8.2?

Indeed. Although 5.8.2 had its own share of problems. This is the
test output under 5.8.2: all tests are successful, but there is a lot
of noise:

$ perl5.8.2-threaded Makefile.PL
Writing Makefile for Thread::Bless
$ make test
PERL_DL_NONLAZY=1 /usr/local/bin/perl5.8.2-threaded
"-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib',
'blib/arch')" t/*.t
t/Bless01....ok 10/16Attempt to free unreferenced scalar: SV
0x832c6d8 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c6d8 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c6d8 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c6d8 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c6d8 during global destruction.
t/Bless01....ok 14/16Attempt to free unreferenced scalar: SV
0x832f990 during global destruction.
Attempt to free unreferenced scalar: SV 0x832f990 during global destruction.
Attempt to free unreferenced scalar: SV 0x832f990 during global destruction.
Attempt to free unreferenced scalar: SV 0x832f990 during global destruction.
Attempt to free unreferenced scalar: SV 0x832f990 during global destruction.
t/Bless01....ok
t/Bless02....ok 5/15Attempt to free unreferenced scalar: SV 0x830d33c
during global destruction.
Attempt to free unreferenced scalar: SV 0x832d89c during global destruction.
Attempt to free unreferenced scalar: SV 0x832d89c during global destruction.
Attempt to free unreferenced scalar: SV 0x832d89c during global destruction.
Attempt to free unreferenced scalar: SV 0x832d89c during global destruction.
t/Bless02....ok 9/15Attempt to free unreferenced scalar: SV 0x82c1e54
during global destruction.
Attempt to free unreferenced scalar: SV 0x82c1e54 during global destruction.
Attempt to free unreferenced scalar: SV 0x82c1e54 during global destruction.
Attempt to free unreferenced scalar: SV 0x82c1e54 during global destruction.
Attempt to free unreferenced scalar: SV 0x82c1e54 during global destruction.
t/Bless02....ok 13/15Attempt to free unreferenced scalar: SV
0x82c2b3c during global destruction.
Attempt to free unreferenced scalar: SV 0x82c2b3c during global destruction.
Attempt to free unreferenced scalar: SV 0x82c2b3c during global destruction.
Attempt to free unreferenced scalar: SV 0x82c2b3c during global destruction.
Attempt to free unreferenced scalar: SV 0x82c2b3c during global destruction.
t/Bless02....ok
t/Bless03....ok 8/14Attempt to free unreferenced scalar: SV 0x82dd7f8
during global destruction.
Attempt to free unreferenced scalar: SV 0x82dd7f8 during global destruction.
Attempt to free unreferenced scalar: SV 0x82dd7f8 during global destruction.
Attempt to free unreferenced scalar: SV 0x82dd7f8 during global destruction.
Attempt to free unreferenced scalar: SV 0x82dd7f8 during global destruction.


start thread
in thread
thread started

t/Bless03....ok 12/14thread joined
Attempt to free unreferenced scalar: SV 0x82e033c during global destruction.


start thread
in thread
thread started
thread joined

Attempt to free unreferenced scalar: SV 0x82e033c during global destruction.


start thread
in thread
thread started
thread joined

Attempt to free unreferenced scalar: SV 0x82e033c during global destruction.


start thread
in thread
thread started
thread joined

Attempt to free unreferenced scalar: SV 0x82e033c during global destruction.


start thread
in thread
thread started
thread joined

Attempt to free unreferenced scalar: SV 0x82e033c during global destruction.
threads started
t/Bless03....ok
t/Bless04....ok 4/14Attempt to free unreferenced scalar: SV 0x830c070
during global destruction.
Attempt to free unreferenced scalar: SV 0x832c5d0 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c5d0 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c5d0 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c5d0 during global destruction.
t/Bless04....ok 8/14Attempt to free unreferenced scalar: SV 0x832ec00
during global destruction.
Attempt to free unreferenced scalar: SV 0x832ec00 during global destruction.
Attempt to free unreferenced scalar: SV 0x832ec00 during global destruction.
Attempt to free unreferenced scalar: SV 0x832ec00 during global destruction.
Attempt to free unreferenced scalar: SV 0x832ec00 during global destruction.
t/Bless04....ok 12/14Attempt to free unreferenced scalar: SV
0x8330b60 during global destruction.
Attempt to free unreferenced scalar: SV 0x8330b60 during global destruction.
Attempt to free unreferenced scalar: SV 0x8330b60 during global destruction.
Attempt to free unreferenced scalar: SV 0x8330b60 during global destruction.
Attempt to free unreferenced scalar: SV 0x8330b60 during global destruction.
t/Bless04....ok
t/Bless05....Too late to run INIT block at
/root/.cpan/build/Thread-Bless-0.05/blib/lib/Thread/Bless.pm line 129.
t/Bless05....ok 5/15Attempt to free unreferenced scalar: SV 0x8306b84
during global destruction.
Attempt to free unreferenced scalar: SV 0x83270dc during global destruction.
Attempt to free unreferenced scalar: SV 0x83270dc during global destruction.
Attempt to free unreferenced scalar: SV 0x83270dc during global destruction.
Attempt to free unreferenced scalar: SV 0x83270dc during global destruction.
t/Bless05....ok 9/15Attempt to free unreferenced scalar: SV 0x830872c
during global destruction.
Attempt to free unreferenced scalar: SV 0x830872c during global destruction.
Attempt to free unreferenced scalar: SV 0x830872c during global destruction.
Attempt to free unreferenced scalar: SV 0x830872c during global destruction.
Attempt to free unreferenced scalar: SV 0x830872c during global destruction.
t/Bless05....ok 13/15Attempt to free unreferenced scalar: SV
0x8309dec during global destruction.
Attempt to free unreferenced scalar: SV 0x8309dec during global destruction.
Attempt to free unreferenced scalar: SV 0x8309dec during global destruction.
Attempt to free unreferenced scalar: SV 0x8309dec during global destruction.
Attempt to free unreferenced scalar: SV 0x8309dec during global destruction.
t/Bless05....ok
t/Bless06....Too late to run INIT block at
/root/.cpan/build/Thread-Bless-0.05/blib/lib/Thread/Bless.pm line 129.
t/Bless06....ok 9/15Attempt to free unreferenced scalar: SV 0x832c8a0
during global destruction.
Attempt to free unreferenced scalar: SV 0x832c8a0 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c8a0 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c8a0 during global destruction.
Attempt to free unreferenced scalar: SV 0x832c8a0 during global destruction.
t/Bless06....ok 13/15Attempt to free unreferenced scalar: SV
0x832e9ec during global destruction.
Attempt to free unreferenced scalar: SV 0x832e9ec during global destruction.
Attempt to free unreferenced scalar: SV 0x832e9ec during global destruction.
Attempt to free unreferenced scalar: SV 0x832e9ec during global destruction.
Attempt to free unreferenced scalar: SV 0x832e9ec during global destruction.
t/Bless06....ok
t/Bless07....Too late to run INIT block at
/root/.cpan/build/Thread-Bless-0.05/blib/lib/Thread/Bless.pm line 129.
t/Bless07....ok 5/15Attempt to free unreferenced scalar: SV 0x830e5b4
during global destruction.
Attempt to free unreferenced scalar: SV 0x832eb04 during global destruction.
Attempt to free unreferenced scalar: SV 0x832eb04 during global destruction.
Attempt to free unreferenced scalar: SV 0x832eb04 during global destruction.
Attempt to free unreferenced scalar: SV 0x832eb04 during global destruction.
t/Bless07....ok 9/15Attempt to free unreferenced scalar: SV 0x83306fc
during global destruction.
Attempt to free unreferenced scalar: SV 0x83306fc during global destruction.
Attempt to free unreferenced scalar: SV 0x83306fc during global destruction.
Attempt to free unreferenced scalar: SV 0x83306fc during global destruction.
Attempt to free unreferenced scalar: SV 0x83306fc during global destruction.
t/Bless07....ok 13/15Attempt to free unreferenced scalar: SV
0x833269c during global destruction.
Attempt to free unreferenced scalar: SV 0x833269c during global destruction.
Attempt to free unreferenced scalar: SV 0x833269c during global destruction.
Attempt to free unreferenced scalar: SV 0x833269c during global destruction.
Attempt to free unreferenced scalar: SV 0x833269c during global destruction.
t/Bless07....ok
All tests successful.
Files=7, Tests=104, 2 wallclock secs ( 1.94 cusr + 0.13 csys = 2.07 CPU)


Liz

Nicholas Clark

unread,
Jan 8, 2004, 11:14:29 AM1/8/04
to Elizabeth Mattijsen, perl5-...@perl.org
On Thu, Jan 08, 2004 at 12:03:06AM +0100, Elizabeth Mattijsen wrote:
> At 18:18 +0000 1/7/04, Nicholas Clark wrote:
> >Please test it thoroughly and find all the discords so that we can resolve
> >them before the public performance.
>
> Bad news, I'm afraid.
>
> ext/threads/shared/t/wait hangs on my Linux test box. It seems to be
> related to the cond_timedwait test. Testing it seperately, I get:
>
> # ./perl -Ilib ext/threads/shared/t/wait.t
> 1..90

> ok 23 - cond_timedwait [simple]: child obtained lock
> *hangs*

Strange. Many other people have built on x86 Linux and never reported this.
Any idea what's special about your machine?

Might it be picking up a library from an earlier perl?
If you rebuild without other perl versions in @INC, do you still see this?
[Yes, I am clutching at straws]

Nicholas Clark

Elizabeth Mattijsen

unread,
Jan 8, 2004, 11:24:02 AM1/8/04
to Nicholas Clark, perl5-...@perl.org
At 16:14 +0000 1/8/04, Nicholas Clark wrote:
>On Thu, Jan 08, 2004 at 12:03:06AM +0100, Elizabeth Mattijsen wrote:
> > ok 23 - cond_timedwait [simple]: child obtained lock
> > *hangs*
>Strange. Many other people have built on x86 Linux and never reported this.
>Any idea what's special about your machine?

No idea, really. Except that I've built debug capable versions
_after_ the non-debug capable versions.


> > /usr/local/lib/perl5/5.8.3/i686-linux-thread-multi
> > /usr/local/lib/perl5/5.8.3
> > /usr/local/lib/perl5/site_perl/5.8.3/i686-linux-thread-multi
> > /usr/local/lib/perl5/site_perl/5.8.3
> > /usr/local/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi
> > /usr/local/lib/perl5/site_perl/5.8.2
> > /usr/local/lib/perl5/site_perl/5.8.1/i686-linux-thread-multi
> > /usr/local/lib/perl5/site_perl/5.8.1
> > /usr/local/lib/perl5/site_perl/5.8.0/i686-linux-thread-multi
>> /usr/local/lib/perl5/site_perl/5.8.0
>> /usr/local/lib/perl5/site_perl/5.6.2
> > /usr/local/lib/perl5/site_perl
>Might it be picking up a library from an earlier perl?
>If you rebuild without other perl versions in @INC, do you still see this?
>[Yes, I am clutching at straws]

Let me first do _exactly_ the same thing I did on another box and get
back to you after that...


Liz

Redvers Davies

unread,
Jan 8, 2004, 2:57:52 PM1/8/04
to Nicholas Clark, perl5-...@perl.org

The build files which we patch have been modified since the last patch I
submitted and although they apply with a fuzz and compile cleanly I will
submit a patch.

My Zaurus is a.w.o.l at the moment and I have a new one on order
(c860). I have been using the ipaq/skiff cluster at handhelds.org to
run the tests and have hit a small snag.

Patch to follow in a day or so.


Enache Adrian

unread,
Jan 8, 2004, 3:58:35 PM1/8/04
to Elizabeth Mattijsen, Nicholas Clark, perl5-...@perl.org
On Thu, Jan 08, 2004 a.d., Elizabeth Mattijsen wrote:
[ more problems with backreferences and threads]

The SEGV happens because PL_errgv is NULL and the ERRSV macro
actually tries to dereference it.

The panic in del_backref (which causes all this, calls Perl_croak,etc)
popped up since my #21936 - before that the weak-referenced variable
wasn't probably freed at all.
I'll try to fix that tomorrow.

Regards,
Adi

Elizabeth Mattijsen

unread,
Jan 8, 2004, 4:49:13 PM1/8/04
to Enache Adrian, Nicholas Clark, perl5-...@perl.org

I guess I'll wait until that before I start testing Thread::Bless
again. Maybe because Thread::Bless is tickling both the weaken() and
the thread/closure issues, that I'm getting these strange phenomena.

On the other hand I seem to be the only one with problems with
5.8.3-threaded and Thread::Bless, so maybe there's something in my
setup that's further tickling this.


I just built a threaded 5.8.3 with debugging symbols on Mac OS X.
Test-suite of Thread::Bless coredumps. Looks like the same
del_backref panic problem to me.


Liz
=======================================================
#0 0x000d589c in Perl_die_where (my_perl=0x58f340, message=0x5fda30
"panic: del_backref during global destruction.\n", msglen=46) at
pp_ctl.c:1338
#1 0x00008520 in Perl_vcroak (my_perl=0x58f340, pat=0x184054 "panic:
del_backref", args=0xbfffdf58) at util.c:1195
#2 0x0000873c in Perl_croak (my_perl=0x58f340, pat=0x184054 "panic:
del_backref") at util.c:1243
#3 0x0005f3a8 in S_sv_del_backref (my_perl=0x58f340, sv=0x5e9b70) at sv.c:4921
#4 0x000607e4 in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9b70) at sv.c:5198
#5 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9b70) at sv.c:5348
#6 0x000449e8 in Perl_hv_free_ent (my_perl=0x58f340, hv=0x5e9b64,
entry=0x5e2674) at hv.c:1400
#7 0x00045048 in S_hfreeentries (my_perl=0x58f340, hv=0x5e9b64) at hv.c:1570
#8 0x0004510c in Perl_hv_undef (my_perl=0x58f340, hv=0x5e9b64) at hv.c:1597
#9 0x000606a8 in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9b64) at sv.c:5165
#10 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9b64) at sv.c:5348
#11 0x000607fc in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9b58) at sv.c:5200
#12 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9b58) at sv.c:5348
#13 0x000449e8 in Perl_hv_free_ent (my_perl=0x58f340, hv=0x5e9b4c,
entry=0x5e2668) at hv.c:1400
#14 0x00045048 in S_hfreeentries (my_perl=0x58f340, hv=0x5e9b4c) at hv.c:1570
#15 0x0004510c in Perl_hv_undef (my_perl=0x58f340, hv=0x5e9b4c) at hv.c:1597
#16 0x000606a8 in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9b4c) at sv.c:5165
#17 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9b4c) at sv.c:5348
#18 0x000607fc in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9b40) at sv.c:5200
#19 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9b40) at sv.c:5348
#20 0x000449e8 in Perl_hv_free_ent (my_perl=0x58f340, hv=0x5e9b34,
entry=0x5e2650) at hv.c:1400
#21 0x00045048 in S_hfreeentries (my_perl=0x58f340, hv=0x5e9b34) at hv.c:1570
#22 0x0004510c in Perl_hv_undef (my_perl=0x58f340, hv=0x5e9b34) at hv.c:1597
#23 0x000606a8 in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9b34) at sv.c:5165
#24 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9b34) at sv.c:5348
#25 0x0008557c in Perl_gp_free (my_perl=0x58f340, gv=0x5e9b1c) at gv.c:1265
#26 0x0006075c in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9b1c) at sv.c:5180
#27 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9b1c) at sv.c:5348
#28 0x000449e8 in Perl_hv_free_ent (my_perl=0x58f340, hv=0x5e9a38,
entry=0x5e27b8) at hv.c:1400
#29 0x00045048 in S_hfreeentries (my_perl=0x58f340, hv=0x5e9a38) at hv.c:1570
#30 0x0004510c in Perl_hv_undef (my_perl=0x58f340, hv=0x5e9a38) at hv.c:1597
#31 0x000606a8 in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9a38) at sv.c:5165
#32 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9a38) at sv.c:5348
#33 0x00060a88 in Perl_sv_clear (my_perl=0x58f340, sv=0x5e9a5c) at sv.c:5262
#34 0x00060e2c in Perl_sv_free (my_perl=0x58f340, sv=0x5e9a5c) at sv.c:5348
#35 0x00051d14 in do_clean_all (my_perl=0x58f340, sv=0x5e9a5c) at sv.c:439
#36 0x000517c4 in S_visit (my_perl=0x58f340, f=0x51c98
<do_clean_all>) at sv.c:331
#37 0x00051d64 in Perl_sv_clean_all (my_perl=0x58f340) at sv.c:457
#38 0x0002a778 in perl_destruct (my_perl=0x58f340) at perl.c:815
#39 0x00433c64 in ?? ()
#40 0x0043410c in ?? ()
#41 0x0005ee74 in Perl_sv_unmagic (my_perl=0x5938e0, sv=0x5e2734,
type=-1073745696) at sv.c:4822
#42 0x00435608 in ?? ()
#43 0x0043679c in ?? ()
#44 0x00096b04 in Perl_pp_entersub (my_perl=0x9000399c) at pp_hot.c:2840
#45 0x0002eb8c in S_call_body (my_perl=0x344400, myop=0xbffff30c,
is_eval=0) at perl.c:2218
#46 0x0002e658 in Perl_call_sv (my_perl=0x344400, sv=0x3c0a24,
flags=150) at perl.c:2139
#47 0x0006015c in Perl_sv_clear (my_perl=0x344400, sv=0x3c0a30) at sv.c:5102
#48 0x00060e2c in Perl_sv_free (my_perl=0x344400, sv=0x3c0a30) at sv.c:5348
#49 0x000607fc in Perl_sv_clear (my_perl=0x344400, sv=0x355800) at sv.c:5200
#50 0x00060e2c in Perl_sv_free (my_perl=0x344400, sv=0x355800) at sv.c:5348
#51 0x00100ad4 in Perl_free_tmps (my_perl=0x344400) at scope.c:189
#52 0x00088be4 in Perl_pp_unstack (my_perl=0x344400) at pp_hot.c:128
#53 0x0015219c in Perl_runops_debug (my_perl=0x344400) at dump.c:1438
#54 0x0002d838 in S_run_body (my_perl=0x344400, oldscope=1) at perl.c:1857
#55 0x0002d19c in perl_run (my_perl=0x344400) at perl.c:1776
#56 0x00002084 in main (argc=2, argv=0xbffffe24, env=0xbffffe30) at
perlmain.c:86
#57 0x00001eac in _start (argc=2, argv=0xbffffe24, envp=0xbffffe30)
at /SourceCache/Csu/Csu-45/crt.c:267
#58 0x00001d2c in start ()

Nick Ing-Simmons

unread,
Jan 9, 2004, 3:14:32 AM1/9/04
to ni...@ccl4.org, perl5-...@perl.org
Nicholas Clark <ni...@ccl4.org> writes:
>
>Please test it thoroughly and find all the discords so that we can resolve
>them before the public performance. Currently it's at

>
>
>I'm interested in confirmation of binary compatibility between 5.8.3 and
>modules compiled under previous 5.8.x releases, and anything which is a new
>bug in 5.8.3, particularly if it breaks current modules on CPAN.

What is the easiest way to do that these days?
My current perl looks & installs here:

@INC:
/usr/local/perl/lib/5.8.2/i686-linux-multi
/usr/local/perl/lib/5.8.2
/usr/local/perl/lib/site_perl/5.8.2/i686-linux-multi
/usr/local/perl/lib/site_perl/5.8.2
/usr/local/perl/lib/site_perl

How do I get 5.8.3 RC1 to look there?
It seems that the Configure thing that looks for old dists isn't
enabled in maint?

Is there a ./Configure -Dxxxx=yyyy thing I can use?


Enache Adrian

unread,
Jan 9, 2004, 9:04:47 AM1/9/04
to Elizabeth Mattijsen, perl5-...@perl.org
On Thu, Jan 08, 2004 a.d., Elizabeth Mattijsen wrote:
> At 22:58 +0200 1/8/04, Enache Adrian wrote:
> >On Thu, Jan 08, 2004 a.d., Elizabeth Mattijsen wrote:
> >[ more problems with backreferences and threads]
> >
> >The SEGV happens because PL_errgv is NULL and the ERRSV macro
> >actually tries to dereference it.
> >
> >The panic in del_backref (which causes all this, calls Perl_croak,etc)
> >popped up since my #21936 - before that the weak-referenced variable
> >wasn't probably freed at all.
> >I'll try to fix that tomorrow.

Please try this:
--- /arc/bleadperl/sv.c 2004-01-01 22:21:06.000000000 +0200
+++ sv.c 2004-01-09 15:34:10.000000000 +0200
@@ -9799,7 +9799,7 @@ Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAM
SvREFCNT_inc(nmg->mg_obj = (SV*)newAV());
svp = AvARRAY(av);
for (i = AvFILLp(av); i >= 0; i--) {
- if (!svp[i] || SvREFCNT(svp[i]) < 2) continue;
+ if (!svp[i]) continue;
av_push((AV*)nmg->mg_obj,sv_dup(svp[i],param));
}
}

That test was there trying to avoid leaks in things like:
$ perl -MScalar::Util=weaken -Mthreads -e 'my$t;\
threads->new(sub{my$a,$b;$a=$b=\$t;weaken$b;$a})->join while 1'
But the panic is worse than that.

Regards,
Adi

Elizabeth Mattijsen

unread,
Jan 9, 2004, 9:53:22 AM1/9/04
to Enache Adrian, perl5-...@perl.org

Hmmm... no go, I'm afraid. But there are some stranger things
happening here: I suspect some kind of interaction / voodoo with
Test::Harness to be involved here as well. Observe:

====================================================
$ perl5.8.3-threaded-debug Makefile.PL


Writing Makefile for Thread::Bless

[root@cadier Thread-Bless-0.05]# make test
PERL_DL_NONLAZY=1 /usr/local/bin/perl5.8.3-threaded-debug

"-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib',
'blib/arch')" t/*.t

t/Bless01....dubious
Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 15-16
Failed 2/16 tests, 87.50% okay
t/Bless02....ok
t/Bless03....ok 8/14start thread

in thread
thread started
t/Bless03....ok 12/14thread joined

t/Bless03....dubious
Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 13-14
Failed 2/14 tests, 85.71% okay


t/Bless04....ok
t/Bless05....Too late to run INIT block at
/root/.cpan/build/Thread-Bless-0.05/blib/lib/Thread/Bless.pm line 129.
t/Bless05....ok

t/Bless06....Too late to run INIT block at
/root/.cpan/build/Thread-Bless-0.05/blib/lib/Thread/Bless.pm line 129.

t/Bless06....dubious
Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 14-15
Failed 2/15 tests, 86.67% okay


t/Bless07....Too late to run INIT block at
/root/.cpan/build/Thread-Bless-0.05/blib/lib/Thread/Bless.pm line 129.
t/Bless07....ok

Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/Bless01.t 0 11 16 4 25.00% 15-16
t/Bless03.t 0 11 14 4 28.57% 13-14
t/Bless06.t 0 11 15 4 26.67% 14-15
Failed 3/7 test scripts, 57.14% okay. 6/104 subtests failed, 94.23% okay.
make: *** [test_dynamic] Error 255
====================================================

So, I now run the Bless01.t test seperately:

====================================================
$ perl5.8.3-threaded-debug -Ilib t/Bless01.t
1..16
ok 1 - use Thread::Bless;
ok 2 - Thread::Bless->can(...)
ok 3 - Without object going out of scope:
ok 4 - Check \# of destroys of WithoutDestroy
ok 5 - NoBless Object going out of scope:
ok 6 - Check \# of destroys of WithDestroy
ok 7 - Threads with NoBless object:
ok 8 - Check \# of destroys of NoBless, with threads
ok 9 - WithDestroy object going out of scope:


ok 10 - Check \# of destroys of WithDestroy

ok 11 - Threads with WithDestroy object:
ok 12 - Check \# of destroys of WithDestroy, with threads
ok 13 - WithDestroyAll object going out of scope:
ok 14 - Check \# of destroys of WithDestroyAll
ok 15 - Threads with WithDestroyAll object:
ok 16 - Check \# of destroys of WithDestroyAll, with threads
====================================================

No problems! Whereas when running with "make test", two tests fail... ;-(


Liz

Stas Bekman

unread,
Jan 9, 2004, 6:34:18 PM1/9/04