Skip to content

Deactivating freewheel mode issue when restoring the Graph after a client closed #1006

@farshield

Description

@farshield

Describe the bug

If a client closes during freewheel mode, upon deactivation of the freewheel mode, the Graph is being restored with non-existing client from JackServer::SetFreewheel, which calls fGraphManager->Restore(&fConnectionState).

Since the old client is non-existing, JackGraphManager now contains an invalid refnum, as far as I understand.

Environment

  • JACK Version: Which version of jack2 are you using? (e.g. the output of jackd --version or a git commit checksum)

Latest develop branch (1.9.22)

  • Operating System: What operating system or distribution in which version are you using? (e.g. Linux, macOS, Windows)

Linux (Fedora 41)

  • Installation: How did you install jack2? (e.g. package manager, from source)

Both from source and from the OS package manager

Steps To Reproduce

# 1. Start jack server
jackd -P 70 -dalsa -dhw:USB -r48000 -p256 -n3

# 2. Start another jack client (can be anything)
jack_iodelay

# 3. Enable freewheel mode (jack_set_freewheel)

# 4. Kill the client started at step 2

# 5. Disable freewheel mode

Expected vs. actual behavior

Actual behavior upon freewheel deactivation: these logs are getting spammed all the time from jackd server:

JackFreewheelDriver::ProcessReadAsync: ResumeRefNum error
JackAudioDriver::ProcessGraphAsyncMaster: ProcessReadSlaves error
JackAudioDriver::ProcessGraphAsyncMaster: Process error
JackLinuxFutex::Signal name = jack_sem.1000_default_jack_delay already deallocated!!

Expected behavior: No errors upon deactivation of freewheel mode.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions