[LAU] Segfault using zita-j2a

Jannis Achstetter jannis_achstetter at web.de
Thu Oct 25 15:49:23 UTC 2012


Am 25.10.2012 17:23, schrieb Robin Gareus:
> On 10/25/2012 04:54 PM, Jannis Achstetter wrote:
>> [...]
> Classic race condition. The jack_client is activated before the
> resampler is initialized.
> 
> zita-j2a.cc:200 creates the jack-client and calls jack_activate.
> process_callbacks can arrive starting now.
> 
> but not until zita-j2a.cc:211 calls J->start() the data-structures
> required to do the processing are initialized.
> 
> Easiest solution is probably to check if start() has been called in the
> process callback:
> 
> --- a/jackclient.cc
> +++ b/jackclient.cc
> @@ -301,6 +301,8 @@ int Jackclient::jack_process (int nframes)
>      jack_nframes_t  ft;
>      double          tj, err, d1, d2;
> 
> +    if (_state == INIT) return 0;
> +
>      // Buffer size change or other evil.
>      if (_state == TERM)

Sounds reasonable but still crashes with the same error. I'll try to
debug this further :)



More information about the Linux-audio-user mailing list