Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash with Pipewire-Jack 0.3.33, here's a workaround! #30

Open
praashie opened this issue Aug 21, 2021 · 10 comments
Open

Crash with Pipewire-Jack 0.3.33, here's a workaround! #30

praashie opened this issue Aug 21, 2021 · 10 comments

Comments

@praashie
Copy link
Contributor

Since upgrading from Pipewire ~0.3.31 to 0.3.33, WineASIO has started to crash immediately when trying to use it with Pipewire's Jack implementation instead of a native Jack server.

More information about the crash: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1495

Workaround for low-latency Wine applications

Use Pipewire for handling your sound cards, and run a Jack2 server with alsa backend and using pipewire as the device.

jackd -d alsa -d pipewire -p $PERIOD_SIZE -r $SAMPLE_RATE

Pipewire is not able to communicate with native Jack very well, so individual clients can't directly connect between native Jack and Pipewire. You can run an individual Wine application in the native Jack server and connect other Pipewire/PW-Jack clients to the endpoints of the Jack server.

In my case, I'm using FL Studio. I'm not satisfied with using FL Studio ASIO because Wine's own PulseAudio/ALSA drivers use hidden buffers to increase stability, with the penalty of unacceptable (~60 ms) extra latency for playing virtual instruments.

@ghost
Copy link

ghost commented Aug 27, 2021

you are a lifesaver.

@szszoke
Copy link

szszoke commented Nov 28, 2021

@praashie how did you make jackd work like that?

To me it fails with messages saying that jackd was unable to acquire the pipewire device.

WineASIO works when I stop pipewire and just use jackd but that is not feasible.

@tank-trax
Copy link

this does not work here

jackd -d alsa -d pipewire -p 2 -r 48000

[E][04694.333873] default      | [       control.c:   64 jackctl_server_create()] deprecated
[W][04694.334000] default      | [       control.c:   87 jackctl_server_create2()] not implemented 0x55af0cf66f50 0x55af0cf670c0 (nil)
[W][04694.334035] default      | [       control.c:  174 jackctl_server_get_parameters()] 0x55af0d713e80: not implemented
[W][04694.334062] default      | [       control.c:  162 jackctl_server_get_drivers_list()] 0x55af0d713e80: not implemented
[W][04694.334085] default      | [       control.c:  245 jackctl_driver_get_name()] 0x55af0d713ed0: not implemented
Unknown driver "alsa"
[W][04694.334110] default      | [       control.c:  114 jackctl_server_destroy()] 0x55af0d713e80: not implemented

@falkTX
Copy link
Member

falkTX commented Nov 28, 2021

those calls are from jackdbus, which is not supported under pipewire.

@falkTX
Copy link
Member

falkTX commented Nov 28, 2021

so likely the original poster has a jack2 build with jackd/classic mode on but disabled jackdbus.
you cannot have this under debian based distros

@szszoke
Copy link

szszoke commented Dec 4, 2021

@falkTX is that an option during compilation or a command line switch?

@falkTX
Copy link
Member

falkTX commented Dec 4, 2021

A build option. Debian has both jackd classic and jackdbus enabled on its builds.

@szszoke
Copy link

szszoke commented Dec 5, 2021

You are right. I had jack2-dbus installed on one of my machines and there it didn't work. I tested on another machine where jack2-dbus wasn't installed and there it worked.

The interesting thing is that the first machine is still not working after I uninstalled jack2-dbus

@rolesyuk
Copy link

rolesyuk commented Feb 5, 2022

Steps to reproduce the bug with OSS software (PortAudio) with the record example paex_record.exe (playback with paex_saw.exe works well):

On Windows machine:

On Linux machine:

  • unzip pa-test.zip && cd pa-test
  • WINEPREFIX=~/.wine-test wine64 regsvr32 wineasio.dll
  • WINEPREFIX=~/.wine-test wine paex_record.exe

Output:

=== Now recording!! Please speak into the microphone. ===
*** stack smashing detected ***: terminated
0108:err:seh:call_stack_handlers invalid frame 00007FF511B65710 (0000000000022000-0000000000220000)
0108:err:seh:NtRaiseException Exception frame is not in stack limits => unable to dispatch exception.

pa-test.zip

@tank-trax
Copy link

Not sure when the fix was made but WINEASIO works with Pipewire 0.3.51 using Wine-Staging 7.9

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants