Libstrangle stopped working, any resolution known?

I know there is no garuda-inxi will update later when i start a pc

Does anyone knows how to fix linstrangle? Lately i believe in january there was a gcc or glibc update, which have broken libstrangle, now games on lutris do not start if libstrangle is installed, i was checking at least four different libstrangle versions from github, and all fails

Clueless how to resolve it, or is there any other way to liimit fps on lutris? I was trying to use gamescope but it scale put windows as well so it do not work same as libstrangle, or maybe i need to use dxvk?

System:
  Kernel: 6.7.5-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc avail: hpet,acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=6f7982fa-f801-4a9f-a47e-a2cd8f08ee86 rw rootflags=subvol=@
    quiet quiet rd.udev.log_priority=3 vt.global_cursor_default=0
    resume=UUID=4fb2a623-f3ae-4757-9e65-4eb2471f1194 loglevel=3 ibt=off
  Desktop: KDE Plasma v: 5.27.10 tk: Qt v: 5.15.12 info: frameworks
    v: 5.115.0 wm: kwin_x11 vt: 2 dm: SDDM Distro: Garuda base: Arch Linux
Machine:
  Type: Desktop Mobo: Gigabyte model: B450 AORUS ELITE
    serial: <superuser required> uuid: <superuser required> UEFI: American
    Megatrends LLC. v: F65a date: 02/09/2023
CPU:
  Info: model: AMD Ryzen 7 5700G with Radeon Graphics bits: 64 type: MT MCP
    arch: Zen 3 gen: 4 level: v3 note: check built: 2021-22
    process: TSMC n7 (7nm) family: 0x19 (25) model-id: 0x50 (80) stepping: 0
    microcode: 0xA50000D
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 512 KiB desc: d-8x32 KiB; i-8x32 KiB L2: 4 MiB desc: 8x512 KiB
    L3: 16 MiB desc: 1x16 MiB
  Speed (MHz): avg: 1410 high: 3420 min/max: 400/4673 scaling:
    driver: amd-pstate-epp governor: powersave cores: 1: 3420 2: 2995 3: 400
    4: 400 5: 400 6: 400 7: 400 8: 400 9: 400 10: 3180 11: 2988 12: 400
    13: 2986 14: 400 15: 400 16: 2994 bogomips: 121372
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3
  Vulnerabilities: <filter>
Graphics:
  Device-1: AMD Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT]
    vendor: Sapphire driver: amdgpu v: kernel arch: RDNA-2 code: Navi-2x
    process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4 speed: 16 GT/s
    lanes: 16 ports: active: HDMI-A-1 empty: DP-1,DP-2,DP-3 bus-ID: 03:00.0
    chip-ID: 1002:73df class-ID: 0300
  Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.4
    compositor: kwin_x11 driver: X: loaded: amdgpu unloaded: modesetting,radeon
    alternate: fbdev,vesa dri: radeonsi gpu: amdgpu display-ID: :0 screens: 1
  Screen-1: 0 s-res: 2560x1440 s-dpi: 96 s-size: 677x381mm (26.65x15.00")
    s-diag: 777mm (30.58")
  Monitor-1: HDMI-A-1 mapped: HDMI-A-0 model: Samsung LC27G5xT
    serial: <filter> built: 2021 res: 2560x1440 hz: 144 dpi: 109 gamma: 1.2
    size: 597x336mm (23.5x13.23") diag: 685mm (27") ratio: 16:9 modes:
    max: 2560x1440 min: 720x400
  API: EGL v: 1.5 hw: drv: amd radeonsi platforms: device: 0 drv: radeonsi
    device: 1 drv: swrast surfaceless: drv: radeonsi x11: drv: radeonsi
    inactive: gbm,wayland
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 24.0.1-arch1.1
    glx-v: 1.4 direct-render: yes renderer: AMD Radeon RX 6700 XT (radeonsi
    navi22 LLVM 16.0.6 DRM 3.57 6.7.5-zen1-1-zen) device-ID: 1002:73df
    memory: 11.72 GiB unified: no
  API: Vulkan v: 1.3.276 layers: 13 device: 0 type: discrete-gpu name: AMD
    Radeon RX 6700 XT (RADV NAVI22) driver: mesa radv v: 24.0.1-arch1.1
    device-ID: 1002:73df surfaces: xcb,xlib device: 1 type: cpu name: llvmpipe
    (LLVM 16.0.6 256 bits) driver: mesa llvmpipe v: 24.0.1-arch1.1 (LLVM
    16.0.6) device-ID: 10005:0000 surfaces: xcb,xlib
Audio:
  Device-1: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel pcie:
    gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 03:00.1 chip-ID: 1002:ab28
    class-ID: 0403
  Device-2: AMD Renoir Radeon High Definition Audio driver: snd_hda_intel
    v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16 link-max: gen: 4
    speed: 16 GT/s bus-ID: 0a:00.1 chip-ID: 1002:1637 class-ID: 0403
  Device-3: AMD Family 17h/19h HD Audio vendor: Gigabyte
    driver: snd_hda_intel v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16
    link-max: gen: 4 speed: 16 GT/s bus-ID: 0a:00.6 chip-ID: 1022:15e3
    class-ID: 0403
  API: ALSA v: k6.7.5-zen1-1-zen status: kernel-api with: aoss
    type: oss-emulator tools: N/A
  Server-1: PipeWire v: 1.0.3 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: Gigabyte driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s
    lanes: 1 port: e000 bus-ID: 06:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: eno1 state: up speed: 1000 Mbps duplex: full mac: <filter>
  Info: services: NetworkManager,systemd-timesyncd
Bluetooth:
  Device-1: Cambridge Silicon Radio Bluetooth Dongle (HCI mode) driver: btusb
    v: 0.8 type: USB rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-9:4
    chip-ID: 0a12:0001 class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 0 state: down bt-service: disabled
    rfk-block: hardware: no software: yes address: see --recommends
Drives:
  Local Storage: total: 1.56 TiB used: 508.06 GiB (31.7%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 980 PRO 1TB
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: 5B2QGXA7 temp: 28.9 C
    scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 vendor: GOODRAM model: SSDPR-CL100-480-G2
    size: 447.13 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    tech: SSD serial: <filter> fw-rev: V4.9 scheme: MBR
  ID-3: /dev/sdb maj-min: 8:16 vendor: PNY model: CS900 240GB SSD
    size: 223.57 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    tech: SSD serial: <filter> fw-rev: 0615 scheme: GPT
Partition:
  ID-1: / raw-size: 100 GiB size: 100 GiB (100.00%) used: 23.96 GiB (24.0%)
    fs: btrfs dev: /dev/nvme0n1p3 maj-min: 259:3
  ID-2: /boot/efi raw-size: 4 GiB size: 3.99 GiB (99.80%)
    used: 296 KiB (0.0%) fs: vfat dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-3: /home raw-size: 811.51 GiB size: 811.51 GiB (100.00%)
    used: 484.1 GiB (59.7%) fs: btrfs dev: /dev/nvme0n1p4 maj-min: 259:4
  ID-4: /var/log raw-size: 100 GiB size: 100 GiB (100.00%)
    used: 23.96 GiB (24.0%) fs: btrfs dev: /dev/nvme0n1p3 maj-min: 259:3
  ID-5: /var/tmp raw-size: 100 GiB size: 100 GiB (100.00%)
    used: 23.96 GiB (24.0%) fs: btrfs dev: /dev/nvme0n1p3 maj-min: 259:3
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 31.21 GiB used: 46 MiB (0.1%) priority: 100
    comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 16 dev: /dev/zram0
  ID-2: swap-2 type: partition size: 16 GiB used: 0 KiB (0.0%) priority: -2
    dev: /dev/nvme0n1p1 maj-min: 259:1
Sensors:
  System Temperatures: cpu: 30.9 C mobo: N/A gpu: amdgpu temp: 32.0 C
    mem: 30.0 C
  Fan Speeds (rpm): N/A gpu: amdgpu fan: 918
Info:
  Memory: total: 32 GiB available: 31.21 GiB used: 3.16 GiB (10.1%)
  Processes: 398 Power: uptime: 0m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 12.46 GiB services: org_kde_powerdevil,
    power-profiles-daemon, upowerd Init: systemd v: 255 default: graphical
    tool: systemctl
  Packages: pm: pacman pkgs: 1883 libs: 556 tools: octopi,paru,yay
    Compilers: gcc: 13.2.1 Shell: garuda-inxi default: fish v: 3.7.0
    running-in: konsole inxi: 3.3.33
Garuda (2.6.23-1):
  System install date:     2023-06-03
  Last full system update: 2024-02-22
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       No/Undetected
  Failed units:            

Ah yes the DT_HASH patch in glibc.

aur/glibc-eac-locales 2.39-1 [+5 ~3.72]
    Pregenerated locales for GNU C Library
aur/glibc-eac 2.39-1 [+5 ~3.72]
    GNU C Library with DT_HASH patch for games using EAC

as you can see there is an AUR maintaining the patch. However be careful. I don’t have idea of how you should include these in your system and glibc being an essential component of the system it has possibility of rendering system unbootable if the switch is not done properly. So do a full system backup before messing around with glibc.

1 Like

Have found a recent topic, it seems that glibc breaks even more things
https://www.reddit.com/r/linux_gaming/comments/1alzf4f/need_advice_archglibc/

I have an idea. Have you heard of distrobox? It uses docker to install os image and allows you to run apps you install on them as if they were installed natively. I think an example is in order.

Say you have an app that’s only available in say rhel’s repos or is known to work best in their systems with no problems and you are on arch wishing to use that app. You can use distrobox to create a rhel image and then use that image to install the problematic app using dnf or whatever the package manager of the image you downloaded is and then launch and use it as if it were installed natively from your original os.

I was thinking what if you create an arch image using distrobox. Then use docker to get into this image open an interactive shell to it and swap its glibc then get out use distrobox to launch this image and install libstrangle with it so that it’s available to use as a normal app while sandboxed by docker.

Not sure if this solution will work out properly and if it will cause problems or not so do a little reading on this. There are several YT videos on how to use distrobox and most importantly make backups. :slightly_smiling_face:

1 Like

this solution might be nice i’m working with docker daily, so it’s not a problem to me to spin that, but i have found something else which first i want to try out, because i was digging into this issue

here is an issue topic

and there is an resolution which worked for someone there

but it seems that’s also not working, because i cannot build it getting a lot of errors when using make or sudo make

g++ -pthread -rdynamic -fPIC -shared -Wall -std=gnu++17 -fvisibility=hidden -Iinclude -Isrc -DVK_USE_PLATFORM_XLIB_KHR -DHAVE_PTHREAD -DHAVE_TIMESPEC_GET  -m32 -o build/libstrangle_vk32.so src/config.c src/limiter.c src/util.c src/vulkan/vk_enum_to_str.c src/vulkan/overlay.cpp -lrt
src/vulkan/overlay.cpp: In function ‘queue_data* new_queue_data(VkQueue, const VkQueueFamilyProperties*, uint32_t, device_data*)’:
src/vulkan/overlay.cpp:113:33: error: ‘stderr’ was not declared in this scope
113 |                         fprintf(stderr, "'%s' line %i failed with %s\n", \
|                                 ^~~~~~
src/vulkan/overlay.cpp:220:9: note: in expansion of macro ‘VK_CHECK’
220 |         VK_CHECK(device_data->vtable.CreateFence(
|         ^~~~~~~~
src/vulkan/overlay.cpp:41:1: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
40 | #include "limiter.h"
+++ |+#include <cstdio>
41 |
src/vulkan/overlay.cpp:113:25: error: ‘fprintf’ was not declared in this scope
113 |                         fprintf(stderr, "'%s' line %i failed with %s\n", \
|                         ^~~~~~~
src/vulkan/overlay.cpp:220:9: note: in expansion of macro ‘VK_CHECK’
220 |         VK_CHECK(device_data->vtable.CreateFence(
|         ^~~~~~~~
src/vulkan/overlay.cpp: In function ‘void device_map_queues(device_data*, const VkDeviceCreateInfo*)’:
src/vulkan/overlay.cpp:113:33: error: ‘stderr’ was not declared in this scope
113 |                         fprintf(stderr, "'%s' line %i failed with %s\n", \
|                                 ^~~~~~
src/vulkan/overlay.cpp:279:25: note: in expansion of macro ‘VK_CHECK’
279 |                         VK_CHECK(data->set_device_loader_data(data->device, queue));
|                         ^~~~~~~~
src/vulkan/overlay.cpp:113:33: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
113 |                         fprintf(stderr, "'%s' line %i failed with %s\n", \
|                                 ^~~~~~
src/vulkan/overlay.cpp:279:25: note: in expansion of macro ‘VK_CHECK’
279 |                         VK_CHECK(data->set_device_loader_data(data->device, queue));
|                         ^~~~~~~~
src/vulkan/overlay.cpp:113:25: error: ‘fprintf’ was not declared in this scope
113 |                         fprintf(stderr, "'%s' line %i failed with %s\n", \
|                         ^~~~~~~
src/vulkan/overlay.cpp:279:25: note: in expansion of macro ‘VK_CHECK’
279 |                         VK_CHECK(data->set_device_loader_data(data->device, queue));

ok nevermind that, it seems that this change was merged to master already

as a workaround for now i’m using DXVK_FRAME_RATE for limitting fps, but will look probably more on libstrangle topic

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.