summaryrefslogtreecommitdiff
path: root/ACE/bin/PerlACE/Process_Unix.pm
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2018-04-10 18:59:38 -0400
committerSteve Huston <shuston@riverace.com>2018-04-10 18:59:38 -0400
commitceb273ea994e3718d2e7197454839bf7c1fcce34 (patch)
tree273df17f62dda934429ca8b4902ec3346b979cf2 /ACE/bin/PerlACE/Process_Unix.pm
parent3718261cb814c3cc598de91fa2bee7ddcdfffc7b (diff)
parent29c5bc48b96635cf8aba0f63e3ebd5f3802452d3 (diff)
downloadATCD-Riverace-case2088.tar.gz
Merge out from masterRiverace-case2088
Diffstat (limited to 'ACE/bin/PerlACE/Process_Unix.pm')
-rw-r--r--ACE/bin/PerlACE/Process_Unix.pm14
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 ();
}