Skip to content

EVS Conditions: Parallel generation and application of error patterns might cause undeterministic behavior

As reported by @vaillancour, @janssontoftg, @norvell: There might be issues with the bit-exactness of EVS bitstreams after application of error patterns. The likely cause for this is the generation and application of the error pattern in parallel threads, with a shared filename for the error pattern. This occurs in evs.py, line 218ff:

        # apply bitstream processing and save unprocessed bitstream
        split_chan_bs_unprocessed = split_chan_bs
        split_chan_bs = apply_func_parallel(
            self.simulate_tx,
            zip(split_chan_files, split_chan_bs, repeat(logger)),
            None,
            "mt" if self.multiprocessing else None,
            show_progress=False,
        )
        voip = [scb[1] for scb in split_chan_bs]
        split_chan_bs = [scb[0] for scb in split_chan_bs]

Disabling multithreading seems to resolve the issue.