diff options
author | Adam Mitz <mitza@objectcomputing.com> | 2018-04-04 11:02:37 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-04 11:02:37 -0500 |
commit | 7374b0209e7ac3b6e22bfd86246d02f419d6fbb4 (patch) | |
tree | f157ccf803dc062b6627703aa9c89a0002decaed /ACE | |
parent | effd803b7b9badcd4414e1dc1d8dfdf6021a99e8 (diff) | |
parent | b901665ea61fc8d923ec498d708909c777967cdb (diff) | |
download | ATCD-7374b0209e7ac3b6e22bfd86246d02f419d6fbb4.tar.gz |
Merge pull request #606 from mitza-oci/perlace-stacktrace
Process_Unix.pm: optional stack traces and core file generation for stuck processes
Diffstat (limited to 'ACE')
-rw-r--r-- | ACE/bin/PerlACE/Process_Unix.pm | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/ACE/bin/PerlACE/Process_Unix.pm b/ACE/bin/PerlACE/Process_Unix.pm index 487a2880abb..6202626cce1 100644 --- a/ACE/bin/PerlACE/Process_Unix.pm +++ b/ACE/bin/PerlACE/Process_Unix.pm @@ -586,6 +586,20 @@ sub WaitKill ($) if ($status == -1) { print STDERR "ERROR: $self->{EXECUTABLE} timedout\n"; + + if ($ENV{ACE_TEST_LOG_STUCK_STACKS}) { + my $debugger = ($^O eq 'darwin') ? 'lldb' : 'gdb'; + my $commands = ($^O eq 'darwin') ? "-o 'bt all'" + : "-ex 'set pagination off' -ex 'thread apply all backtrace'"; + system "$debugger --batch -p $self->{PROCESS} $commands"; + } + + if ($ENV{ACE_TEST_GENERATE_CORE_FILE}) { + system ($^O ne 'darwin') ? "gcore $self->{PROCESS}" + : "lldb -b -p $self->{PROCESS} -o " . + "'process save-core core.$self->{PROCESS}'"; + } + $self->Kill (); } |