Hello community,
here is the log from the commit of package perl-Devel-NYTProf for
openSUSE:Factory checked in at 2013-07-27 15:50:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Devel-NYTProf (Old)
and /work/SRC/openSUSE:Factory/.perl-Devel-NYTProf.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Devel-NYTProf"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Devel-NYTProf/perl-Devel-NYTProf.changes
2013-06-13 17:33:02.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Devel-NYTProf.new/perl-Devel-NYTProf.changes
2013-07-27 15:50:34.000000000 +0200
@@ -1,0 +2,16 @@
+Wed Jul 24 07:28:06 UTC 2013 - [email protected]
+
+- updated to 5.05
+ Fixed crash on "Can't use string as a subroutine ref" error,
+ and probably other die-at-pp_entersub cases,
+ with thanks to Zefram. RT#86638
+ Fixed crash with libcexit=1, thanks to Zefram. RT#86548
+
+ Allow negative times in tests for systems with unstable clocks
+ thanks to Gisle Aas, RT#85556.
+ Added libcexit=1 option thanks to Zefram, RT#75912.
+ Added documentation for endatexit and libcexit options.
+ Added documentation for nytprofhtml --minimal
+ thanks to Mike Doherty, RT#86039.
+
+-------------------------------------------------------------------
Old:
----
Devel-NYTProf-5.03.tar.gz
New:
----
Devel-NYTProf-5.05.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Devel-NYTProf.spec ++++++
--- /var/tmp/diff_new_pack.SxPIM0/_old 2013-07-27 15:50:35.000000000 +0200
+++ /var/tmp/diff_new_pack.SxPIM0/_new 2013-07-27 15:50:35.000000000 +0200
@@ -17,7 +17,7 @@
Name: perl-Devel-NYTProf
-Version: 5.03
+Version: 5.05
Release: 0
%define cpan_name Devel-NYTProf
Summary: Powerful fast feature-rich Perl source code profiler
++++++ Devel-NYTProf-5.03.tar.gz -> Devel-NYTProf-5.05.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/Changes
new/Devel-NYTProf-5.05/Changes
--- old/Devel-NYTProf-5.03/Changes 2013-05-20 21:48:27.000000000 +0200
+++ new/Devel-NYTProf-5.05/Changes 2013-07-02 23:34:33.000000000 +0200
@@ -4,6 +4,22 @@
=cut
+=head2 Changes in Devel::NYTProf 5.05 - 2nd July 2013
+
+ Fixed crash on "Can't use string as a subroutine ref" error,
+ and probably other die-at-pp_entersub cases,
+ with thanks to Zefram. RT#86638
+ Fixed crash with libcexit=1, thanks to Zefram. RT#86548
+
+=head2 Changes in Devel::NYTProf 5.04 - 20th June 2013
+
+ Allow negative times in tests for systems with unstable clocks
+ thanks to Gisle Aas, RT#85556.
+ Added libcexit=1 option thanks to Zefram, RT#75912.
+ Added documentation for endatexit and libcexit options.
+ Added documentation for nytprofhtml --minimal
+ thanks to Mike Doherty, RT#86039.
+
=head2 Changes in Devel::NYTProf 5.03 - 20th May 2013
Fix windows to use flamegraph.bat [Christian Walde]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/MANIFEST
new/Devel-NYTProf-5.05/MANIFEST
--- old/Devel-NYTProf-5.03/MANIFEST 2013-05-20 21:50:53.000000000 +0200
+++ new/Devel-NYTProf-5.05/MANIFEST 2013-07-03 11:40:25.000000000 +0200
@@ -227,6 +227,7 @@
t/test80-recurs.t
t/test81-swash.t
t/test82-version.t
+t/test90-strsubref.t
t/zzz.t
typemap
xt/61-cputime.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/META.json
new/Devel-NYTProf-5.05/META.json
--- old/Devel-NYTProf-5.03/META.json 2013-05-20 21:50:53.000000000 +0200
+++ new/Devel-NYTProf-5.05/META.json 2013-07-03 11:40:25.000000000 +0200
@@ -4,7 +4,7 @@
"Tim Bunce <[email protected]>"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter
version 2.120921",
+ "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter
version 2.120921",
"license" : [
"perl_5"
],
@@ -52,5 +52,5 @@
],
"x_MailingList" : "http://groups.google.com/group/develnytprof-dev"
},
- "version" : "5.03"
+ "version" : "5.05"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/META.yml
new/Devel-NYTProf-5.05/META.yml
--- old/Devel-NYTProf-5.03/META.yml 2013-05-20 21:50:53.000000000 +0200
+++ new/Devel-NYTProf-5.05/META.yml 2013-07-03 11:40:25.000000000 +0200
@@ -7,7 +7,7 @@
configure_requires:
ExtUtils::MakeMaker: 0
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version
2.120921'
+generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version
2.120921'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -30,4 +30,4 @@
homepage: https://code.google.com/p/perl-devel-nytprof/
license: http://dev.perl.org/licenses/
x_MailingList: http://groups.google.com/group/develnytprof-dev
-version: 5.03
+version: 5.05
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/NYTProf.xs
new/Devel-NYTProf-5.05/NYTProf.xs
--- old/Devel-NYTProf-5.03/NYTProf.xs 2013-04-21 21:45:46.000000000 +0200
+++ new/Devel-NYTProf-5.05/NYTProf.xs 2013-07-02 23:30:42.000000000 +0200
@@ -292,6 +292,7 @@
else if (strEQ(option, "optimize") || strEQ(option, "optimise")) {
else if (strEQ(option, "savesrc")) {
else if (strEQ(option, "endatexit")) {
+ else if (strEQ(option, "libcexit")) {
and write the options to the stream when profiling starts.
*/
@@ -390,6 +391,7 @@
static int enable_profile(pTHX_ char *file);
static int disable_profile(pTHX);
static void finish_profile(pTHX);
+static void finish_profile_nocontext(void);
static void open_output_file(pTHX_ char *);
static int reinit_if_forked(pTHX);
static int parse_DBsub_value(pTHX_ SV *sv, STRLEN *filename_len_p, UV
*first_line_p, UV *last_line_p, char *sub_name);
@@ -1697,6 +1699,10 @@
if (atoi(value))
PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
}
+ else if (strEQ(option, "libcexit")) {
+ if (atoi(value))
+ atexit(finish_profile_nocontext);
+ }
else {
struct NYTP_options_t *opt_p = options;
@@ -2002,7 +2008,8 @@
time_of_day_t sub_end_time;
long ticks, overflow;
- if (subr_entry->called_subnam_sv == &PL_sv_undef) {
+ /* an undef SV is a special marker used by subr_entry_setup */
+ if (subr_entry->called_subnam_sv && !SvOK(subr_entry->called_subnam_sv)) {
if (trace_level)
logwarn("Don't know name of called sub, assuming xsub/builtin
exited via an exception (which isn't handled yet)\n");
subr_entry->already_counted++;
@@ -2346,7 +2353,14 @@
}
}
else {
- subr_entry->called_subnam_sv = newSV(0); /* see
incr_sub_inclusive_time */
+ /* resolve_sub_to_cv couldn't work out what's being called,
+ * possibly because it's something that'll cause pp_entersub to
croak
+ * anyway. So we mark the subr_entry in a particular way and hope
that
+ * pp_subcall_profiler() can fill in the details.
+ * If there is an exception then we'll wind up in
incr_sub_inclusive_time
+ * which will see this mark and ignore the call.
+ */
+ subr_entry->called_subnam_sv = newSV(0);
}
subr_entry->called_is_xs = NULL; /* work it out later */
}
@@ -2933,6 +2947,7 @@
static void
finish_profile(pTHX)
{
+ /* can be called after the perl interp is destroyed, via libcexit */
int saved_errno = errno;
#ifdef MULTIPLICITY
if (orig_my_perl && my_perl != orig_my_perl)
@@ -2960,7 +2975,11 @@
}
/* reset sub profiler data */
- hv_clear(sub_callers_hv);
+ if (HvKEYS(sub_callers_hv)) {
+ /* HvKEYS check avoids hv_clear() if interp has been destroyed
RT#86548 */
+ hv_clear(sub_callers_hv);
+ }
+
/* reset other state */
cumulative_overhead_ticks = 0;
cumulative_subr_ticks = 0;
@@ -2969,6 +2988,15 @@
}
+static void
+finish_profile_nocontext()
+{
+ /* can be called after the perl interp is destroyed, via libcexit */
+ dTHX;
+ finish_profile(aTHX);
+}
+
+
static void
_init_profiler_clock(pTHX)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/bin/nytprofcalls
new/Devel-NYTProf-5.05/bin/nytprofcalls
--- old/Devel-NYTProf-5.03/bin/nytprofcalls 2013-05-20 21:43:26.000000000
+0200
+++ new/Devel-NYTProf-5.05/bin/nytprofcalls 2013-07-02 23:47:13.000000000
+0200
@@ -14,7 +14,7 @@
use Devel::NYTProf::Core;
require Devel::NYTProf::Data;
-our $VERSION = '5.03';
+our $VERSION = '5.05';
use Data::Dumper;
use Getopt::Long;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/bin/nytprofhtml
new/Devel-NYTProf-5.05/bin/nytprofhtml
--- old/Devel-NYTProf-5.03/bin/nytprofhtml 2013-05-20 21:43:36.000000000
+0200
+++ new/Devel-NYTProf-5.05/bin/nytprofhtml 2013-07-02 23:47:18.000000000
+0200
@@ -59,7 +59,7 @@
);
use Devel::NYTProf::Constants qw(NYTP_SCi_CALLING_SUB);
-our $VERSION = '5.03';
+our $VERSION = '5.05';
if ($VERSION != $Devel::NYTProf::Core::VERSION) {
die "$0 version '$VERSION' doesn't match version
'$Devel::NYTProf::Core::VERSION' of $INC{'Devel/NYTProf/Core.pm'}\n";
@@ -1965,6 +1965,10 @@
If this doesn't work well for you, try installing the L<Browser::Open> module.
+=item -m, --minimal
+
+Don't generate graphviz .dot files or block/sub-level reports.
+
=item --no-flame
Disable generation of the framegraph on the index page.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/bin/nytprofmerge
new/Devel-NYTProf-5.05/bin/nytprofmerge
--- old/Devel-NYTProf-5.03/bin/nytprofmerge 2013-05-20 21:43:40.000000000
+0200
+++ new/Devel-NYTProf-5.05/bin/nytprofmerge 2013-07-02 23:47:21.000000000
+0200
@@ -18,7 +18,7 @@
require Devel::NYTProf::Data;
use List::Util qw(min sum);
-our $VERSION = '5.03';
+our $VERSION = '5.05';
if ($VERSION != $Devel::NYTProf::Core::VERSION) {
die "$0 version '$VERSION' doesn't match version
'$Devel::NYTProf::Core::VERSION' of $INC{'Devel/NYTProf/Core.pm'}\n";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/lib/Devel/NYTProf/Core.pm
new/Devel-NYTProf-5.05/lib/Devel/NYTProf/Core.pm
--- old/Devel-NYTProf-5.03/lib/Devel/NYTProf/Core.pm 2013-05-20
21:43:45.000000000 +0200
+++ new/Devel-NYTProf-5.05/lib/Devel/NYTProf/Core.pm 2013-07-02
23:47:26.000000000 +0200
@@ -14,7 +14,7 @@
use XSLoader;
-our $VERSION = '5.03'; # increment with XS changes too
+our $VERSION = '5.05'; # increment with XS changes too
XSLoader::load('Devel::NYTProf', $VERSION);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/lib/Devel/NYTProf.pm
new/Devel-NYTProf-5.05/lib/Devel/NYTProf.pm
--- old/Devel-NYTProf-5.03/lib/Devel/NYTProf.pm 2013-05-20 21:43:53.000000000
+0200
+++ new/Devel-NYTProf-5.05/lib/Devel/NYTProf.pm 2013-07-02 23:47:30.000000000
+0200
@@ -11,7 +11,7 @@
###########################################################
package Devel::NYTProf;
-our $VERSION = '5.03'; # also change in Devel::NYTProf::Core
+our $VERSION = '5.05'; # also change in Devel::NYTProf::Core
package # hide the package from the PAUSE indexer
DB;
@@ -537,6 +537,19 @@
C<posix_exit> option can be used to tell NYTProf to take other steps to arrange
for C<DB::finish_profile()> to be called before C<POSIX::_exit()>.
+=head2 libcexit=1
+
+Arranges for L</finish_profile> to be called via the C library C<atexit()>
function.
+This may help some tricky cases where the process may exit without perl
+executing the C<END> block that NYTProf uses to call /finish_profile().
+
+=head2 endatexit=1
+
+Sets the PERL_EXIT_DESTRUCT_END flag in the PL_exit_flags of the perl
interpreter.
+This makes perl run C<END> blocks in perl_destruct() instead of perl_run()
+which may help in cases, like Apache, where perl is embedded but perl_run()
+isn't called.
+
=head2 forkdepth=N
When a perl process that is being profiled executes a fork() the child process
@@ -1114,6 +1127,10 @@
L<Devel::NYTProf::ReadStream> is the module that lets you read a profile data
file as a stream of chunks of data.
+Other tools:
+
+DTrace L<https://speakerdeck.com/mrallen1/perl-dtrace-and-you>
+
=head1 TROUBLESHOOTING
=head2 "Profile data incomplete, ..." or "File format error: ..."
@@ -1208,7 +1225,7 @@
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2008 by Adam Kaplan and The New York Times Company.
- Copyright (C) 2008-2010 by Tim Bunce, Ireland.
+ Copyright (C) 2008-2013 by Tim Bunce, Ireland.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.8 or,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/t/lib/NYTProfTest.pm
new/Devel-NYTProf-5.05/t/lib/NYTProfTest.pm
--- old/Devel-NYTProf-5.03/t/lib/NYTProfTest.pm 2013-04-19 17:39:18.000000000
+0200
+++ new/Devel-NYTProf-5.05/t/lib/NYTProfTest.pm 2013-06-20 18:14:50.000000000
+0200
@@ -550,7 +550,8 @@
next if m/^# Version/; # Ignore version numbers
- s/^([0-9.]+),([0-9.]+),([0-9.]+),(.*)$/0,$2,0,$4/o;
+ # we allow negative numbers here re RT#85556
+ s/^(-?[0-9.]+),([0-9.]+),([0-9.]+),(.*)$/0,$2,0,$4/o;
my $t0 = $1;
my $c0 = $2;
my $tc0 = $3;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Devel-NYTProf-5.03/t/test90-strsubref.t
new/Devel-NYTProf-5.05/t/test90-strsubref.t
--- old/Devel-NYTProf-5.03/t/test90-strsubref.t 1970-01-01 01:00:00.000000000
+0100
+++ new/Devel-NYTProf-5.05/t/test90-strsubref.t 2013-07-02 23:52:15.000000000
+0200
@@ -0,0 +1,45 @@
+# Tests dieing on Can't use string ... as a subroutine ref while "strict refs"
in use
+# that used to core dump (RT#86638)
+# https://rt.cpan.org/Ticket/Display.html?id=86638
+
+use strict;
+use Test::More;
+
+use lib qw(t/lib);
+use NYTProfTest;
+use Data::Dumper;
+
+use Devel::NYTProf::Run qw(profile_this);
+
+my $src_code = join("", <DATA>);
+
+run_test_group( {
+ extra_options => {
+ start => 'begin',
+ compress => 1,
+ calls => 0,
+ savesrc => 0,
+ stmts => 0,
+ slowops => 0,
+ },
+ extra_test_count => 2,
+ extra_test_code => sub {
+ my ($profile, $env) = @_;
+
+ $profile = profile_this(
+ src_code => $src_code,
+ out_file => $env->{file},
+ skip_sitecustomize => 1,
+ );
+ isa_ok $profile, 'Devel::NYTProf::Data';
+ # check if data was truncated
+ ok $profile->{attribute}{complete};
+ },
+});
+
+__DATA__
+#!perl
+use strict;
+# Can't use string ("") as a subroutine ref while "strict refs" in use at -
line 4.
+eval { $x::z->() };
+die $@ if $@ !~ /^Can't use .* as a subroutine ref/;
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]