mirror of
https://github.com/async-profiler/async-profiler.git
synced 2026-04-28 10:53:49 +00:00
Compare commits
2 Commits
8aab346c3b
...
v4.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
86adc1605a | ||
|
|
804df3ac8e |
@@ -27,15 +27,18 @@
|
||||
|
||||
### Bug fixes
|
||||
|
||||
- #1727: Allocation profile has wrong units in OTLP format
|
||||
- #1716: Wall-clock Heatmap does not count samples correctly
|
||||
- #1715: Fix Zing crash when profiling cpu+wall together
|
||||
- #1708: Another fix for correct vDSO unwinding on ARM64
|
||||
- #1707: Workaround for JFR shutdown race
|
||||
- #1699: Allow negative keys in JFR constant pool
|
||||
- #1697: Ensure remaining buffer is sufficient for event data in JfrReader
|
||||
- #1657: Re-enable workaround for a long attach on JDK 8
|
||||
- #1654: Prefer perf-events engine when record-cpu or target-cpu are selected
|
||||
- #1585: Scale perf counters in case of multiplexing
|
||||
- #1528: Add a hard-coded limit on the maximum number of jmethodIDs
|
||||
- #1203: Fix "Instance field not found" when using `-Xcheck:jni` on JDK 8
|
||||
- Do not walk past virtual thread continuation barriers
|
||||
|
||||
## [4.3] - 2026-01-20
|
||||
|
||||
@@ -442,7 +442,9 @@ void VMStructs::resolveOffsets() {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_klass_offset_addr != NULL) {
|
||||
JVMFlag* cjc = JVMFlag::find("CheckJNICalls");
|
||||
if (cjc != NULL && !cjc->get() && _klass_offset_addr != NULL) {
|
||||
// Create a synthetic fieldID to access VMKlass from jclass instance
|
||||
_klass = (jfieldID)(uintptr_t)(*_klass_offset_addr << 2 | 2);
|
||||
}
|
||||
|
||||
@@ -461,8 +463,7 @@ void VMStructs::resolveOffsets() {
|
||||
&& (_compact_object_headers ? (_markword_klass_shift >= 0 && _markword_monitor_value == MONITOR_BIT)
|
||||
: _oop_klass_offset >= 0)
|
||||
&& (_symbol_length_offset >= 0 || _symbol_length_and_refcount_offset >= 0)
|
||||
&& _symbol_body_offset >= 0
|
||||
&& _klass != NULL;
|
||||
&& _symbol_body_offset >= 0;
|
||||
|
||||
_has_method_structs = _jmethod_ids_offset >= 0
|
||||
&& _nmethod_method_offset >= 0
|
||||
|
||||
@@ -5,9 +5,11 @@
|
||||
|
||||
package test.vmstructs;
|
||||
|
||||
import one.profiler.test.Assert;
|
||||
import one.profiler.test.Output;
|
||||
import one.profiler.test.Test;
|
||||
import one.profiler.test.TestProcess;
|
||||
import test.alloc.Hello;
|
||||
import test.smoke.Alloc;
|
||||
|
||||
public class VmstructsTests {
|
||||
@@ -25,4 +27,10 @@ public class VmstructsTests {
|
||||
Output out = p.profile("stop -o collapsed");
|
||||
assert out.contains("Alloc.allocate");
|
||||
}
|
||||
|
||||
@Test(mainClass = Hello.class, jvmArgs = "-Xcheck:jni", agentArgs = "start,event=alloc", output = true)
|
||||
public void checkJni(TestProcess p) throws Exception {
|
||||
p.waitForExit();
|
||||
Assert.isEqual(p.exitCode(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user