summary refs log tree commit diff stats
path: root/results/scraper/fex/26
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--results/scraper/fex/263
-rw-r--r--results/scraper/fex/2612
-rw-r--r--results/scraper/fex/26312
-rw-r--r--results/scraper/fex/26372
-rw-r--r--results/scraper/fex/2646
-rw-r--r--results/scraper/fex/264230
-rw-r--r--results/scraper/fex/26443
-rw-r--r--results/scraper/fex/264539
-rw-r--r--results/scraper/fex/26644
-rw-r--r--results/scraper/fex/26714
-rw-r--r--results/scraper/fex/26703
-rw-r--r--results/scraper/fex/26753
-rw-r--r--results/scraper/fex/2681216
-rw-r--r--results/scraper/fex/26824
-rw-r--r--results/scraper/fex/268456
-rw-r--r--results/scraper/fex/26885
-rw-r--r--results/scraper/fex/26944
-rw-r--r--results/scraper/fex/269543
-rw-r--r--results/scraper/fex/26964
-rw-r--r--results/scraper/fex/269713
-rw-r--r--results/scraper/fex/269830
21 files changed, 486 insertions, 0 deletions
diff --git a/results/scraper/fex/26 b/results/scraper/fex/26
new file mode 100644
index 000000000..27639efde
--- /dev/null
+++ b/results/scraper/fex/26
@@ -0,0 +1,3 @@
+Split OpDispatcher.cpp
+The file is ~5100 LoC and should be able to be split up pretty cleanly around tables.

+Bit unwieldy to navigate at the current size.
\ No newline at end of file
diff --git a/results/scraper/fex/261 b/results/scraper/fex/261
new file mode 100644
index 000000000..342bb12ca
--- /dev/null
+++ b/results/scraper/fex/261
@@ -0,0 +1,2 @@
+Check codegen of llvm/VURAvg for arm64
+The current code likely doesn't use the native `urhadd` opcode, we probably need an intrinsic
\ No newline at end of file
diff --git a/results/scraper/fex/2631 b/results/scraper/fex/2631
new file mode 100644
index 000000000..875401dde
--- /dev/null
+++ b/results/scraper/fex/2631
@@ -0,0 +1,2 @@
+Add a unittest that does a dlopen of libFEXCore
+Currently this API is completely untested. We should have a CI test that does a baseline implementation check.
\ No newline at end of file
diff --git a/results/scraper/fex/2637 b/results/scraper/fex/2637
new file mode 100644
index 000000000..d53b81a83
--- /dev/null
+++ b/results/scraper/fex/2637
@@ -0,0 +1,2 @@
+ENABLE_MOLD produces broken builds
+Linking FEX with `mold` will produce an executable that crashes during startup when attempting to run e.g. `vkcube`. This seems to be a recent regression between now and the start of the `fextl` work, likely related to the `jemalloc` changes.
\ No newline at end of file
diff --git a/results/scraper/fex/264 b/results/scraper/fex/264
new file mode 100644
index 000000000..f1ee849a8
--- /dev/null
+++ b/results/scraper/fex/264
@@ -0,0 +1,6 @@
+`sh/dash -c command` locks up instead of terminating
+wait4(...) waits for the job to end, but then returns -1 w/ errno set to NO CHILD.

+

+repro

+

+```Bin/ELFLoader -- `which sh` -c ls```
\ No newline at end of file
diff --git a/results/scraper/fex/2642 b/results/scraper/fex/2642
new file mode 100644
index 000000000..58526bcb1
--- /dev/null
+++ b/results/scraper/fex/2642
@@ -0,0 +1,30 @@
+FEXBash or FEXInterpreter not working
+When i try to run FEXBash or FEXInterpreter after installing FEX-Emu on Termux It gives me Segmentation fault error.

+What can it be this error?

+ 

+

+

+-I have Installed ubuntu with the comand

+

+proot-distro install ubuntu

+

+   

+

+

+-Ubuntu login

+

+proot-distro login --user root ubuntu --shared-tmp

+

+

+

+

+

+-And installed FEX-Emu

+

+sudo apt update

+

+sudo apt install software-properties-common

+

+curl --silent https://raw.githubusercontent.com/FEX-Emu/FEX/main/Scripts/InstallFEX.py --output /tmp/InstallFEX.py && python3 /tmp/InstallFEX.py && rm /tmp/InstallFEX.py

+

+![Screenshot_20230424-005826](https://user-images.githubusercontent.com/42359324/233898378-6d4bb75f-aaf6-45d3-8d4e-53b9cf1d98a4.png)

diff --git a/results/scraper/fex/2644 b/results/scraper/fex/2644
new file mode 100644
index 000000000..5f9532863
--- /dev/null
+++ b/results/scraper/fex/2644
@@ -0,0 +1,3 @@
+ARM machine-  run x86_64 libraries
+Hi! @phire @1ace @skmp @baikaishiuc @philpax 

+I want to install Qemu on my Arm machine (Ubuntu 22, Linux 4.4, Rock4SE Radxa https://wiki.radxa.com/Rock4/se ) and get access to run libraries so.files in x86_64. Is your FEX a great solution for me? Im new to this. Thanks in advance! :)
\ No newline at end of file
diff --git a/results/scraper/fex/2645 b/results/scraper/fex/2645
new file mode 100644
index 000000000..9bdac7ee5
--- /dev/null
+++ b/results/scraper/fex/2645
@@ -0,0 +1,39 @@
+libFEXCore dlopen/API improvements
+Right now even though FEXCore is provided as a shared library, its API is not really something that works if you want to dlopen it.

+Static linking and dynamic linking is fine with it though. This comes from FEXCore not ever fully being designed to have dlopen be the path of usage.

+

+- Experimental branch: https://github.com/Sonicadvance1/FEX/tree/dlopen_improvements

+- This provides a little test application that can execute test code

+   - `LD_LIBRARY_PATH=./External/FEXCore/Source/ ./FEXCore_Test/APITest`

+   - Need to disable early return on the loader when it fails to find a symbol.

+

+Lots of thing need to be fixed to work with this.

+

+- [ ] Provide a loader API to make people's lives easier

+   - Test branch has this loader in the `FCL::LoadFEXCoreSymbols` function.

+   - Every symbol then gets exposed under `FCL::` prefix

+- [ ] Fully qualify all types used in exported symbols.

+- [ ] Remove all uses of class inheritance across the file boundary

+   - [ ] SignalDelegator

+   - [ ] SyscallHandler

+   - [ ] CodeLoader?

+   - [ ] FEXCore::Config::Layer

+   - [ ] More?

+   - This needs to be done because vtable expose across dlopen boundary is a broken mess.

+   - APITest.cpp has a hack to expose `RegisterFrontendHostSignalHandler` through `FCL` which is a nightmare.

+ - [ ] Need to provide a helper to expose locally visible `jemalloc` symbols that use `FCL::jemalloc` symbols

+    -  APITest.cpp has a simple wrapper for this. This would need to be a in header that is included in all files that use `fexl::`

+    - Bit tricky

+ - [ ] Remove static initializers in FEXCore

+    - These can cause initialization problems in debug builds when symbols aren't fully loaded yet.

+    - [ ] Config.cpp

+    - [ ] More.

+ - [ ] Need some versioning so that if the loader tries to load a different versioned FEXCore, early exit. 

+ - [ ] Remove duplicated symbol names where the only difference is arguments?

+    - Might be able to represent these with some thought? Haven't thought hard about it yet.

+    - [ ] FEXCore::Context::Context::InvalidateGuestCodeRange

+    - [ ] FEXCore::FileLoading::LoadFile

+ - [ ] Work towards lessening symbol leakage. If a symbol isn't actually necessary outside of FEXCore, ensure it isn't leaked.

+ - [ ] Add unit tests that test each aspect of the API individually in as small of chunks as possible

+

+This is going to be quite a bit of work, so delaying it until absolutely necessary will be nice.
\ No newline at end of file
diff --git a/results/scraper/fex/2664 b/results/scraper/fex/2664
new file mode 100644
index 000000000..460ebc39d
--- /dev/null
+++ b/results/scraper/fex/2664
@@ -0,0 +1,4 @@
+AOTIR futexes causing hangs
+Steam has a really high chance of hanging due to AOTIR futexes. Theoretically because these are being held while a fork is called?

+Really frustrating since this interface is currently broken and unused anyway, so it getting in the way is a pain.

+Needs to be fixed because it is likely the cause of hanging in other obscure situations.
\ No newline at end of file
diff --git a/results/scraper/fex/267 b/results/scraper/fex/267
new file mode 100644
index 000000000..612e3a74f
--- /dev/null
+++ b/results/scraper/fex/267
@@ -0,0 +1,14 @@
+Libraries we need to Thunk
+Libraries we need for performance reasons

+- libGL

+- libz

+- libpng

+- libSSL (mbedTLS and OpenSSL?)

+

+

+Libraries we need for compatibility reasons

+- steam client libraries?

+- libGLX?

+

+

+Add more here
\ No newline at end of file
diff --git a/results/scraper/fex/2670 b/results/scraper/fex/2670
new file mode 100644
index 000000000..b2b7c0e44
--- /dev/null
+++ b/results/scraper/fex/2670
@@ -0,0 +1,3 @@
+Ensure all lock instructions test across cacheline
+I noticed the `lock neg` unit test doesn't test across cachelines.

+Ensure all of our lock tests have unit tests for across cacheline boundaries.
\ No newline at end of file
diff --git a/results/scraper/fex/2675 b/results/scraper/fex/2675
new file mode 100644
index 000000000..0feb2423c
--- /dev/null
+++ b/results/scraper/fex/2675
@@ -0,0 +1,3 @@
+Does this emulator run the Rust Game Dedicated server?
+Does this emulator run the Rust Dedicated Game server? 

+Rust is a multiplayer survival video game
\ No newline at end of file
diff --git a/results/scraper/fex/2681 b/results/scraper/fex/2681
new file mode 100644
index 000000000..5848d031b
--- /dev/null
+++ b/results/scraper/fex/2681
@@ -0,0 +1,216 @@
+Sonic Mania movie player very slow block.
+Caught while profiling, the Sonic Mania movie player consumes 72% of CPU time in a **SINGLE** block.

+This block is mostly just bad because of bad codegen.

+![Image_2023-05-18_19-35-45](https://github.com/FEX-Emu/FEX/assets/1018829/c012fa3f-d133-4fcc-940b-91d903dfe883)

+

+Block ripped from their deobfuscated executable (32-bit x86). This block jumps to itself.

+```asm

+movzx   edx, byte [esi+ecx]

+movzx   ecx, byte [esi+edi]

+or      edx, 0xffff0000

+shl     edx, 0x8

+inc     esi

+or      edx, ecx

+mov     ecx, dword [ebp+0xc {arg5}]

+or      dword [eax], edx

+add     eax, 0x4

+cmp     esi, ebx

+jl      0x5cada0

+```

+

+This block is fairly simple, it's combining two bytestreams and a 32-bit stream in to one. Looks like some sort of RGBA combination where one channel is already stored in the destination stream and alpha is forced to 0xFF.

+This has some absolutely abysmal codegen.

+```asm

+(gdb) disas 0x2a10ecfa0,+0x0000013c

+Dump of assembler code from 0x2a10ecfa0 to 0x2a10ed0dc:

+   0x00000002a10ecfa0:  mov     w20, w5

+   0x00000002a10ecfa4:  mov     w21, w10

+   0x00000002a10ecfa8:  add     w20, w20, w21

+   0x00000002a10ecfac:  ldrb    w20, [x20]

+   0x00000002a10ecfb0:  bfxil   x6, x20, #0, #32

+   0x00000002a10ecfb4:  mov     w20, w11

+   0x00000002a10ecfb8:  mov     w21, w10

+   0x00000002a10ecfbc:  add     w20, w20, w21

+   0x00000002a10ecfc0:  ldrb    w20, [x20]

+   0x00000002a10ecfc4:  bfxil   x5, x20, #0, #32

+   0x00000002a10ecfc8:  mov     w20, w6

+   0x00000002a10ecfcc:  orr     w20, w20, #0xffff0000

+   0x00000002a10ecfd0:  bfxil   x6, x20, #0, #32

+   0x00000002a10ecfd4:  mov     w20, w6

+   0x00000002a10ecfd8:  lsl     w20, w20, #8

+   0x00000002a10ecfdc:  bfxil   x6, x20, #0, #32

+   0x00000002a10ecfe0:  mov     w20, w10

+   0x00000002a10ecfe4:  add     w20, w20, #0x1

+   0x00000002a10ecfe8:  bfxil   x10, x20, #0, #32

+   0x00000002a10ecfec:  mov     w20, w5

+   0x00000002a10ecff0:  mov     w21, w6

+   0x00000002a10ecff4:  orr     w20, w21, w20

+   0x00000002a10ecff8:  bfxil   x6, x20, #0, #32

+   0x00000002a10ecffc:  mov     w20, w9

+   0x00000002a10ed000:  add     w20, w20, #0xc

+   0x00000002a10ed004:  ldr     w20, [x20]

+   0x00000002a10ed008:  bfxil   x5, x20, #0, #32

+   0x00000002a10ed00c:  mov     w20, w6

+   0x00000002a10ed010:  mov     w21, w4

+   0x00000002a10ed014:  ldr     w21, [x21]

+   0x00000002a10ed018:  orr     w20, w21, w20

+=> 0x00000002a10ed01c:  mov     w21, w4

+   0x00000002a10ed020:  str     w20, [x21]

+   0x00000002a10ed024:  mov     w20, w4

+   0x00000002a10ed028:  add     w20, w20, #0x4

+   0x00000002a10ed02c:  bfxil   x4, x20, #0, #32

+   0x00000002a10ed030:  mov     w20, w7

+   0x00000002a10ed034:  mov     w21, w10

+   0x00000002a10ed038:  sub     w22, w21, w20

+   0x00000002a10ed03c:  eor     w23, w21, w20

+   0x00000002a10ed040:  eor     w23, w23, w22

+   0x00000002a10ed044:  ubfx    x23, x23, #4, #1

+   0x00000002a10ed048:  strb    w23, [x28, #708]

+   0x00000002a10ed04c:  ubfx    x23, x22, #31, #1

+   0x00000002a10ed050:  strb    w23, [x28, #711]

+   0x00000002a10ed054:  and     x24, x22, #0xff

+   0x00000002a10ed058:  fmov    d0, x24

+   0x00000002a10ed05c:  cnt     v0.8b, v0.8b

+   0x00000002a10ed060:  addv    b0, v0.8b

+   0x00000002a10ed064:  umov    w24, v0.b[0]

+   0x00000002a10ed068:  eor     x24, x24, #0x1

+   0x00000002a10ed06c:  ubfx    x24, x24, #0, #1

+   0x00000002a10ed070:  strb    w24, [x28, #706]

+   0x00000002a10ed074:  cmp     x22, #0x0

+   0x00000002a10ed078:  cset    x24, eq  // eq = none

+   0x00000002a10ed07c:  strb    w24, [x28, #710]

+   0x00000002a10ed080:  cmp     w21, w20

+   0x00000002a10ed084:  cset    x24, cc  // cc = lo, ul, last

+   0x00000002a10ed088:  strb    w24, [x28, #704]

+   0x00000002a10ed08c:  eor     w20, w21, w20

+   0x00000002a10ed090:  eor     w21, w22, w21

+   0x00000002a10ed094:  and     w20, w20, w21

+   0x00000002a10ed098:  ubfx    x20, x20, #31, #1

+   0x00000002a10ed09c:  strb    w20, [x28, #715]

+   0x00000002a10ed0a0:  cmp     w23, w20

+   0x00000002a10ed0a4:  b.ne    0x2a10ecfa0  // b.any

+   0x00000002a10ed0a8:  b       0x2a10ed0d4

+   0x00000002a10ed0ac:  blr     x0

+   0x00000002a10ed0b0:  ldapurh w0, [x8, #-200]

+   0x00000002a10ed0b4:  udf     #2

+   0x00000002a10ed0b8:  .inst   0x005cadc0 ; undefined

+   0x00000002a10ed0bc:  udf     #0

+   0x00000002a10ed0c0:  udf     #316

+   0x00000002a10ed0c4:  udf     #0

+   0x00000002a10ed0c8:  .inst   0x005cada0 ; undefined

+   0x00000002a10ed0cc:  udf     #0

+   0x00000002a10ed0d0:  udf     #312

+   0x00000002a10ed0d4:  adr     x0, 0x2a10ed0d0

+   0x00000002a10ed0d8:  str     x0, [x28, #184]

+   ```

+

+llvm-mca is quite damning.

+```bash

+llvm-mca -mcpu=cortex-x1c -mattr=+rcpc-immo mania.txt

+Iterations:        100

+Instructions:      6900

+Total Cycles:      5394

+Total uOps:        7100

+

+Dispatch Width:    3

+uOps Per Cycle:    1.32

+IPC:               1.28

+Block RThroughput: 23.7

+```

+

+And here is an ASM test example that can run in our unit tests to see how much the codegen improves.

+

+```asm

+%ifdef CONFIG

+{

+  "Mode": "32BIT"

+}

+%endif

+

+; Original

+; movzx   edx, byte [esi+ecx]

+; movzx   ecx, byte [esi+edi]

+; or      edx, 0xffff0000

+; shl     edx, 0x8

+; inc     esi

+; or      edx, ecx

+; mov     ecx, dword [ebp+0xc {arg5}]

+; or      dword [eax], edx

+; add     eax, 0x4

+; cmp     esi, ebx

+; jl      0x5cada0

+

+mov ebp, 0xe0000000

+

+; [ebp + 0xc] contains src1 offset

+mov dword [ebp + 0xc], 8

+

+; ebx contains loop iteration end offset

+lea ebx, .data

+add ebx, 1

+

+; esi contains the pointer to the data bases

+lea esi, .data

+

+; edi contains src1 offset

+mov edi, 0

+

+; ecx starts off with src1 offset

+mov ecx, dword [ebp + 0xc]

+

+; eax contains the dword destination and src that it accumulates to

+lea eax, .data_dst

+

+; Break the block here for easier viewing.

+jmp .loop_top

+

+; This loop is the hot loop in Sonic Mania.

+.loop_top:

+; Load src1

+movzx edx, byte [esi + ecx]

+; Load src1

+movzx ecx, byte [esi + edi]

+

+; set top two channels to 0xFFFF

+; Src1 in low bytes - 0xff'ff'00'<src1>

+or edx, 0xffff0000

+

+; shl edx by 8, shifting off the top 0xff for some reason

+; Src1 in low bytes - 0xff'ff'00'<src1> -> 0xff'00'<src1>'00

+shl edx, 0x8

+

+; increment byte base

+inc esi

+

+; or in Src1 in to low byte

+; 0xff'00'<src1>'<src2>

+or edx, ecx

+

+; Reload src1 offset since it was overwritten

+mov ecx, dword [ebp + 0xc]

+

+; or dword in to eax dest

+or dword [eax], edx

+

+; Increment eax offset

+add eax, 0x4

+

+

+; See if esi matches the end pointer

+cmp esi, ebx

+

+; Rerun loop if the counter isn't at the end yet.

+jl .loop_top

+

+; Exit

+hlt

+

+.data:

+

+dq 0, 0, 0, 0, 0, 0, 0, 0

+

+.data_dst:

+dq 0, 0, 0, 0, 0, 0, 0, 0

+```

+

+Optimizing the issues in this codegen will significantly improve FEX's codegen all over the codebase. So it will be a significant win everywhere. This is some low hanging fruit in our codegen, theoretically fixing most of this should be easy.
\ No newline at end of file
diff --git a/results/scraper/fex/2682 b/results/scraper/fex/2682
new file mode 100644
index 000000000..f6bb06982
--- /dev/null
+++ b/results/scraper/fex/2682
@@ -0,0 +1,4 @@
+How to install on Termux Proot?
+Hi, I was wondering how do I get FEX installed on Termux Proot. I can use box86 but I wanted to try FEX out.

+

+Thanks..
\ No newline at end of file
diff --git a/results/scraper/fex/2684 b/results/scraper/fex/2684
new file mode 100644
index 000000000..dbea66872
--- /dev/null
+++ b/results/scraper/fex/2684
@@ -0,0 +1,56 @@
+Support PR_SET_MDWE
+Supporting PR_SET_MDWE is complex since FEX needs to allocate RWX JIT sections and this causes an application to no longer be able to execute WX pages.

+

+This is implemented in kernel 6.3 in commit `b507808ebce23561d4ff8c2aa1fb949fe402bc61` from ARM. This was implemented to work around a BPF filter problem where they couldn't implement RX + BTI mappings for systemd's `MemoryDenyWriteExecute` feature.

+

+This doesn't prevent allocating memory mirrors with RW + RX permissions. Additionally this flag gets inherited on new threads/processes, so if the application spins a new thread up then FEX will immediately not be able to allocate JIT memory.

+

+To support this we can do a couple things.

+1) Fake it - Just claim it is enabled and not care?

+2) Emulate in syscall handler - If enabled, just make sure all mprotect and mmap calls never have `PROT_EXEC | PROT_WRITE`.

+   - Since this doesn't affect previously mapped things so it works

+   - An annoyance is FEX needs to track all VMA permissions then (Which we already do for mtrack) and ensure if any are trying to be changed to WX that it gets rejected

+   - Kind of a pain

+3) Implement support for memory mirroring in JIT emitters and just enable.

+   - Probably the best solution since this doesn't block mirrors having different permissions

+   - Means we can pass the prctl through to the host

+   - Need to rewrite the emitter to support this. Given two pointers, one for writing and one for doing PC relative calculations against.

+   - ICache invalidation operating on executable mapped range

+   - XByak would need support added as well, which would be a pain.

+   - Consumes double the VA range for JIT code, should be fine.

+   - Needs memfd support.

+   - New JIT region allocation goes from mmap to memfd_create + ftruncate + mmap + mmap + close.

+   - Code caching also would need to be careful here.

+4) mprotect dance

+   - I have never liked this and don't want it.

+   - Since we do backpatching this would add even more overhead to that when it should be really quick.

+

+example:

+```cpp

+int main() {

+#define PR_SET_MDWE                 65

+#define PR_MDWE_REFUSE_EXEC_GAIN   1

+  prctl(PR_SET_MDWE, PR_MDWE_REFUSE_EXEC_GAIN, 0L, 0L, 0L);

+

+  // Test MDWE by allocating a mirror range.

+  // One as RX, one as RW.

+  int memfd = memfd_create("", MFD_CLOEXEC);

+  ftruncate(memfd, 4096);

+  // Needs to be MAP_SHARED for the mirror.

+  void* RW = mmap(nullptr, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, memfd, 0);

+  void* RX = mmap(nullptr, 4096, PROT_READ | PROT_EXEC, MAP_SHARED, memfd, 0);

+  close(memfd);

+  uint64_t Test = 0xc3c3c3c3c3c3c3c3; // Just a bunch of x86-64 ret.

+  memcpy(RW, &Test, sizeof(Test));

+

+  uint64_t Result{};

+  memcpy(&Result, RX, sizeof(Result));

+  printf("Did: 0x%lx == 0x%lx ? %s\n", Test, Result, Test == Result ? "Yes" : "No");

+

+  using Func = void(*)();

+  Func func = (Func)RX;

+  func(); // Will crash if mirror or protection fails.

+

+  return 0;

+}

+```
\ No newline at end of file
diff --git a/results/scraper/fex/2688 b/results/scraper/fex/2688
new file mode 100644
index 000000000..ea5288847
--- /dev/null
+++ b/results/scraper/fex/2688
@@ -0,0 +1,5 @@
+The Witcher 3 slow block
+![Image_2023-05-22_20-44-23](https://github.com/FEX-Emu/FEX/assets/1018829/d836405c-10d0-44b8-95f9-a323a51f8702)

+![Image_2023-05-22_20-44-35](https://github.com/FEX-Emu/FEX/assets/1018829/97f08c51-35c9-4f72-98d1-8769a0ad8a6e)

+![Image_2023-05-22_20-44-41](https://github.com/FEX-Emu/FEX/assets/1018829/812e4b7c-3bb9-4473-9b32-416cef739e97)

+Will populate this with more documentation in the future.
\ No newline at end of file
diff --git a/results/scraper/fex/2694 b/results/scraper/fex/2694
new file mode 100644
index 000000000..1149c16b7
--- /dev/null
+++ b/results/scraper/fex/2694
@@ -0,0 +1,4 @@
+Shadow of the Tomb Raider slow initialization
+Running under Proton 7.0, the initial launcher that comes up is burning a bunch of CPU time in our RA for some reason.

+Native Linux client doesn't have the issue but this is because the Nixxes launcher is replaced with some Feral CEF one (Which has different issues).

+![Image_2023-06-01_10-50-08](https://github.com/FEX-Emu/FEX/assets/1018829/d58bf5d3-2328-4f5a-b599-99c66127fbf7)

diff --git a/results/scraper/fex/2695 b/results/scraper/fex/2695
new file mode 100644
index 000000000..13d6e8db9
--- /dev/null
+++ b/results/scraper/fex/2695
@@ -0,0 +1,43 @@
+Illegal instruction when run Unixbench binary
+**What Program**

+UnixBench: <https://github.com/kdlucas/byte-unixbench.git>.

+

+Precompiled binary tarball from [here](https://mega.nz/file/2Ap2yLpa#fhrsi1Weh8jRPx54ccCktZptN-TuQgGaZDxaNACoA_o)

+

+**Describe the bug**

+

+I try to run unixbench with FEX-2305 in a kunpeng920(ARMv8.2), but failed with Illegal instruction.

+It seems that when run FEX with  a host that `SupportsAVX = false` cause this. There may be something wrong with current OpcodeDispatcher.

+

+**To Reproduce**

+Steps to reproduce the behavior:

+1. Compile UnixBench in x86 machine, or just download the [precompiled tarball](https://mega.nz/file/2Ap2yLpa#fhrsi1Weh8jRPx54ccCktZptN-TuQgGaZDxaNACoA_o).

+2. Set `"EnableAVX": "0"` in Config.json

+3. Run `/build/Bin/FEXLoader -- /path/to/byte-unixbench/UnixBench/pgms/dhry2`

+4. See error

+

+**Expected behavior**

+print help info normally.

+```txt

+Usage: ../x86/byte-unixbench/UnixBench/pgms/dhry2 duration

+```

+

+**Screenshots and Video**

+```txt

+[ERROR] Invalid or Unknown instruction: VMOVDQA 0x0

+[ERROR] Invalid or Unknown instruction: VMOVUPS 0x0

+[ERROR] Invalid or Unknown instruction: VMOVAPS 0x0

+Illegal instruction

+```

+

+**System information:**

+ - OS: Debian bullseye container

+ - CPU/SoC: [kunpeng920](https://www.hisilicon.com/en/products/Kunpeng/Huawei-Kunpeng/Huawei-Kunpeng-920)

+ - RootFS used: Self Created Debian bullseye  Rootfs

+ - FEX version: (FEXGetConfig --version) [FEX-2305]

+ - Thunks Enabled: [No]

+

+**Additional context**

+ - Is this an x86 or x86-64 program: [x86-64]

+ - Does this reproduce on x86-64 host with FEX: [Untested]

+ - Does this reproduce on AArch64 with Radeon/Intel/Nvidia: [Untested and Unrelated]
\ No newline at end of file
diff --git a/results/scraper/fex/2696 b/results/scraper/fex/2696
new file mode 100644
index 000000000..52b066592
--- /dev/null
+++ b/results/scraper/fex/2696
@@ -0,0 +1,4 @@
+Not displaying chinese text
+Installed https://aur.archlinux.org/packages/115pc and run `FEXBash /opt/115pc/115`:

+

+![image](https://github.com/FEX-Emu/FEX/assets/57285379/607c346f-8642-4b2c-b252-afb7bf8a463b)

diff --git a/results/scraper/fex/2697 b/results/scraper/fex/2697
new file mode 100644
index 000000000..42df88685
--- /dev/null
+++ b/results/scraper/fex/2697
@@ -0,0 +1,13 @@
+wine taskmgr crashing
+```

+FEXBash

+FEXBash-user@penguin:~> wine taskmgr

+0050:err:ole:start_rpcss Failed to start RpcSs service

+wine: Unhandled page fault on read access to 00000068 at address 007C5B09 (thread 0024), starting debugger...

+Can't attach process 0020: error 5

+Segmentation fault (core dumped)

+```

+

+fex-emu 2305-1 on archlinux arm

+

+rootfs: ubuntu 22.04

diff --git a/results/scraper/fex/2698 b/results/scraper/fex/2698
new file mode 100644
index 000000000..579afc301
--- /dev/null
+++ b/results/scraper/fex/2698
@@ -0,0 +1,30 @@
+Running ./unbreak_chroot.sh without binfmt
+I am running fex inside lxc unprivileged container, which make binfmt register impossible.

+I got this when running unbreak script

+

+```

+./unbreak_chroot.sh

+Moving rootfs files back to original location

+Moving rootfs folders back to original location

+Moving rootfs apt folders back to original location

+Changing rootfs permissions on /tmp

+Mounting rootfs paths

+[sudo] password for user: 

+Mounting aarch64 paths

+mount: /home/user/.fex-emu/RootFS/Ubuntu_22_04/usr/lib/aarch64-linux-gnu: special device /lib/aarch64-linux-gnu does not exist.

+       dmesg(1) may have more information after failed mount system call.

+Starting FEXServer

+chmod: cannot access '/tmp/1000-Ubuntu_22_04.chroot': No such file or directory

+Chrooting into container

+chroot: failed to run command ‘/bin/bash’: Exec format error

+Cleaning up chroot

+Unmounting aarch64 mounts

+umount: /home/user/.fex-emu/RootFS/Ubuntu_22_04/lib/aarch64-linux-gnu: not mounted

+Unmounting container mounts

+Removing container mount folders

+Backing up chroot files

+Fixing any potential permission issues

+chown: cannot access '/home/user/.fex-emu/RootFS/Ubuntu_22_04/libx32': No such file or directory

+```

+

+The script relies on binfmt to work. Is it possible to remove this requirement?
\ No newline at end of file