Skip to content

Commit 7fd5af1

Browse files
[GR-45332] Fix various espresso issues.
PullRequest: graal/14246
2 parents 1df395a + 4343c62 commit 7fd5af1

File tree

17 files changed

+248
-100
lines changed

17 files changed

+248
-100
lines changed

espresso/ci/ci_common/common.jsonnet

Lines changed: 80 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,25 @@ local benchmark_suites = ['dacapo', 'renaissance', 'scala-dacapo'];
2424
],
2525
},
2626

27-
linux: self.common + graal_common.linux_amd64 + {
27+
linux_amd64: self.common + graal_common.linux_amd64 + {
2828
packages+: {
2929
'00:devtoolset': '==7', # GCC 7.3.1, make 4.2.1, binutils 2.28, valgrind 3.13.0
3030
'01:binutils': '==2.34',
31-
ruby: "==2.6.5",
31+
ruby: "==3.0.2",
3232
},
3333
},
3434

35-
x52: self.linux + {
35+
x52: {
3636
capabilities+: ['no_frequency_scaling', 'tmpfs25g', 'x52'],
3737
},
3838

39+
linux_aarch64: self.common + graal_common.linux_aarch64 + {
40+
packages+: {
41+
'00:devtoolset': '==7', # GCC 7.3.1, make 4.2.1, binutils 2.28, valgrind 3.13.0
42+
ruby: "==3.0.2",
43+
},
44+
},
45+
3946
darwin_amd64: self.common + graal_common.darwin_amd64 + {
4047
environment+: {
4148
// for compatibility with macOS High Sierra
@@ -44,10 +51,14 @@ local benchmark_suites = ['dacapo', 'renaissance', 'scala-dacapo'];
4451
capabilities+: ['darwin_mojave', 'ram32gb'],
4552
},
4653

47-
windows: self.common + graal_common.windows_amd64 + {
54+
darwin_aarch64: self.common + graal_common.darwin_aarch64 + {
55+
environment+: {
56+
// for compatibility with macOS Big Sur
57+
MACOSX_DEPLOYMENT_TARGET: '11.0',
58+
},
4859
},
49-
windows_17: self.windows + devkits["windows-jdk17"],
50-
windows_20: self.windows + devkits["windows-jdk20"],
60+
61+
windows: self.common + graal_common.windows_amd64,
5162

5263
// generic targets
5364
gate: {targets+: ['gate'], timelimit: "1:00:00"},
@@ -59,59 +70,70 @@ local benchmark_suites = ['dacapo', 'renaissance', 'scala-dacapo'];
5970
onDemand: {targets+: ['on-demand']},
6071
onDemandBench: {targets+: ['bench', 'on-demand']},
6172

73+
linux_amd64_17: graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.linux_amd64,
74+
linux_amd64_20: graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.linux_amd64,
75+
darwin_amd64_17: graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.darwin_amd64,
76+
darwin_amd64_20: graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.darwin_amd64,
77+
linux_aarch64_17: graal_common.labsjdk17 + self.linux_aarch64,
78+
linux_aarch64_20: graal_common.labsjdk20 + self.linux_aarch64,
79+
darwin_aarch64_17: graal_common.labsjdk17 + self.darwin_aarch64,
80+
darwin_aarch64_20: graal_common.labsjdk20 + self.darwin_aarch64,
81+
windows_17: graal_common.labsjdk17 + self.windows + devkits["windows-jdk17"],
82+
windows_20: graal_common.labsjdk20 + self.windows + devkits["windows-jdk20"],
83+
6284
// precise targets and capabilities
63-
jdk17_gate_linux : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.gate + self.linux,
64-
jdk17_gate_darwin : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.gate + self.darwin_amd64,
65-
jdk17_gate_windows : graal_common.labsjdk17 + self.gate + self.windows_17,
66-
jdk17_bench_linux : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.bench + self.x52,
67-
jdk17_bench_darwin : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.bench + self.darwin_amd64,
68-
jdk17_bench_windows : graal_common.labsjdk17 + self.bench + self.windows_17,
69-
jdk17_daily_linux : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.daily + self.linux,
70-
jdk17_daily_darwin : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.daily + self.darwin_amd64,
71-
jdk17_daily_windows : graal_common.labsjdk17 + self.daily + self.windows_17,
72-
jdk17_daily_bench_linux : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.dailyBench + self.x52,
73-
jdk17_daily_bench_darwin : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.dailyBench + self.darwin_amd64,
74-
jdk17_daily_bench_windows : graal_common.labsjdk17 + self.dailyBench + self.windows_17,
75-
jdk17_weekly_linux : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.weekly + self.linux,
76-
jdk17_weekly_darwin : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.weekly + self.darwin_amd64,
77-
jdk17_weekly_windows : graal_common.labsjdk17 + self.weekly + self.windows_17,
78-
jdk17_weekly_bench_linux : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.weeklyBench + self.x52,
79-
jdk17_weekly_bench_darwin : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.weeklyBench + self.darwin_amd64,
80-
jdk17_weekly_bench_windows : graal_common.labsjdk17 + self.weeklyBench + self.windows_17,
81-
jdk17_on_demand_linux : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.onDemand + self.linux,
82-
jdk17_on_demand_darwin : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.onDemand + self.darwin_amd64,
83-
jdk17_on_demand_windows : graal_common.labsjdk17 + self.onDemand + self.windows_17,
84-
jdk17_on_demand_bench_linux : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.onDemandBench + self.x52,
85-
jdk17_on_demand_bench_darwin : graal_common.labsjdk17 + graal_common.labsjdk17LLVM + self.onDemandBench + self.darwin_amd64,
86-
jdk17_on_demand_bench_windows : graal_common.labsjdk17 + self.onDemandBench + self.windows_17,
87-
88-
jdk19_gate_linux : graal_common.labsjdk19 + graal_common.labsjdk19LLVM + self.gate + self.linux,
89-
jdk19_weekly_linux : graal_common.labsjdk19 + graal_common.labsjdk19LLVM + self.weekly + self.linux,
90-
91-
jdk20_gate_linux : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.gate + self.linux,
92-
jdk20_gate_darwin : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.gate + self.darwin_amd64,
93-
jdk20_gate_windows : graal_common.labsjdk20 + self.gate + self.windows_20,
94-
jdk20_bench_linux : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.bench + self.x52,
95-
jdk20_bench_darwin : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.bench + self.darwin_amd64,
96-
jdk20_bench_windows : graal_common.labsjdk20 + self.bench + self.windows_20,
97-
jdk20_daily_linux : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.daily + self.linux,
98-
jdk20_daily_darwin : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.daily + self.darwin_amd64,
99-
jdk20_daily_windows : graal_common.labsjdk20 + self.daily + self.windows_20,
100-
jdk20_daily_bench_linux : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.dailyBench + self.x52,
101-
jdk20_daily_bench_darwin : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.dailyBench + self.darwin_amd64,
102-
jdk20_daily_bench_windows : graal_common.labsjdk20 + self.dailyBench + self.windows_20,
103-
jdk20_weekly_linux : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.weekly + self.linux,
104-
jdk20_weekly_darwin : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.weekly + self.darwin_amd64,
105-
jdk20_weekly_windows : graal_common.labsjdk20 + self.weekly + self.windows_20,
106-
jdk20_weekly_bench_linux : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.weeklyBench + self.x52,
107-
jdk20_weekly_bench_darwin : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.weeklyBench + self.darwin_amd64,
108-
jdk20_weekly_bench_windows : graal_common.labsjdk20 + self.weeklyBench + self.windows_20,
109-
jdk20_on_demand_linux : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.onDemand + self.linux,
110-
jdk20_on_demand_darwin : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.onDemand + self.darwin_amd64,
111-
jdk20_on_demand_windows : graal_common.labsjdk20 + self.onDemand + self.windows_20,
112-
jdk20_on_demand_bench_linux : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.onDemandBench + self.x52,
113-
jdk20_on_demand_bench_darwin : graal_common.labsjdk20 + graal_common.labsjdk20LLVM + self.onDemandBench + self.darwin_amd64,
114-
jdk20_on_demand_bench_windows : graal_common.labsjdk20 + self.onDemandBench + self.windows_20,
85+
jdk17_gate_linux : self.gate + self.linux_amd64_17,
86+
jdk17_gate_darwin : self.gate + self.darwin_amd64_17,
87+
jdk17_gate_windows : self.gate + self.windows_17,
88+
jdk17_bench_linux : self.bench + self.linux_amd64_17 + self.x52,
89+
jdk17_bench_darwin : self.bench + self.darwin_amd64_17,
90+
jdk17_bench_windows : self.bench + self.windows_17,
91+
jdk17_daily_linux : self.daily + self.linux_amd64_17,
92+
jdk17_daily_darwin : self.daily + self.darwin_amd64_17,
93+
jdk17_daily_windows : self.daily + self.windows_17,
94+
jdk17_daily_bench_linux : self.dailyBench + self.linux_amd64_17 + self.x52,
95+
jdk17_daily_bench_darwin : self.dailyBench + self.darwin_amd64_17,
96+
jdk17_daily_bench_windows : self.dailyBench + self.windows_17,
97+
jdk17_weekly_linux : self.weekly + self.linux_amd64_17,
98+
jdk17_weekly_darwin : self.weekly + self.darwin_amd64_17,
99+
jdk17_weekly_windows : self.weekly + self.windows_17,
100+
jdk17_weekly_bench_linux : self.weeklyBench + self.linux_amd64_17 + self.x52,
101+
jdk17_weekly_bench_darwin : self.weeklyBench + self.darwin_amd64_17,
102+
jdk17_weekly_bench_windows : self.weeklyBench + self.windows_17,
103+
jdk17_on_demand_linux : self.onDemand + self.linux_amd64_17,
104+
jdk17_on_demand_darwin : self.onDemand + self.darwin_amd64_17,
105+
jdk17_on_demand_windows : self.onDemand + self.windows_17,
106+
jdk17_on_demand_bench_linux : self.onDemandBench + self.linux_amd64_17 + self.x52,
107+
jdk17_on_demand_bench_darwin : self.onDemandBench + self.darwin_amd64_17,
108+
jdk17_on_demand_bench_windows : self.onDemandBench + self.windows_17,
109+
110+
jdk19_gate_linux : graal_common.labsjdk19 + graal_common.labsjdk19LLVM + self.gate + self.linux_amd64,
111+
jdk19_weekly_linux : graal_common.labsjdk19 + graal_common.labsjdk19LLVM + self.weekly + self.linux_amd64,
112+
113+
jdk20_gate_linux : self.gate + self.linux_amd64_20,
114+
jdk20_gate_darwin : self.gate + self.darwin_amd64_20,
115+
jdk20_gate_windows : self.gate + self.windows_20,
116+
jdk20_bench_linux : self.bench + self.linux_amd64_20 + self.x52,
117+
jdk20_bench_darwin : self.bench + self.darwin_amd64_20,
118+
jdk20_bench_windows : self.bench + self.windows_20,
119+
jdk20_daily_linux : self.daily + self.linux_amd64_20,
120+
jdk20_daily_darwin : self.daily + self.darwin_amd64_20,
121+
jdk20_daily_windows : self.daily + self.windows_20,
122+
jdk20_daily_bench_linux : self.dailyBench + self.linux_amd64_20 + self.x52,
123+
jdk20_daily_bench_darwin : self.dailyBench + self.darwin_amd64_20,
124+
jdk20_daily_bench_windows : self.dailyBench + self.windows_20,
125+
jdk20_weekly_linux : self.weekly + self.linux_amd64_20,
126+
jdk20_weekly_darwin : self.weekly + self.darwin_amd64_20,
127+
jdk20_weekly_windows : self.weekly + self.windows_20,
128+
jdk20_weekly_bench_linux : self.weeklyBench + self.linux_amd64_20 + self.x52,
129+
jdk20_weekly_bench_darwin : self.weeklyBench + self.darwin_amd64_20,
130+
jdk20_weekly_bench_windows : self.weeklyBench + self.windows_20,
131+
jdk20_on_demand_linux : self.onDemand + self.linux_amd64_20,
132+
jdk20_on_demand_darwin : self.onDemand + self.darwin_amd64_20,
133+
jdk20_on_demand_windows : self.onDemand + self.windows_20,
134+
jdk20_on_demand_bench_linux : self.onDemandBench + self.linux_amd64_20 + self.x52,
135+
jdk20_on_demand_bench_darwin : self.onDemandBench + self.darwin_amd64_20,
136+
jdk20_on_demand_bench_windows : self.onDemandBench + self.windows_20,
115137

116138
// shared snippets
117139
eclipse: {

espresso/mx.espresso/mx_espresso.py

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
#
2323

2424
import os
25+
import signal
26+
import subprocess
2527

2628
import mx
2729
import mx_espresso_benchmarks # pylint: disable=unused-import
@@ -64,35 +66,50 @@ def _espresso_standalone_command(args):
6466
)
6567

6668

67-
def _run_espresso_launcher(args=None, cwd=None, nonZeroIsFatal=True):
69+
def _send_sigquit(p):
70+
if mx.is_windows():
71+
sig = signal.CTRL_BREAK_EVENT
72+
else:
73+
sig = signal.SIGQUIT
74+
mx.warn(f"Sending {sig.name} ({sig.value}) to {p.pid} on timeout")
75+
p.send_signal(sig)
76+
try:
77+
# wait up to 10s for process to print stack traces
78+
p.wait(timeout=10)
79+
mx.warn(f"{p.pid} exited within 10s after receiving {sig} with return code: {p.returncode}")
80+
except subprocess.TimeoutExpired:
81+
pass
82+
83+
84+
def _run_espresso_launcher(args=None, cwd=None, nonZeroIsFatal=True, out=None, err=None, timeout=None):
6885
"""Run Espresso launcher within a GraalVM"""
69-
return mx.run(_espresso_launcher_command(args), cwd=cwd, nonZeroIsFatal=nonZeroIsFatal)
86+
return mx.run(_espresso_launcher_command(args), cwd=cwd, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, timeout=timeout, on_timeout=_send_sigquit)
7087

7188

72-
def _run_espresso_standalone(args=None, cwd=None, nonZeroIsFatal=True):
89+
def _run_espresso_standalone(args=None, cwd=None, nonZeroIsFatal=True, out=None, err=None, timeout=None):
7390
"""Run standalone Espresso (not as part of GraalVM) from distribution jars"""
74-
return mx.run_java(_espresso_standalone_command(args), cwd=cwd, nonZeroIsFatal=nonZeroIsFatal)
91+
return mx.run_java(_espresso_standalone_command(args), cwd=cwd, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, timeout=timeout, on_timeout=_send_sigquit)
7592

7693

77-
def _run_java_truffle(args=None, cwd=None, nonZeroIsFatal=True):
94+
def _run_java_truffle(args=None, cwd=None, nonZeroIsFatal=True, out=None, err=None, timeout=None):
7895
"""Run espresso through the standard java launcher within a GraalVM"""
79-
return mx.run(_java_truffle_command(args), cwd=cwd, nonZeroIsFatal=nonZeroIsFatal)
96+
return mx.run(_java_truffle_command(args), cwd=cwd, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, timeout=timeout, on_timeout=_send_sigquit)
8097

8198

82-
def _run_espresso(args=None, cwd=None, nonZeroIsFatal=True):
99+
def _run_espresso(args=None, cwd=None, nonZeroIsFatal=True, out=None, err=None, timeout=None):
83100
if mx_sdk_vm_impl._skip_libraries(espresso_library_config):
84101
# no libespresso, we can only run with the espresso launcher
85-
_run_espresso_launcher(args, cwd, nonZeroIsFatal)
102+
_run_espresso_launcher(args, cwd, nonZeroIsFatal, out, err, timeout)
86103
else:
87-
_run_java_truffle(args, cwd, nonZeroIsFatal)
104+
_run_java_truffle(args, cwd, nonZeroIsFatal, out, err, timeout)
88105

89106

90-
def _run_espresso_meta(args, nonZeroIsFatal=True):
107+
def _run_espresso_meta(args, nonZeroIsFatal=True, timeout=None):
91108
"""Run Espresso (standalone) on Espresso (launcher)"""
92109
return _run_espresso_launcher([
93110
'--vm.Xss4m',
94111
'-Dtruffle.class.path.append=' + mx.dependency('ESPRESSO').path, # on GraalVM the EspressoLanguageProvider must be visible to the GraalVMLocator
95-
] + _espresso_standalone_command(args), nonZeroIsFatal=nonZeroIsFatal)
112+
] + _espresso_standalone_command(args), nonZeroIsFatal=nonZeroIsFatal, timeout=timeout)
96113

97114

98115
class EspressoTags:
@@ -179,6 +196,7 @@ def _espresso_gate_runner(args, tasks):
179196
'-H:-JNIExportSymbols',
180197
'-R:+EnableSignalHandling',
181198
'-R:+InstallSegfaultHandler',
199+
'-H:+DumpThreadStacksOnSignal',
182200
'--features=com.oracle.truffle.espresso.ref.FinalizationFeature',
183201
],
184202
)

espresso/mx.espresso/suite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
# questions.
2222
#
2323
suite = {
24-
"mxversion": "6.17.0",
24+
"mxversion": "6.20.0",
2525
"name": "espresso",
2626
"version" : "23.1.0",
2727
"release" : False,

espresso/src/com.oracle.truffle.espresso.jdwp/src/com/oracle/truffle/espresso/jdwp/api/Ids.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ public T fromId(int id) {
128128
log(() -> "Null object from ID: " + id);
129129
return nullObject;
130130
}
131+
if (id > objects.length) {
132+
return null;
133+
}
131134
WeakReference<T> ref = objects[id];
132135
T o = ref.get();
133136
if (o == null) {

0 commit comments

Comments
 (0)