-
Notifications
You must be signed in to change notification settings - Fork 558
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
perl debugger doesn't save starting dir to restart from #13691
Comments
From perl-diddler@tlinx.orgCreated by perl-diddler@tlinx.orgWorking with a program that uses a sub dir for a cache dir. So that the path to the root of the cache will be the same as Later, I stepped past the point where I wanted to look at Seems like it would be best if it saved the starting directory Perl Info
|
From @rjbs* Linda Walsh (via RT) <perlbug-followup@perl.org> [2014-03-26T04:57:57]
Seems reasonable to me, at least at first blush. -- |
The RT System itself - Status changed from 'new' to 'open' |
From @shlomifHi all, On Thu Mar 27 06:15:04 2014, perl.p5p@rjbs.manxome.org wrote:
since it seemed reasonable to me as well, I wrote a patch to fix it, and it's attached to this message and can also be found in this GitHub branch: https://github.com/shlomif/perl/tree/rt_121509_bug_fix The patch adds a regression test (which succeeds after applying it) and all existing test pass (at least without threads) on my Mageia Linux 5 (Cauldron) x86-64 system. Thanks to Linda for reporting the problem, and to Ricardo (RJBS) for approving of a fix. Please review and apply the patch when you can. Regards, -- Shlomi Fish |
From @shlomif0001-Fix-RT-121509-perl-d-handling-chdir.patchFrom f79d705adacc51a29e573092924d11b98c883ef0 Mon Sep 17 00:00:00 2001
From: Shlomi Fish <shlomif@shlomifish.org>
Date: Thu, 27 Mar 2014 19:07:50 +0200
Subject: [PATCH] Fix RT #121509 : perl -d handling chdir().
See: https://rt.perl.org/Ticket/Display.html?id=121509
[perl #121509] perl debugger doesn't save starting dir to restart from
Thanks to Linda Walsh for reporting the problem and RJBS for commenting
for initial approval. Fix and a regression test by Shlomi Fish.
---
MANIFEST | 1 +
lib/perl5db.pl | 14 +++++++-
lib/perl5db.t | 51 ++++++++++++++++++++++++++++-
lib/perl5db/t/rt-121509-restart-after-chdir | 33 +++++++++++++++++++
4 files changed, 97 insertions(+), 2 deletions(-)
create mode 100644 lib/perl5db/t/rt-121509-restart-after-chdir
diff --git a/MANIFEST b/MANIFEST
index 70565d5..ef0bb95 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -4244,6 +4244,7 @@ lib/perl5db/t/lvalue-bug Tests for the Perl debugger
lib/perl5db/t/MyModule.pm Tests for the Perl debugger
lib/perl5db/t/proxy-constants Tests for the Perl debugger
lib/perl5db/t/rt-104168 Tests for the Perl debugger
+lib/perl5db/t/rt-121509-restart-after-chdir Tests for the Perl debugger
lib/perl5db/t/rt-61222 Tests for the Perl debugger
lib/perl5db/t/rt-66110 Tests for the Perl debugger
lib/perl5db/t/source-cmd-test-no-q.perldb Tests for the Perl debugger
diff --git a/lib/perl5db.pl b/lib/perl5db.pl
index c1d6752..b0d517d 100644
--- a/lib/perl5db.pl
+++ b/lib/perl5db.pl
@@ -512,18 +512,23 @@ package DB;
use strict;
+use Cwd ();
+
+my $_initial_cwd;
+
BEGIN {eval 'use IO::Handle'}; # Needed for flush only? breaks under miniperl
BEGIN {
require feature;
$^V =~ /^v(\d+\.\d+)/;
feature->import(":$1");
+ $_initial_cwd = Cwd::getcwd();
}
# Debugger for Perl 5.00x; perl5db.pl patch level:
use vars qw($VERSION $header);
-$VERSION = '1.43';
+$VERSION = '1.44';
$header = "perl5db.pl version $VERSION";
@@ -2257,6 +2262,13 @@ sub _DB__handle_restart_and_rerun_commands {
# R - restart execution.
# rerun - controlled restart execution.
if ($cmd_cmd eq 'rerun' or $cmd_params eq '') {
+
+ # Change directory to the initial current working directory on
+ # the script startup, so if the debugged program changed the
+ # directory, then we will still be able to find the path to the
+ # the program. (perl 5 RT #121509 ).
+ chdir ($_initial_cwd);
+
my @args = ($cmd_cmd eq 'R' ? restart() : rerun($cmd_params));
# Close all non-system fds for a clean restart. A more
diff --git a/lib/perl5db.t b/lib/perl5db.t
index 3af7f64..bd5615a 100644
--- a/lib/perl5db.t
+++ b/lib/perl5db.t
@@ -29,7 +29,7 @@ BEGIN {
$ENV{PERL_RL} = 'Perl'; # Suppress system Term::ReadLine::Gnu
}
-plan(119);
+plan(120);
my $rc_filename = '.perldb';
@@ -2697,6 +2697,55 @@ DebugWrap->new({
);
}
+# perl 5 RT #121509 regression bug.
+# “perl debugger doesn't save starting dir to restart from”
+# Thanks to Linda Walsh for reporting it.
+{
+ use File::Temp qw/tempdir/;
+
+ my $temp_dir = tempdir( CLEANUP => 1 );
+
+ local $ENV{__PERLDB_TEMP_DIR} = $temp_dir;
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ # This is to avoid getting the "Debugger program terminated"
+ # junk that interferes with the normal output.
+ 'b _after_chdir',
+ 'c',
+ 'R',
+ 'b _finale',
+ 'c',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/rt-121509-restart-after-chdir',
+ }
+ );
+
+ $wrapper->output_like(
+ qr/
+In\ _finale\ No\ 1
+ .*?
+In\ _finale\ No\ 2
+ .*?
+In\ _finale\ No\ 3
+ /msx,
+ "Test that the debugger chdirs to the initial directory after a restart.",
+ );
+}
# Test the perldoc command
# We don't actually run the program, but we need to provide one to the wrapper.
SKIP:
diff --git a/lib/perl5db/t/rt-121509-restart-after-chdir b/lib/perl5db/t/rt-121509-restart-after-chdir
new file mode 100644
index 0000000..f8250d7
--- /dev/null
+++ b/lib/perl5db/t/rt-121509-restart-after-chdir
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use IO::Handle;
+
+STDOUT->autoflush(1);
+
+my $tmpdir = $ENV{__PERLDB_TEMP_DIR};
+
+sub _do_chdir
+{
+ chdir($tmpdir);
+}
+
+sub _after_chdir
+{
+ print "_after_chdir\n";
+}
+
+sub _finale
+{
+ my $i = 1;
+ while (1)
+ {
+ print "In _finale No " . ($i++) . "\n";
+ }
+}
+
+_do_chdir();
+_after_chdir();
+_finale();
--
1.8.5.4
|
From @shlomifOn Thu Mar 27 10:21:04 2014, shlomif wrote:
And now I verified that the tests pass on threaded perls: All tests successful. Regards, -- Shlomi Fish |
From @rjbs* "Shlomi Fish via RT" <perlbug-followup@perl.org> [2014-03-27T13:21:05]
I've marked this for review for 5.21.1. -- |
From @shlomifOn Thu, 27 Mar 2014 21:55:49 -0400
Thanks! Regards, -- Shlomi Fish -- Shlomi Fish http://www.shlomifish.org/ What is is. Perceive It. Integrate it. Act on it. Idealize it. Please reply to list if it's a mailing list post - http://shlom.in/reply . |
From @tonycozOn Fri Mar 28 00:27:43 2014, shlomif@shlomifish.org wrote:
Thanks, applied as c59f1e0. Tony |
@tonycoz - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#121509 (status was 'resolved')
Searchable as RT121509$
The text was updated successfully, but these errors were encountered: