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]

Reply via email to