completed lab 6

This commit is contained in:
Claudio Maggioni 2024-01-03 12:51:13 +01:00
parent e589a83c98
commit dd998eff82
10 changed files with 244 additions and 608 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
java-home-path.txt
/out/
/agent/agent.jar

View file

@ -1,16 +1,39 @@
## Environment
# Lab 6 - Software Performance 2023
This is Lab 6 of the **Software Performance** course at USI.
## Submission Info
| Property | Value |
|------------|----------|
| First Name | Claudio |
| Last Name | Maggioni |
## Setup
To run this application, Java 1.8 is required. The following commands assume that the file `java-home-path.txt` contains
an absolute path pointing to a valid `JAVA_HOME` for Java 1.8. To automatically do this on macOS run:
```shell
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
export PATH="${JAVA_HOME}/bin:$PATH"
/usr/libexec/java_home -V
```
## Agent
### Compile the agent as JAR
to list all installed JVMs. Then run this command to populate `java-home-path.txt`:
```shell
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
/usr/libexec/java_home -v $VERSION > java-home-path.txt
```
Here `$VERSION` is the JVM version number for the Java 1.8 JVM chosen from the previous list.
The following sections explain how to compile each module of this project. The shell blocks may be executed with
IntelliJ IDEA's _RunMarkdown_ feature by opening this file and clicking on the green run button to the side of each
shell block.
## How to compile the agent as JAR
```shell
export JAVA_HOME=`cat java-home-path.txt`
export PATH="${JAVA_HOME}/bin:$PATH"
cd agent/src
find . -name '*.java' -print -exec javac -cp ../lib/\*:. -d ../../out/production/agent \{\} \;
@ -19,34 +42,37 @@ jar cfm agent.jar manifest.txt -C ../out/production/agent .
jar tf agent.jar
```
## Profiler
### Compile the profiler
## How to compile the profiler classes
```shell
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
export JAVA_HOME=`cat java-home-path.txt`
export PATH="${JAVA_HOME}/bin:$PATH"
cd profiler/src
find . -name '*.java' -print -exec javac -d ../../out/production/profiler \{\} \;
cd ../..
```
## Application
### Compile the application
## How to compile the application classes
```shell
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
export JAVA_HOME=`cat java-home-path.txt`
export PATH="${JAVA_HOME}/bin:$PATH"
cd application/src
find . -name '*.java' -print -exec javac -d ../../out/production/application \{\} \;
cd ../..
```
### Run application with agent
### Running
To run the application compile the agent, the profiler and the application and then execute:
```shell
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
export JAVA_HOME=`cat java-home-path.txt`
export PATH="${JAVA_HOME}/bin:$PATH"
java -javaagent:agent/agent.jar=hello -cp out/production/application -Xbootclasspath/p:out/production/profiler ch.usi.inf.sp.dbi.Application
```
java -javaagent:agent/agent.jar=hello \
-cp out/production/application \
-Xbootclasspath/p:out/production/profiler \
ch.usi.inf.sp.dbi.Application
```
The output of this command will include the program output and the calling context tree for the application execution.

View file

@ -6,11 +6,21 @@ import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.*;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;
import java.util.Set;
import java.util.Arrays;
import java.util.List;
public class ClassTransformer implements ClassFileTransformer {
private static final List<String> classBlacklist = Arrays.asList(
"java/",
"javax/",
"sun/",
"com/sun/",
"jdk/",
"ch/usi/inf/sp/dbi/profiler/"
);
public static byte[] instrument(final byte[] bytecode) {
final ClassReader cr = new ClassReader(bytecode);
final ClassNode cn = new ClassNode();
@ -28,7 +38,6 @@ public class ClassTransformer implements ClassFileTransformer {
instrumentEntry(cn, mn);
instrumentExit(cn, mn);
}
}
private static void instrumentEntry(ClassNode cn, MethodNode mn) {
@ -67,26 +76,22 @@ public class ClassTransformer implements ClassFileTransformer {
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException {
// className.startsWith("java/") ||
// className.startsWith("javax/") ||
// className.startsWith("sun/") ||
// className.startsWith("com/sun/") ||
// className.startsWith("jdk/") ||
byte[] classfileBuffer) {
if (!className.startsWith("ch/usi/inf/sp/dbi/") ||
className.startsWith("ch/usi/inf/sp/dbi/agent/") ||
className.startsWith("ch/usi/inf/sp/dbi/profiler/")) {
System.out.println("Skipping class <" + loader + ", " + className + ">");
if (classBlacklist.stream().anyMatch(className::startsWith)) {
System.out.printf("Skipping class <%s, %s> (in blacklist)%n", loader, className);
return classfileBuffer;
}
System.out.println("About to transform class <" + loader + ", " + className + ">");
System.out.printf("About to transform class <%s, %s>%n", loader, className);
try {
return instrument(classfileBuffer);
} catch (Throwable e) {
System.out.printf("Error instrumenting class <%s>: %s%n", className, e.getMessage());
e.printStackTrace(System.err);
return classfileBuffer;
return classfileBuffer; // return non-instrumented class
}
}
}

View file

@ -2,17 +2,43 @@ package ch.usi.inf.sp.dbi;
public class Application {
public static void main(String... args) {
fib(20);
fib(5);
final Parent[] children = new Parent[] {new Child(), new Child2()};
}
public static int fib(int n) {
System.out.println("fib(" + n + ")");
if (n == 0 || n == 1) {
return n;
if (n == 0) {
return return0();
} else if (n == 1) {
return return1();
} else {
int i = fib(n-1) + fib(n-2);
System.out.println("fib(" + n + ") = " + i);
return i;
return fib(n - 1) + fib(n - 2);
}
}
private static int return1() {
return 1;
}
private static int return0() {
return 0;
}
static class Parent {
static {
fib(1);
}
}
static class Child extends Parent {
static {
fib(3);
}
}
static class Child2 extends Parent {
static {
fib(2);
}
}
}

View file

@ -1,490 +0,0 @@
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (exceptions.cpp:471), pid=5684, tid=0x0000000000001703
# fatal error: ExceptionMark destructor expects no pending exceptions
#
# JRE version: OpenJDK Runtime Environment (8.0_345-b01) (build 1.8.0_345-b01)
# Java VM: OpenJDK 64-Bit Server VM (25.345-b01 mixed mode bsd-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# https://github.com/adoptium/adoptium-support/issues
#
--------------- T H R E A D ---------------
Current thread (0x00007f77bc80a800): JavaThread "main" [_thread_in_vm, id=5891, stack(0x0000700002fed000,0x00007000030ed000)]
Stack: [0x0000700002fed000,0x00007000030ed000], sp=0x00007000030ecc50, free space=1023k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.dylib+0x59ba9e] VMError::report_and_die()+0x440
V [libjvm.dylib+0x1d2b84] report_vm_error(char const*, int, char const*, char const*)+0x55
V [libjvm.dylib+0x22c3e9] ExceptionMark::~ExceptionMark()+0x71
V [libjvm.dylib+0x562cd4] Threads::create_vm(JavaVMInitArgs*, bool*)+0xe2e
V [libjvm.dylib+0x313f1d] JNI_CreateJavaVM+0x5d
C [java+0x24be] JavaMain+0x10b
C [libsystem_pthread.dylib+0x6202] _pthread_start+0x63
C [libsystem_pthread.dylib+0x1bab] thread_start+0xf
C 0x0000000000000000
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x00007f77ba811000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=22019, stack(0x0000700004329000,0x0000700004429000)]
0x00007f77bc851000 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=21763, stack(0x0000700004226000,0x0000700004326000)]
0x00007f77bc80e800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=19203, stack(0x0000700004123000,0x0000700004223000)]
0x00007f77bc013000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=19715, stack(0x0000700004020000,0x0000700004120000)]
0x00007f77bc00c000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=18435, stack(0x0000700003f1d000,0x000070000401d000)]
0x00007f77bb82e800 JavaThread "Finalizer" daemon [_thread_blocked, id=16643, stack(0x0000700003d14000,0x0000700003e14000)]
0x00007f77bb82b800 JavaThread "Reference Handler" daemon [_thread_blocked, id=13315, stack(0x0000700003c11000,0x0000700003d11000)]
=>0x00007f77bc80a800 JavaThread "main" [_thread_in_vm, id=5891, stack(0x0000700002fed000,0x00007000030ed000)]
Other Threads:
0x00007f77bb827000 VMThread [stack: 0x0000700003b0e000,0x0000700003c0e000] [id=13571]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
heap address: 0x00000006c0000000, size: 4096 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
Compressed class space size: 1073741824 Address: 0x00000007c0000000
Heap:
PSYoungGen total 76288K, used 6610K [0x000000076ab00000, 0x0000000770000000, 0x00000007c0000000)
eden space 65536K, 10% used [0x000000076ab00000,0x000000076b174b90,0x000000076eb00000)
from space 10752K, 0% used [0x000000076f580000,0x000000076f580000,0x0000000770000000)
to space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000)
ParOldGen total 175104K, used 0K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000)
object space 175104K, 0% used [0x00000006c0000000,0x00000006c0000000,0x00000006cab00000)
Metaspace used 3336K, capacity 4920K, committed 5120K, reserved 1056768K
class space used 343K, capacity 424K, committed 512K, reserved 1048576K
Card table byte_map: [0x0000000104301000,0x0000000104b02000] byte_map_base: 0x0000000100d01000
Marking Bits: (ParMarkBitMap*) 0x000000010544cf08
Begin Bits: [0x00000001150bd000, 0x00000001190bd000)
End Bits: [0x00000001190bd000, 0x000000011d0bd000)
Polling page: 0x0000000103a00000
CodeCache: size=245760Kb used=1258Kb max_used=1258Kb free=244501Kb
bounds [0x0000000105b67000, 0x0000000105dd7000, 0x0000000114b67000]
total_blobs=364 nmethods=94 adapters=186
compilation: enabled
Compilation events (10 events):
Event: 0.135 Thread 0x00007f77ba811000 nmethod 92 0x0000000105c97690 code [0x0000000105c97860, 0x0000000105c98308]
Event: 0.135 Thread 0x00007f77ba811000 94 3 org.objectweb.asm.SymbolTable::addType (81 bytes)
Event: 0.136 Thread 0x00007f77ba811000 nmethod 94 0x0000000105c9a6d0 code [0x0000000105c9a8a0, 0x0000000105c9afb8]
Event: 0.136 Thread 0x00007f77ba811000 85 3 org.objectweb.asm.MethodWriter::addSuccessorToCurrentBasicBlock (24 bytes)
Event: 0.136 Thread 0x00007f77ba811000 nmethod 85 0x0000000105c9b310 code [0x0000000105c9b480, 0x0000000105c9b750]
Event: 0.136 Thread 0x00007f77ba811000 55 1 org.objectweb.asm.SymbolTable::getMajorVersion (5 bytes)
Event: 0.136 Thread 0x00007f77ba811000 nmethod 55 0x0000000105c973d0 code [0x0000000105c97520, 0x0000000105c97630]
Event: 0.136 Thread 0x00007f77ba811000 90 3 org.objectweb.asm.Frame::pop (42 bytes)
Event: 0.136 Thread 0x00007f77ba811000 nmethod 90 0x0000000105c9b890 code [0x0000000105c9ba00, 0x0000000105c9bbf0]
Event: 0.136 Thread 0x00007f77ba811000 89 3 org.objectweb.asm.Frame::getAbstractTypeFromDescriptor (415 bytes)
GC Heap History (0 events):
No events
Deoptimization events (1 events):
Event: 0.135 Thread 0x00007f77bc80a800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000105c9358c method=org.objectweb.asm.Frame.merge(Lorg/objectweb/asm/SymbolTable;I[II)Z @ 55
Classes redefined (0 events):
No events
Internal exceptions (5 events):
Event: 0.026 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; name or signature does not match> (0x000000076ab07cc0) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temur
Event: 0.026 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.prefetchRead(Ljava/lang/Object;J)V name or signature does not match> (0x000000076ab07fa8) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temurin/workspace/build
Event: 0.136 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoClassDefFoundError': ch/usi/inf/sp/dbi/profiler/Profiler> (0x000000076b02d3c8) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temurin/workspace/build/src/hotspot/src/share/vm/classfile/systemDictionary
Event: 0.136 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoClassDefFoundError'> (0x000000076b02d3c8) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temurin/workspace/build/src/hotspot/src/share/vm/oops/instanceKlass.cpp, line 964]
Event: 0.136 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoClassDefFoundError'> (0x000000076b02d3c8) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temurin/workspace/build/src/hotspot/src/share/vm/oops/instanceKlass.cpp, line 964]
Events (10 events):
Event: 0.118 Thread 0x00007f77ba811000 Thread added: 0x00007f77ba811000
Event: 0.118 loading class java/lang/invoke/MethodHandleImpl
Event: 0.119 loading class org/objectweb/asm/tree/TryCatchBlockNode
Event: 0.119 loading class org/objectweb/asm/tree/TryCatchBlockNode done
Event: 0.135 Thread 0x00007f77bc80a800 Uncommon trap: trap_request=0xffffff65 fr.pc=0x0000000105c9358c
Event: 0.135 Thread 0x00007f77bc80a800 DEOPT PACKING pc=0x0000000105c9358c sp=0x00007000030eaa30
Event: 0.135 Thread 0x00007f77bc80a800 DEOPT UNPACKING pc=0x0000000105bac47a sp=0x00007000030ea9c0 mode 2
Event: 0.136 loading class java/lang/invoke/MethodHandleImpl done
Event: 0.136 loading class ch/usi/inf/sp/dbi/profiler/Profiler
Event: 0.136 loading class ch/usi/inf/sp/dbi/profiler/Profiler done
Dynamic libraries:
0x00007ff81ea17000 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
0x00007ff8076b7000 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
0x00007ff80a914000 /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
0x00007ff805023000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x00007ff810e78000 /usr/lib/libSystem.B.dylib
0x00007ff808abd000 /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
0x00007ffb0edf5000 /System/Library/PrivateFrameworks/CollectionViewCore.framework/Versions/A/CollectionViewCore
0x00007ff818350000 /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
0x00007ff80ec07000 /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap
0x00007ff81380c000 /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport
0x00007ff813895000 /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity
0x00007ffc10131000 /System/Library/PrivateFrameworks/WindowManagement.framework/Versions/A/WindowManagement
0x00007ff804cdc000 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x00007ff812bc3000 /usr/lib/libspindump.dylib
0x00007ff808c99000 /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
0x00007ff80cc4d000 /usr/lib/libapp_launch_measurement.dylib
0x00007ff80bdc5000 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics
0x00007ff80cc50000 /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout
0x00007ff80e47c000 /System/Library/Frameworks/Metal.framework/Versions/A/Metal
0x00007ff80f3ce000 /usr/lib/liblangid.dylib
0x00007ff80ec0c000 /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG
0x00007ff80964f000 /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
0x00007ff809aa3000 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
0x00007ff818aa5000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
0x00007ff812a27000 /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
0x00007ff80e45d000 /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
0x00007ff80bdf1000 /usr/lib/libDiagnosticMessagesClient.dylib
0x00007ff810d8d000 /usr/lib/libz.1.dylib
0x00007ff81c41f000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
0x00007ff80ebf3000 /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
0x00007ff806f74000 /usr/lib/libicucore.A.dylib
0x00007ff8147de000 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
0x00007ff813818000 /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
0x00007ff90d15c000 /System/Library/PrivateFrameworks/TextInput.framework/Versions/A/TextInput
0x00007ff8095a9000 /usr/lib/libMobileGestalt.dylib
0x00007ff80e957000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x00007ff80c588000 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
0x00007ff806bd7000 /System/Library/Frameworks/Security.framework/Versions/A/Security
0x00007ff818388000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
0x00007ff80c97c000 /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
0x00007ff8064c9000 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
0x00007ff80bed1000 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
0x00007ff812ff9000 /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
0x00007ff8095a8000 /usr/lib/libenergytrace.dylib
0x00007ff822d9f000 /System/Library/PrivateFrameworks/RenderBox.framework/Versions/A/RenderBox
0x00007ff807590000 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x00007ff8187a0000 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
0x00007ff80cbe4000 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
0x00007ffa1f5dd000 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
0x00007ff80cc99000 /usr/lib/libxml2.2.dylib
0x00007ff8101c7000 /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag
0x00007ff803c3b000 /usr/lib/libobjc.A.dylib
0x00007ff803f33000 /usr/lib/libc++.1.dylib
0x00007ff818717000 /System/Library/Frameworks/Accessibility.framework/Versions/A/Accessibility
0x00007ff80a25c000 /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
0x00007ff80406b000 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x00007ff80ef74000 /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
0x00007ff8062c4000 /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
0x00007ffb053e6000 /System/Library/Frameworks/CoreTransferable.framework/Versions/A/CoreTransferable
0x00007ffb0582f000 /System/Library/Frameworks/DeveloperToolsSupport.framework/Versions/A/DeveloperToolsSupport
0x00007ff80ec45000 /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
0x00007ffb09de7000 /System/Library/Frameworks/Symbols.framework/Versions/A/Symbols
0x00007ff810e7e000 /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking
0x00007ff814256000 /usr/lib/swift/libswiftCore.dylib
0x00007ff909e25000 /usr/lib/swift/libswiftCoreFoundation.dylib
0x00007ff907d55000 /usr/lib/swift/libswiftCoreGraphics.dylib
0x00007ff909e62000 /usr/lib/swift/libswiftCoreImage.dylib
0x00007ff907d5c000 /usr/lib/swift/libswiftDarwin.dylib
0x00007ff81a10f000 /usr/lib/swift/libswiftDispatch.dylib
0x00007ff909e63000 /usr/lib/swift/libswiftIOKit.dylib
0x00007ff915e23000 /usr/lib/swift/libswiftMetal.dylib
0x00007ff922880000 /usr/lib/swift/libswiftOSLog.dylib
0x00007ff81c881000 /usr/lib/swift/libswiftObjectiveC.dylib
0x00007ff919a28000 /usr/lib/swift/libswiftQuartzCore.dylib
0x00007ff91da9b000 /usr/lib/swift/libswiftUniformTypeIdentifiers.dylib
0x00007ff909e35000 /usr/lib/swift/libswiftXPC.dylib
0x00007ffc1883d000 /usr/lib/swift/libswift_Concurrency.dylib
0x00007ff81c885000 /usr/lib/swift/libswiftos.dylib
0x00007ff90d0be000 /usr/lib/swift/libswiftsimd.dylib
0x00007ff811016000 /usr/lib/libcompression.dylib
0x00007ff81374c000 /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
0x00007ff8126cd000 /usr/lib/libate.dylib
0x00007ff810e72000 /usr/lib/system/libcache.dylib
0x00007ff810e2d000 /usr/lib/system/libcommonCrypto.dylib
0x00007ff810e56000 /usr/lib/system/libcompiler_rt.dylib
0x00007ff810e4c000 /usr/lib/system/libcopyfile.dylib
0x00007ff803d7c000 /usr/lib/system/libcorecrypto.dylib
0x00007ff803e61000 /usr/lib/system/libdispatch.dylib
0x00007ff804012000 /usr/lib/system/libdyld.dylib
0x00007ff810e68000 /usr/lib/system/libkeymgr.dylib
0x00007ff810e09000 /usr/lib/system/libmacho.dylib
0x00007ff8102a1000 /usr/lib/system/libquarantine.dylib
0x00007ff810e66000 /usr/lib/system/libremovefile.dylib
0x00007ff80961a000 /usr/lib/system/libsystem_asl.dylib
0x00007ff803d1a000 /usr/lib/system/libsystem_blocks.dylib
0x00007ff803eab000 /usr/lib/system/libsystem_c.dylib
0x00007ff810e5e000 /usr/lib/system/libsystem_collections.dylib
0x00007ff80f3bf000 /usr/lib/system/libsystem_configuration.dylib
0x00007ff80e434000 /usr/lib/system/libsystem_containermanager.dylib
0x00007ff810a66000 /usr/lib/system/libsystem_coreservices.dylib
0x00007ff80720a000 /usr/lib/system/libsystem_darwin.dylib
0x00007ffc18b59000 /usr/lib/system/libsystem_darwindirectory.dylib
0x00007ff810e69000 /usr/lib/system/libsystem_dnssd.dylib
0x00007ff803ea8000 /usr/lib/system/libsystem_featureflags.dylib
0x00007ff804040000 /usr/lib/system/libsystem_info.dylib
0x00007ff810da1000 /usr/lib/system/libsystem_m.dylib
0x00007ff803e28000 /usr/lib/system/libsystem_malloc.dylib
0x00007ff809590000 /usr/lib/system/libsystem_networkextension.dylib
0x00007ff807653000 /usr/lib/system/libsystem_notify.dylib
0x00007ff80f3c3000 /usr/lib/system/libsystem_sandbox.dylib
0x00007ff810e63000 /usr/lib/system/libsystem_secinit.dylib
0x00007ff803fcb000 /usr/lib/system/libsystem_kernel.dylib
0x00007ff804036000 /usr/lib/system/libsystem_platform.dylib
0x00007ff804006000 /usr/lib/system/libsystem_pthread.dylib
0x00007ff80b191000 /usr/lib/system/libsystem_symptoms.dylib
0x00007ff803d62000 /usr/lib/system/libsystem_trace.dylib
0x00007ff810e39000 /usr/lib/system/libunwind.dylib
0x00007ff803d1e000 /usr/lib/system/libxpc.dylib
0x00007ff803fb2000 /usr/lib/libc++abi.dylib
0x00007ff810e44000 /usr/lib/liboah.dylib
0x00007ff81247c000 /usr/lib/liblzma.5.dylib
0x00007ff810e7a000 /usr/lib/libfakelink.dylib
0x00007ff8091e3000 /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x00007ff810ecc000 /usr/lib/libarchive.2.dylib
0x00007ff816600000 /System/Library/Frameworks/Combine.framework/Versions/A/Combine
0x00007ffb0ee0a000 /System/Library/PrivateFrameworks/CollectionsInternal.framework/Versions/A/CollectionsInternal
0x00007ffc040bb000 /System/Library/PrivateFrameworks/ReflectionInternal.framework/Versions/A/ReflectionInternal
0x00007ffc0469c000 /System/Library/PrivateFrameworks/RuntimeInternal.framework/Versions/A/RuntimeInternal
0x00007ffc18978000 /usr/lib/swift/libswift_StringProcessing.dylib
0x00007ff80750f000 /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
0x00007ff8102c8000 /usr/lib/libbsm.0.dylib
0x00007ff810e11000 /usr/lib/system/libkxld.dylib
0x00007ff80cc18000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
0x00007ff807215000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
0x00007ff80be39000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
0x00007ff810a6c000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
0x00007ff810f55000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x00007ff80b117000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x00007ff804506000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
0x00007ff81242d000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
0x00007ff80cc25000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
0x00007ff810fdf000 /usr/lib/libapple_nghttp2.dylib
0x00007ff80ada7000 /usr/lib/libsqlite3.dylib
0x00007ff80b199000 /System/Library/Frameworks/Network.framework/Versions/A/Network
0x00007ffc171dd000 /usr/lib/libCoreEntitlements.dylib
0x00007ffb1fbb1000 /System/Library/PrivateFrameworks/MessageSecurity.framework/Versions/A/MessageSecurity
0x00007ff80ad8e000 /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
0x00007ff810989000 /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
0x00007ff8102b0000 /usr/lib/libcoretls.dylib
0x00007ff812495000 /usr/lib/libcoretls_cfhelpers.dylib
0x00007ff811010000 /usr/lib/libpam.2.dylib
0x00007ff81250d000 /usr/lib/libxar.1.dylib
0x00007ff812a00000 /usr/lib/libheimdal-asn1.dylib
0x00007ff8091e2000 /usr/lib/libnetwork.dylib
0x00007ff810e7f000 /usr/lib/libpcap.A.dylib
0x00007ff80b187000 /usr/lib/libdns_services.dylib
0x00007ff80f3ca000 /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
0x00007ff80ffc9000 /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer
0x00007ffc188c4000 /usr/lib/swift/libswift_RegexParser.dylib
0x00007ff810a57000 /usr/lib/libbz2.1.0.dylib
0x00007ff8102a4000 /usr/lib/libCheckFix.dylib
0x00007ff809631000 /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
0x00007ff80f3d0000 /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP
0x00007ff80bdf3000 /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities
0x00007ff8102d8000 /usr/lib/libmecab.dylib
0x00007ff804d63000 /usr/lib/libCRFSuite.dylib
0x00007ff810331000 /usr/lib/libgermantok.dylib
0x00007ff810fbb000 /usr/lib/libThaiTokenizer.dylib
0x00007ff80bed9000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
0x00007ff818773000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
0x00007ff81254f000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
0x00007ff80fdb9000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
0x00007ff80490c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
0x00007ff8110f6000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
0x00007ff810334000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
0x00007ff810ffa000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
0x00007ff8110f0000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
0x00007ff80f4df000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
0x00007ff804c64000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
0x00007ffb1e4ff000 /System/Library/PrivateFrameworks/MIL.framework/Versions/A/MIL
0x00007ff810eb4000 /usr/lib/libiconv.2.dylib
0x00007ff810e05000 /usr/lib/libcharset.1.dylib
0x00007ff80cbfc000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
0x00007ff80cbf0000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
0x00007ff812497000 /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
0x00007ff8101ea000 /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
0x00007ff81251b000 /usr/lib/libutil.dylib
0x00007ffb1c9cc000 /System/Library/PrivateFrameworks/InstalledContentLibrary.framework/Versions/A/InstalledContentLibrary
0x00007ff807550000 /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore
0x00007ffb0cd3d000 /System/Library/PrivateFrameworks/AppleMobileFileIntegrity.framework/Versions/A/AppleMobileFileIntegrity
0x00007ff909e05000 /usr/lib/libmis.dylib
0x00007ff919ef5000 /System/Library/PrivateFrameworks/MobileSystemServices.framework/Versions/A/MobileSystemServices
0x00007ffa1788c000 /System/Library/PrivateFrameworks/ConfigProfileHelper.framework/Versions/A/ConfigProfileHelper
0x00007ff810fbd000 /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
0x00007ff805c62000 /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
0x00007ff81251f000 /usr/lib/libxslt.1.dylib
0x00007ff810ebb000 /usr/lib/libcmph.dylib
0x00007ff80ff98000 /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
0x00007ff80f4da000 /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
0x00007ff804b81000 /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
0x00007ff810273000 /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
0x00007ffc17359000 /usr/lib/libTLE.dylib
0x00007ff812ebb000 /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
0x00007ff8129e5000 /usr/lib/libexpat.1.dylib
0x00007ff8135a2000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
0x00007ff8135cf000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
0x00007ff8136c4000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
0x00007ff812f07000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
0x00007ff813663000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
0x00007ff81365a000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
0x00007ff80e7f7000 /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib
0x00007ff80b0b8000 /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices
0x00007ff81f18b000 /System/Library/PrivateFrameworks/IOSurfaceAccelerator.framework/Versions/A/IOSurfaceAccelerator
0x00007ff812ff5000 /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient
0x00007ff805e2b000 /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
0x00007ff80e6c9000 /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
0x00007ff80e473000 /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
0x00007ff80cd78000 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
0x00007ff81100e000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
0x00007ff813036000 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
0x00007ff80ce04000 /System/Library/PrivateFrameworks/UserManagement.framework/Versions/A/UserManagement
0x00007ff80afea000 /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard
0x00007ff80f3c9000 /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary
0x00007ffb0ccc1000 /System/Library/PrivateFrameworks/AppleKeyStore.framework/Versions/A/AppleKeyStore
0x00007ff813653000 /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler
0x00007ff813637000 /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
0x00007ff81365d000 /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
0x00007ffb18a5e000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/libllvm-flatbuffers.dylib
0x00007ffa1f5d1000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
0x00007ffb155de000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/libGPUCompilerUtils.dylib
0x00007ff8136ca000 /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore
0x00007ffb05911000 /System/Library/Frameworks/ExtensionFoundation.framework/Versions/A/ExtensionFoundation
0x00007ff81a936000 /System/Library/PrivateFrameworks/CoreTime.framework/Versions/A/CoreTime
0x00007ff812bad000 /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport
0x00007ff81512e000 /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata
0x00007ff805f57000 /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore
0x00007ff80e6a3000 /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
0x00007ff8149cc000 /usr/lib/libAudioStatistics.dylib
0x00007ff9091fe000 /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy
0x00007ff814c98000 /usr/lib/libSMC.dylib
0x00007ff81e87b000 /System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI
0x00007ff813569000 /usr/lib/libAudioToolboxUtility.dylib
0x00007ff904c65000 /System/Library/PrivateFrameworks/OSAServicesClient.framework/Versions/A/OSAServicesClient
0x00007ff81513b000 /usr/lib/libperfcheck.dylib
0x00007ff8128c6000 /System/Library/PrivateFrameworks/PlugInKit.framework/Versions/A/PlugInKit
0x00007ff8101dd000 /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices
0x00007ffa069ba000 /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
0x00007ffb23182000 /System/Library/PrivateFrameworks/PhotosensitivityProcessing.framework/Versions/A/PhotosensitivityProcessing
0x00007ffa20bdd000 /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
0x00007ff812b58000 /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
0x00007ffa1f62e000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
0x00007ffa1f5f0000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
0x00007ffa1f7ed000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
0x00007ffa1f5f8000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
0x00007ffa1f5ed000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
0x00007ffc17313000 /usr/lib/libRosetta.dylib
0x00007ffa1f5d8000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
0x00007ffb1371c000 /System/Library/PrivateFrameworks/FontServices.framework/Versions/A/FontServices
0x00007ff812b67000 /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG
0x00007ff80c930000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
0x00007ff812bb7000 /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib
0x00007ffb1371d000 /System/Library/PrivateFrameworks/FontServices.framework/libXTFontStaticRegistryData.dylib
0x00007ff80f33e000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore
0x00007ff8108ef000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage
0x00007ff81034a000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
0x00007ff8107c3000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
0x00007ff810576000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector
0x00007ff8107fe000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray
0x00007ffb075d5000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSFunctions.framework/Versions/A/MPSFunctions
0x00007ffb075b7000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSBenchmarkLoop.framework/Versions/A/MPSBenchmarkLoop
0x00007ff8047bc000 /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
0x00007ff90e3f8000 /System/Library/PrivateFrameworks/IOAccelMemoryInfo.framework/Versions/A/IOAccelMemoryInfo
0x00007ff919e07000 /System/Library/PrivateFrameworks/kperf.framework/Versions/A/kperf
0x00007ff909e18000 /System/Library/PrivateFrameworks/GPURawCounter.framework/Versions/A/GPURawCounter
0x00007ff81a82a000 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
0x00007ff909dd6000 /System/Library/PrivateFrameworks/MallocStackLogging.framework/Versions/A/MallocStackLogging
0x00007ff81276d000 /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
0x00007ff81a7eb000 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
0x00007ff91913a000 /System/Library/PrivateFrameworks/OSAnalytics.framework/Versions/A/OSAnalytics
0x00007ffc0e885000 /System/Library/PrivateFrameworks/VideoToolboxParavirtualizationSupport.framework/Versions/A/VideoToolboxParavirtualizationSupport
0x00007ff812995000 /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
0x00007ff814a10000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
0x00007ff80a409000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
0x00007ff8136d8000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
0x00007ff814dee000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
0x00007ff814de6000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
0x00007ff8149e4000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
0x00007ff813694000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI
0x00007ff814d78000 /usr/lib/libcups.2.dylib
0x00007ff81514a000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
0x00007ff815159000 /System/Library/Frameworks/GSS.framework/Versions/A/GSS
0x00007ff814a89000 /usr/lib/libresolv.9.dylib
0x00007ff812bc9000 /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
0x00007ff81c7ee000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib
0x00007ff8151a6000 /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
0x00007ffb04807000 /System/Library/Frameworks/AVFAudio.framework/Versions/A/AVFAudio
0x00007ff904cae000 /System/Library/PrivateFrameworks/AXCoreUtilities.framework/Versions/A/AXCoreUtilities
0x00007ff814954000 /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession
0x00007ff8163c8000 /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
0x00007ff812aa4000 /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience
0x00007ff8147a9000 /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib
0x00007ff814dfa000 /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration
0x00007ff8194ac000 /System/Library/PrivateFrameworks/PowerLog.framework/Versions/A/PowerLog
0x00007ff8193cd000 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
0x00007ff81c7ef000 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
0x00007ff810051000 /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
0x00007ffb11ef1000 /System/Library/PrivateFrameworks/CoreUtilsExtras.framework/Versions/A/CoreUtilsExtras
0x00007ffb1c859000 /System/Library/PrivateFrameworks/IO80211.framework/Versions/A/IO80211
0x00007ff904cc5000 /usr/lib/libAccessibility.dylib
0x00007ff818aed000 /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
0x00007ff81a34a000 /System/Library/PrivateFrameworks/FrontBoardServices.framework/Versions/A/FrontBoardServices
0x00007ff81bde7000 /System/Library/PrivateFrameworks/BackBoardServices.framework/Versions/A/BackBoardServices
0x00007ff81a406000 /System/Library/PrivateFrameworks/BoardServices.framework/Versions/A/BoardServices
0x00007ff812a09000 /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation
0x00007ff818378000 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
0x00007ffa0a12f000 /System/Library/Frameworks/OSLog.framework/Versions/A/OSLog
0x00007ff909d63000 /System/Library/PrivateFrameworks/LoggingSupport.framework/Versions/A/LoggingSupport
0x0000000104d37000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/server/libjvm.dylib
0x0000000103a12000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libverify.dylib
0x0000000103a69000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libjava.dylib
0x0000000103aae000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libinstrument.dylib
0x0000000103a33000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libzip.dylib
0x0000000103d01000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libnio.dylib
0x0000000103d1a000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libnet.dylib
VM Arguments:
jvm_args: -javaagent:agent/agent.jar=hello
java_command: ch.usi.inf.sp.dbi.Application
java_class_path (initial): out/production/application:out/production/profiler:agent/lib:agent/agent.jar
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=/Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home
PATH=/Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/bin:/Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/bin:/usr/local/Caskroom/miniconda/base/bin:/usr/local/Caskroom/miniconda/base/condabin:/Users/maggicl/.opam/default/bin:/Users/maggicl/.local/bin:/Users/maggicl/Library/Java/JavaVirtualMachines/temurin-17.0.5/Contents/Home/bin:/Users/maggicl/bin:/Users/maggicl/git/github/hledger/bin:/usr/local/sbin:/usr/local/bin:/usr/local/bin:/usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/X11/bin:/Library/TeX/texbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/zfs/bin
SHELL=/bin/zsh
DISPLAY=/private/tmp/com.apple.launchd.dJ1oHJt1k4/org.xquartz:0
Signal Handlers:
SIGSEGV: [libjvm.dylib+0x59c563], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO
SIGBUS: [libjvm.dylib+0x59c563], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGFPE: [libjvm.dylib+0x48f1f7], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGPIPE: [libjvm.dylib+0x48f1f7], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGXFSZ: [libjvm.dylib+0x48f1f7], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: [libjvm.dylib+0x48f1f7], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
SIGUSR2: [libjvm.dylib+0x48faee], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: [libjvm.dylib+0x48dce1], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGINT: [libjvm.dylib+0x48dce1], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGTERM: [libjvm.dylib+0x48dce1], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGQUIT: [libjvm.dylib+0x48dce1], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
--------------- S Y S T E M ---------------
OS:Bsduname:Darwin 23.1.0 Darwin Kernel Version 23.1.0: Mon Oct 9 21:27:27 PDT 2023; root:xnu-10002.41.9~6/RELEASE_X86_64 x86_64
rlimit: STACK 8192k, CORE 0k, NPROC 2784, NOFILE 10240, AS infinity
load average:2.37 2.10 1.88
CPU:total 12 (initial active 12) (6 cores per cpu, 2 threads per core) family 6 model 158 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx
Memory: 4k page, physical 16777216k(185044k free)
/proc/meminfo:
vm_info: OpenJDK 64-Bit Server VM (25.345-b01) for bsd-amd64 JRE (1.8.0_345-b01), built on Aug 2 2022 11:46:33 by "jenkins" with gcc 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.4)
time: Tue Dec 19 16:09:37 2023
timezone: CET
elapsed time: 0.147096 seconds (0d 0h 0m 0s)

View file

@ -0,0 +1,62 @@
package ch.usi.inf.sp.dbi.profiler;
import java.util.*;
public class CCTNode {
private static final String INDENTATION = " ";
private final IFrame frame;
private final Map<IFrame, CCTNode> children = new HashMap<>();
public CCTNode(IFrame frame) {
this.frame = frame;
}
public IFrame getFrame() {
return frame;
}
public CCTNode getOrAddChild(IFrame frame) {
return children.computeIfAbsent(frame, CCTNode::new);
}
public String toString() {
final StringBuilder text = new StringBuilder();
int indentationLevel = 0;
// build a stack of "list-of-children" stacks
final Deque<Deque<CCTNode>> toVisit = new ArrayDeque<>();
toVisit.push(new ArrayDeque<>(Collections.singletonList(this)));
while (!toVisit.isEmpty()) {
// peek the first "list-of-children" stack. If it's empty, we're done so we de-indent and we pop
final Deque<CCTNode> nodes = toVisit.getFirst();
if (nodes.isEmpty()) {
indentationLevel--;
toVisit.pop();
continue;
}
// otherwise, we consume one of the children
final CCTNode node = nodes.pop();
// add indentation indentationLevel times
for (int i = 0; i < indentationLevel; i++) {
text.append(INDENTATION);
}
// and we print it in the tree
text.append(node.frame.getName());
text.append('\n');
// if this node has children, we explore them in DFS fashion by adding an element to the "list-of-children"
// stack
if (!node.children.isEmpty()) {
toVisit.push(new ArrayDeque<>(node.children.values()));
indentationLevel++;
}
}
return text.toString();
}
}

View file

@ -0,0 +1,35 @@
package ch.usi.inf.sp.dbi.profiler;
import java.util.Objects;
public class Frame implements IFrame {
private final String className;
private final String methodName;
private final String methodDescriptor;
public Frame(String className, String methodName, String methodDescriptor) {
this.className = className;
this.methodName = methodName;
this.methodDescriptor = methodDescriptor;
}
@Override
public String getName() {
return String.format("%s.%s%s", className, methodName, methodDescriptor);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Frame frame = (Frame) o;
return Objects.equals(className, frame.className) &&
Objects.equals(methodName, frame.methodName) &&
Objects.equals(methodDescriptor, frame.methodDescriptor);
}
@Override
public int hashCode() {
return Objects.hash(className, methodName, methodDescriptor);
}
}

View file

@ -0,0 +1,6 @@
package ch.usi.inf.sp.dbi.profiler;
public interface IFrame {
String getName();
boolean equals(Object o);
}

View file

@ -1,95 +1,47 @@
package ch.usi.inf.sp.dbi.profiler;
import javax.sound.midi.*;
import javax.swing.*;
import java.util.ArrayDeque;
import java.util.Collections;
import java.util.Deque;
public class Profiler {
private static final DefaultListModel<String> model = new DefaultListModel<>();
private static int size = 0;
private static final CCTNode rootNode = new CCTNode(RootFrame.INSTANCE);
private static final Deque<CCTNode> callStack = new ArrayDeque<>(Collections.singletonList(rootNode));
static {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Profiler");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
model.add(0, "hello");
JList<String> list = new JList<>(model);
JScrollPane p = new JScrollPane(list);
frame.add(p);
frame.pack();
frame.setVisible(true);
});
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
System.out.println("\nCalling Context Tree:");
System.out.println(rootNode);
}));
}
private static MidiEvent createProgramChangeEvent(int channel, int program) throws InvalidMidiDataException {
ShortMessage message = new ShortMessage();
message.setMessage(ShortMessage.PROGRAM_CHANGE, channel, program, 0);
return new MidiEvent(message, 0);
}
public static void play() throws InterruptedException {
final Thread midi = new Thread(() -> {
try {
Sequencer player = MidiSystem.getSequencer();
player.open();
Sequence seq = new Sequence(Sequence.PPQ, 4);
Track track = seq.createTrack();
int channel = 1;
int pitch = size * 2;
pitch = 20 + pitch % 118;
track.add(createProgramChangeEvent(channel, 54));
ShortMessage a = new ShortMessage();
a.setMessage(ShortMessage.NOTE_ON, channel, pitch, 100);
MidiEvent noteOn = new MidiEvent(a, 0);
track.add(noteOn);
ShortMessage b = new ShortMessage();
b.setMessage(ShortMessage.NOTE_OFF, channel, pitch, 100);
MidiEvent noteOff = new MidiEvent(b, 2);
track.add(noteOff);
player.setSequence(seq);
player.start();
} catch (Exception ex) {
ex.printStackTrace();
}
});
midi.start();
midi.join();
private static String indent(int n) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.append(" ");
}
return sb.toString();
}
public static void entry(String clazz, String method, String desc) {
size++;
model.add(0, clazz + "." + method + desc);
log(clazz, method, desc, "entry");
final CCTNode parent = callStack.getFirst();
final Frame frame = new Frame(clazz, method, desc);
callStack.push(parent.getOrAddChild(frame));
// System.out.println("profiler captured: > " + indent(callStack.size()) + callStack.getFirst().getFrame().getName());
}
public static void exit(String clazz, String method, String desc) {
size--;
model.remove(0);
log(clazz, method, desc, "exit");
}
final Frame exitingFrom = new Frame(clazz, method, desc);
final IFrame lastCalled = callStack.isEmpty() ? null : callStack.getFirst().getFrame();
private static void log(String clazz, String method, String desc, String type) {
try {
System.err.println("Profiler: " + type + " " + clazz + "." + method + desc);
play();
try {
Thread.sleep(50);
} catch (InterruptedException ignored) {
}
} catch (Exception e) {
e.printStackTrace(System.err);
if (!exitingFrom.equals(lastCalled)) {
throw new IllegalStateException("Expecting to exit from " + lastCalled + ", but found " + exitingFrom);
}
// System.out.println("profiler captured: < " + indent(callStack.size()) + callStack.getFirst().getFrame().getName());
callStack.pop();
}
}

View file

@ -0,0 +1,13 @@
package ch.usi.inf.sp.dbi.profiler;
public class RootFrame implements IFrame {
public static final RootFrame INSTANCE = new RootFrame();
private RootFrame() {
}
@Override
public String getName() {
return "root";
}
}