diff options
author | Swyter | 2023-07-02 07:31:23 +0200 |
---|---|---|
committer | Swyter | 2023-07-02 07:31:23 +0200 |
commit | a0129b30b1b82e76a5e002465f42305cbdea52b0 (patch) | |
tree | 848aad9117d8b5305b3406f8eca569776e8627b3 | |
parent | 674054da408f519159697f28d223a3b5f8d21aaf (diff) | |
download | aur-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-- | .SRCINFO | 2 | ||||
-rw-r--r-- | PKGBUILD | 61 |
2 files changed, 60 insertions, 3 deletions
@@ -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 @@ -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 |