[Bug 55206] New: COD MW Remastered (2016) crackling audio
https://bugs.winehq.org/show_bug.cgi?id=55206 Bug ID: 55206 Summary: COD MW Remastered (2016) crackling audio Product: Wine Version: 8.11 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winepulse.drv Assignee: wine-bugs(a)winehq.org Reporter: brandowlucas(a)gmail.com Distribution: --- Created attachment 74806 --> https://bugs.winehq.org/attachment.cgi?id=74806 this is the audio log file until i hit the crackling on game. when using pulseaudio the game sounds like this: https://www.youtube.com/watch?v=SmHY7uH1yzo when using pipewire, i don't even get audio at all: https://www.youtube.com/watch?v=71m5g4usSx0 i've tested this game in many distribution, different proton versions/wine versions and it seems a wine bug. i made this video test was on vanilla wine-8.11. I also attached the log files. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=55206 --- Comment #1 from brandow <brandowlucas(a)gmail.com> --- Created attachment 74807 --> https://bugs.winehq.org/attachment.cgi?id=74807 this is the audio log file when i hit the first on crackling on the game menu -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=55206 --- Comment #2 from brandow <brandowlucas(a)gmail.com> --- Created attachment 74808 --> https://bugs.winehq.org/attachment.cgi?id=74808 inxi -A output -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=55206 brandow <brandowlucas(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #74807|this is the audio log file |this is the audio log file description|when i hit the first on |when i hit the first minor |crackling on the game menu |crackling on the game menu -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=55206 --- Comment #3 from brandow <brandowlucas@gmail.com> --- Still reproducible on Wine 11.4 (staging). Using DXVK, as vanilla WineD3D causes a crash at startup (see mwr_debug_crash_clean_wine.log at the end of the report). Running the game with `chrt -r 1 wine` resolves ~99% of the audio crackling in the main menu. However: Upon entering the game map, audio completely disappears. When opening the pause menu (ESC), audio crackling is still present. Tested configurations: Clean prefix with only DXVK → https://gist.githubusercontent.com/BrandowLucas/4f291d874770850b61bef946f62f... DXVK + native XAudio overrides → https://gist.githubusercontent.com/BrandowLucas/1a53736bfe89611a34849f72732d... Logs were captured using: WINEDEBUG="+timestamp,+audio,+mmdevapi,+dsound,+xaudio2,+seh,+trace,+loaddll" chrt -r 1 wine h1_sp64_ship.exe > mwr_debug.log 2>&1 For native XAudio, I used: winetricks -q xact xact_x64 xaudio29 Additionally copied xaudio2_8.dll from a Windows system into system32 and set it to native override PipeWire tuning: Set quantum to 256 using: pw-metadata -n settings 0 clock.force-quantum 256 No improvement observed Current PipeWire quantum settings: clock.quantum = 256 clock.min-quantum = 256 clock.max-quantum = 256 clock.force-quantum = 0 Audio devices (aplay -l): card 0: HDMI (HD-Audio Generic) card 1: ALC257 Analog (HD-Audio Generic) System audio info (inxi -A): GPU audio: AMD Renoir/Cezanne HDMI/DP (snd_hda_intel) AMD Audio Coprocessor (no driver) AMD Ryzen HD Audio (snd_hda_intel) ALSA: kernel 6.19.7-1-cachyos PipeWire: 1.6.2 (active) mwr_debug_crash_clean_wine.log: https://gist.githubusercontent.com/BrandowLucas/f7a72b3c606f5a25576b7ef2e6dd... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=55206 brandow <brandowlucas@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED --- Comment #4 from brandow <brandowlucas@gmail.com> --- This is caused by an unstable host TSC, not winepulse.drv I retested this with current Wine 11.13-based git master and staging builds and found that the crackling, disappearing in-map audio, and random game-speed increase all have the same host timing cause. This is not a Wine audio bug. I forgot to mention in my previous comments that the game was also randomly speeding up after I started moving the character. That separate timing symptom is what led me to investigate the system clocksource and TSC. The kernel detects a large TSC synchronization failure during boot: TSC synchronization [CPU#0 -> CPU#2]: Measured 1325327848 cycles TSC warp between CPUs, turning off TSC clock. tsc: Marking TSC unstable due to check_tsc_sync_source failed clocksource: Switched to clocksource hpet A direct RDTSCP probe, correlated with `CLOCK_MONOTONIC_RAW` and repeated three times, measured CPU 0 approximately 1,325,327,xxx cycles (632.280 ms) behind CPUs 1-11. Moving a game thread onto or off CPU 0 therefore exposes a very large discontinuity to code reading the timestamp counter directly. This accounts for both the random simulation speed-up and the audio timing failure. The decisive A/B test was CPU affinity: 1. Running normally on CPUs 0-11 reproduces the crackling, loss of in-map audio, and random movement speed-up. 2. Running wine while excluding only CPU 0 fixes all three symptoms. The working launch command is: systemd-run --user --scope --quiet -p AllowedCPUs=1-11 \ env WINEPREFIX="$WINEPREFIX" wine h1_sp64_ship.exe `AllowedCPUs=1-11` is important because the cgroup restriction applies to every game thread. Changing PipeWire's quantum, using native XAudio DLLs, and disabling esync/fsync/ntsync did not fix the issue. `chrt -r 1` changed the symptoms but did not reliably fix them because it changed scheduling without preventing execution on CPU 0. The machine is a Lenovo IdeaPad 3 15ALC6 (82MF) with BIOS GLCN52WW dated 2022-12-09. Lenovo currently provides GLCN68WW, dated 2025-06-19. Updating the firmware and retesting should be the solution, although I have not done so because there are reports of this BIOS update breaking Linux boot. Forcing `tsc=reliable` would not be safe because the counters are demonstrably out of sync. sudo dmesg | grep -iE 'tsc|clocksource|hpet' [ 0.000000] tsc: Fast TSC calibration using PIT [ 0.000000] tsc: Detected 2096.109 MHz processor [ 0.004337] ACPI: HPET 0x00000000C82C1000 000038 (v01 LENOVO CB-01 00000001 PTEC 00000002) [ 0.004367] ACPI: Reserving HPET table memory at [mem 0xc82c1000-0xc82c1037] [ 0.004769] ACPI: HPET id: 0x43538210 base: 0xfed00000 [ 0.004816] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns [ 0.065895] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484873504 ns [ 0.071931] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x1e36d4e118c, max_idle_ns: 440795303585 ns [ 0.199934] TSC synchronization [CPU#0 -> CPU#2]: [ 0.199934] Measured 1325327848 cycles TSC warp between CPUs, turning off TSC clock. [ 0.199948] tsc: Marking TSC unstable due to check_tsc_sync_source failed [ 0.205203] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns [ 0.243272] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.243272] hpet0: 3 comparators, 32-bit 14.318180 MHz counter [ 0.244993] clocksource: Switched to clocksource hpet [ 0.251595] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff max_idle_ns: 2085701024 ns [ 8.626315] kvm_amd: TSC scaling supported Independent per-CPU timing probe: CPU 0 was approximately 1,325,327,xxx TSC cycles (632.280 ms) behind CPUs 1-11. The result was reproduced three times using direct RDTSCP reads correlated against CLOCK_MONOTONIC_RAW. Control: CPUs 0-11: crackling, in-map audio loss, and random game speed-up reproduce. CPUs 1-11: all three symptoms disappear without a Wine audio change. cat /sys/devices/system/clocksource/clocksource0/current_clocksource hpet cat /sys/devices/system/clocksource/clocksource0/available_clocksource hpet acpi_pm The active Linux clocksource is already hpet, with only hpet acpi_pm available. Wine’s NtQueryPerformanceCounter() uses Linux’s monotonic clock, so the CPU-affinity result suggests that some code in the game process is reading the TSC through another path, most likely directly with RDTSC. Since the failure follows a specific broken CPU timestamp counter and disappears with a host CPU restriction without a Wine change, this report should be closed INVALID. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=55206 --- Comment #5 from brandow <brandowlucas@gmail.com> --- Created attachment 81523 --> http://bugs.winehq.org/attachment.cgi?id=81523 probe src code Per-CPU RDTSCP timing probe, attached for reference and reproducibility in case someone with similar symptoms finds this report. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=55206 brandow <brandowlucas@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|COD MW Remastered (2016) |COD MW Remastered |crackling audio |(2016/2017): | |crackling/missing audio and | |random speed-up with an | |unsynchronized host TSC -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (2)
-
WineHQ Bugzilla -
WineHQ Bugzilla