summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSwyter2023-07-02 07:31:23 +0200
committerSwyter2023-07-02 07:31:23 +0200
commita0129b30b1b82e76a5e002465f42305cbdea52b0 (patch)
tree848aad9117d8b5305b3406f8eca569776e8627b3
parent674054da408f519159697f28d223a3b5f8d21aaf (diff)
downloadaur-a0129b30b1b82e76a5e002465f42305cbdea52b0.tar.gz
Add a neat workaround for the «process is restricted and not able to run on all logical processors» crash on startup/problem on AMD CPUs. See here for reference: https://gist.github.com/Swyter/0c5043a17d25c6bf93fe3243fdf512d8
-rw-r--r--.SRCINFO2
-rw-r--r--PKGBUILD61
2 files changed, 60 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index c71e573ab2bc..f7f200632268 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = intel-gpa-bin
pkgdesc = Intel® Graphics Performance Analyzers (Intel® GPA) provides tools for graphics analysis and optimizations for making games and other graphics-intensive applications run even faster.
pkgver = 23.2.1686276958
- pkgrel = 2
+ pkgrel = 3
url = https://www.intel.com/content/www/us/en/developer/tools/graphics-performance-analyzers/download.html
arch = x86_64
license = custom
diff --git a/PKGBUILD b/PKGBUILD
index 76df12d7893d..5267ac3983ca 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,8 +1,8 @@
# Maintainer: Swyter <swyterzone+aur@gmail.com>
pkgname=intel-gpa-bin
-url=https://www.intel.com/content/www/us/en/developer/tools/graphics-performance-analyzers/download.html
-pkgrel=2
+url='https://www.intel.com/content/www/us/en/developer/tools/graphics-performance-analyzers/download.html'
+pkgrel=3
pkgver=23.2.1686276958
options=(!strip)
arch=('x86_64')
@@ -54,4 +54,61 @@ package() {
# swy: don't hide the error/warning logging when running on a terminal
sed -i -e 's|> /dev/null 2>&1||g' ${pkgdir}/usr/bin/gpa-*
+
+ # swy: fix the crash at startup on AMD CPUs: terminate called after throwing an instance of 'CpuEnumerator::InconsistentProcessAffinity'
+ # what(): This process is restricted and not able to run on all logical processors managed by OS
+ # function by skipping the affinity core loop altogether, patch the
+ # - com/intel/framedb/libframedb_qt.so used by FrameAnalyzer and
+ # - com/intel/monitor_presenters/libMonitorPresenters.so used by GpaMonitor,
+ # - and the GpaServer ELF itself,
+ # using a generic, binary-agnostic pattern:
+ # ff 41 8b 04 24 85 c0 74 ->
+ # ff 31 c0 90 90 85 c0 74
+
+ # i.e. original disassembly:
+ # 0089a98c 31 c0 XOR EAX,EAX
+ # 0089a98e 48 89 e2 MOV RDX,RSP
+ # 0089a991 e8 8a 6d CALL <EXTERNAL>::sched_getaffinity
+ # a1 ff
+ # 0089a996 41 8b 04 24 MOV EAX,dword ptr [R12] # swy: <--
+ # 0089a99a 85 c0 TEST EAX,EAX
+ # 0089a99c 74 53 JZ LAB_0089a9f1
+
+ # patched disassembly:
+ # 0089a98c 31 c0 XOR EAX,EAX
+ # 0089a98e 48 89 e2 MOV RDX,RSP
+ # 0089a991 e8 8a 6d CALL <EXTERNAL>::sched_getaffinity
+ # a1 ff
+ # 0089a996 31 c0 XOR EAX,EAX /* swy: set param_1 to zero */
+ # 0089a998 90 NOP
+ # 0089a999 90 NOP
+ # 0089a99a 85 c0 TEST EAX,EAX /* swy: if (param_1 == 0) */
+ # 0089a99c 74 53 JZ LAB_0089a9f1
+
+ # sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' '${pkgdir}/opt/intel/gpa/*.so'
+
+ # swy: find who's affected with a `grep -R 'This process is restricted and not able to run on all logical processors' /opt/intel/gpa/`
+ # swy: boom, now it launches!
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/playback"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/GpaPlayer"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/libGLHUD.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/x86/libGLHUD.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/x86/libGLESTrace.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/x86/libGLESCapture.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/GpaServer"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/libGLESTrace.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/libRealtimePresenters.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/libTracePresenters.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/com/intel/framedb/libframedb_qt.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/com/intel/openfiledialog/libOpenFileDialog.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/com/intel/common_presenters/libQTCommonPresenters.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/com/intel/monitor_presenters/libMonitorPresenters.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/com/intel/ta_presenters/libTraceAnalyzerPresenters.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/com/intel/sa_presenters/libSystemAnalyzerPresenters.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/Streams/libStreamPlayback.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/Streams/libStreamPlayer.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/libGLESCapture.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/libGLPlayer.so"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/GpaRemotePlayer"
+ sed -i -e 's|\xff\x41\x8b\x04\x24\x85\xc0\x74|\xff\x31\xc0\x90\x90\x85\xc0\x74|g' "${pkgdir}/opt/intel/gpa/libTimelinePresenters.so"
} \ No newline at end of file