1#!/bin/bash
2set -e
3
4SCRIPT_DIR="$(cd $(dirname $0) && pwd)"
5
6PREBUILTS_DIR="$SCRIPT_DIR/../../../../prebuilts"
7
8# Determine OS and architecture
9OS=$(uname -s)
10ARCH=$(uname -m)
11
12# Select the appropriate JDK path
13case "$OS:$ARCH" in
14  Linux:x86_64)
15    JDK_PATH="$PREBUILTS_DIR/jdk/jdk21/linux-x86/bin"
16    ;;
17  Darwin:x86_64)
18    JDK_PATH="$PREBUILTS_DIR/jdk/jdk21/darwin-x86/bin"
19    ;;
20  Darwin:arm64)
21    JDK_PATH="$PREBUILTS_DIR/jdk/jdk21/darwin-arm64/bin"
22    ;;
23  *)
24    echo "Unsupported OS/architecture: $OS:$ARCH" >&2
25    exit 1
26    ;;
27esac
28
29# Use the correct jps and jstack
30jps="$JDK_PATH/jps"
31jstack="$JDK_PATH/jstack"
32
33javaProcessesOutput="$($jps -lmv | grep -v jps)"
34echo
35echo "Outputting java stack information to stdout (see build.log)" >&2
36echo "Java processes: $javaProcessesOutput"
37echo
38javaPids="$(echo "$javaProcessesOutput" | sed 's/ .*//g')"
39echo "Getting stack for processes: $javaPids"
40echo
41for pid in $javaPids; do
42  echo "$jstack $pid"
43  "$jstack" "$pid" || true
44  echo
45done
46echo "Done getting stack for processes: $javaPids"
47